this post was submitted on 12 Jun 2024
39 points (95.3% liked)

Programming

17436 readers
275 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
39
Lost in translation (lemmy.world)
submitted 5 months ago* (last edited 5 months ago) by [email protected] to c/[email protected]
 

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.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 19 points 5 months ago* (last edited 5 months ago) (3 children)

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

[–] [email protected] 7 points 5 months ago (1 children)

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.

[–] [email protected] 2 points 5 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...

[–] [email protected] 2 points 5 months ago

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

[–] [email protected] 1 points 5 months ago

This helps with writing unit tests as well.