Как объяснить непрограммистам, насколько скучной может быть разработка ПО

Как объяснить своим друзьям-непрограммистам насколько разработка программного обеспечения это сложно, времязатратно и подверженное ошибкам дело.

Итак, первый шаг.
Попросим их описать шаги, которые необходимы для того чтобы выпить чашку чая. В ответ мы получим что-то наподобие следующего списка шагов:
1) поставить кипятиться воду;
2) насыпать чай в заварочный чайник;
3) когда вода закипит залить заварку;
4) подождать 5 минут;
5) налеить заварку и кипяток в чашки;
6) если хочется добавить молоко;
7) все – можно пить.

Второй шаг.
Но самое интересное только начинается. Давайте зададим им некоторые уточняющие вопросы:

1) Вскипятить воду просто?
– откуда и как нам взять воду
– а где мы возьмем чайник и какой это чайник
– как мы нальем воды в чайник
– а откуда мы знаем, сколько воды нужно минимально и когда нужно остановиться, а сколько точно нужно налить в чайник
– что делать, если нет воды / чайника / электричества(газа)
– что делать, если не посмотреть сколько воды в чайнике
– что делать, если у электрочайника сломан датчик выключения после закипания

2) Положить заварку в заварочный чайник
– где заварочный чайник;
– а что делать если он там не один;
– мы должны подумать о заварке, до того как кипятить воду или после, или мысли о заварке вообще не влияют ни на что
– где взять чай для заварки и какой вид чая;
– и вообще, может быть мы забыли спросить разрешения – можно ли нам брать чай для заварки, может быть он чужой и мы не имеем права его трогать;
– такие же вопросы как и по кипячению – если не посмотреть уровень кипятка в заварочном чайнике …;

3) Дошли до наливания кипятка
– а вы уверены, что это кипяток, а в температуре, может это “холодный кипяток”;
– а как убедиться, что наливаем кипяток после сигнала “готово” от чайника;
– а как убедиться, что тот кто отвечает за наливание кипятка знает, где заварочный чайник;
– а что делать если чайник опрокинулся

И так далее – можно продолжать так в течение нескольких часов. Непрограммисты будут скучать и могут даже сказать “да, но такой уровень детализации – это же просто глупо”.
Вы можете глубокомысленно улыбнуться и сказать “ну да … конечно”.

Ну и в конце концов (обычная ситуация, что и говорить), можно сказать что уже в конце оказазлос, что клиент на самом деле хотел кофе, а не японской чайной церемонии
Ну конечно же, вы должны были это знать, а что, разве это не было очевидно из ТЗ?

PS. Это мой достаточно вольный перевод. Источник тут: How do I explain to non-programmers how complex, time-consuming, and error-prone software development is?

Leave a Reply

Your email address will not be published. Required fields are marked *