Just had some requirements through for a query that a customer has specified.

ā€œSet the value to 1 if the Outcome is not Complete or Cancelled or NULLā€

This could be variously interpreted as:

ā€œif the Outcome is NOT Complete and NOT Cancelled and NOT NULLā€

Or ā€œif the Outcome is NOT Complete, and NOT Cancelled, or IS NULLā€

Or perhaps even ā€œif the Outcome is NOT ā€˜Complete or Cancelledā€™ or IS NULLā€

Obviously Iā€™ll go back to them for clarity, but itā€™s a wonder why so often ā€œbugsā€ arise based on interpretation of specifications.

  • tiramichu@lemm.ee
    link
    fedilink
    arrow-up
    20
    Ā·
    edit-2
    6 months ago

    Technical requirements are often ambiguous when written as free text, the way someone would speak them, because as you have discovered the free text fails to capture where the linguistic stress would be that disambiguates in speech.

    Instead, I suggest using a format that is more suited to text.

    I would recommend a table. Email the customer back with your current interpretation of the requirements, with a column for outcome and a column for value. Ask them to check and sign off on the table, or to correct the table where it is wrong.

    Example:

    Outcome Value
    NULL x
    Complete x
    Cancelled x
    (Other) x

    There are edge-cases with if outcome can be "Complete or Cncelled

    • Quicky@lemmy.worldOP
      link
      fedilink
      arrow-up
      7
      Ā·
      6 months ago

      Cheers yeah, that is standard usually. I was just having a whinge rather than asking for a solution. In this case the customer was trying to preempt having to complete a change request form (similar to what youā€™ve described) and get the relevant sign off etc, and had emailed over a ā€œminor alterationā€ to an existing request, for which they should know better at this stage of the project.

      • tiramichu@lemm.ee
        link
        fedilink
        arrow-up
        2
        Ā·
        6 months ago

        Haha yeah, fair enough. Applogies for turning your deserved whinge into a serious question.

        Wrangling annoying customers is always the most annoying part of the job isnā€™t it. How nice it would be to spend more time programmingā€¦

    • owenfromcanada@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      Ā·
      6 months ago

      Even using bullet points can help a lot in these situations (I use them quite often in emails with non-technical recipients).

  • best_username_ever@sh.itjust.works
    link
    fedilink
    arrow-up
    11
    Ā·
    6 months ago

    Donā€™t forget to ask what is the other possible value(s) if the scenario doesnā€™t happen, because that is something forgotten most of the time.

  • Redacted@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    Ā·
    6 months ago

    Completely agree, requirements are key and often badly defined due to the customersā€™ lack of knowledge of the intricacies of the system. You are correct to ask for clarity or it could come back to bite you later on.

    Iā€™ve just had a spec through from a BA which consists entirely of screenshots of an existing system with no technical definitition of any of the requested fields so relate to this right now.

  • LaggyKar@programming.dev
    link
    fedilink
    arrow-up
    2
    Ā·
    edit-2
    6 months ago

    Whatā€™s the difference between case 2 and 3? Those look the same to me. The three cases look like:

    • Ā¬complete āˆ§ Ā¬cancelled āˆ§ Ā¬null
    • (Ā¬complete āˆ§ Ā¬cancelled) āˆØ null
    • Ā¬(complete āˆØ cancelled) āˆØ null