Muy interesante la explicación a la pregunta How do I explain to non-programmers how complex, time-consuming, and error-prone software development is? que se ha planteado en Quora.
La respuesta dice:
Ask them to describe the steps needed to make a cup of tea, they will say something like:
- boil water
- put tea in a pot
- when the water is boiled pour it into the pot
- wait 5 mins
- pour the tea into cups
- add milk
Now the fun begins. You need to start asking these kinds of questions:
- where is the water coming from
- where is the kettle
- how do you get the water into the kettle
- how do you know how much water to put into the kettle
- what if there is no water/kettle/electricity?
- what if your fill sensor fails?
- what if your boiling sensor fails
Put tea in pot?
- where’s the pot, what if there isn’t one? should we have thought of that before boiling the water?
- where is the tea, which kind of tea? should we have asked first, perhaps we shouldn’t have started this if we don’t have the right tea?
- similar questions about filling and sensors
Pouring boiling water?
- are you sure it’s boiling? how can you make sure that the machine doing the pouring got the right ‘done’ signal from the kettle?
- How do you make sure that the machine pourer knows where the pot is?
- What if the pot tips over during pouring?
And so on – you can go on for hours. They will get bored and say “yes but this level of detail is silly”, you can sagely smile and say “exactly”.
ps. after all that tell them the customer actually wanted coffee to go with an extra shot and not a Japanese tea ceremony – surely you should have known that, wasn’t it obvious from the requirements?