Чтобы понять, каково это, быть программистом, выполните следующее упражнение (можно мысленно). Для этого вам понадобиться два участника (вы и еще кто-нибудь); часы, лучше всего с секундомером, который громко тикает; лист чистой бумаги и карандаш с ластиком (кто-то говорит, что нужна ручка, но я с этим категорически не согласен, ибо набранный программный код можно стереть). Если вы выполняете упражнение мысленно, то второго участника просто вообразите.
Итак, поехали. Один из участников будет заказчиком, другой исполнителем (программистом). У заказчика имеются часы и право голоса, у исполнителя – только бумага, резинка и карандаш. Заказчик засекает 10 минут, за которые исполнитель должен выполнить следующее задание: «Нужно нарисовать красивую девушку». Но через 30 секунд заказчик говорит:
- В руке у нее должен быть меч.
- Ну ок, - отвечает исполнитель, он успел нарисовать лишь контур девушки.
Проходит еще 30 секунд. Заказчик говорит:
- Меч должен быть двуручным.
Исполнитель послушно кивает, он уже нарисовал контур девушки, руки, волосы, приступил к рисованию меча.
- В другой руке у нее должен быть бластер, - внезапно заявляет заказчик, когда на таймере уже 1.30.
- Что, простите?
- Бластер, который пиу-пиу делает.
Пришлось немного подтереть рисунок ластиком, так как исполнитель уже нарисовал руку без бластера.
- Пусть она будет уставшей путешественницей, присевшей отдохнуть, - выдвигает новое пожелание заказчик, когда с момента старта рисования прошло ровно две минуты.
Исполнитель про себя чертыхается, так как ноги уже нарисованы, и они прямые: девушка то стоит. А еще надо прорисовать лицо, туфельки на ногах, меч (сейчас нарисован только контур) и мелкие детали. Пришлось ноги стереть и рисовать их так, как будто девушка сидит. А тут оказывается, что и все туловище надо перерисовывать. А заказчик продолжает комментировать:
- На меч она опирается, отдыхает, значит.
Еще через какое-то время:
- Пусть на ней будет развивающийся по ветру плащ!
На таймере уже три минуты. Исполнитель понимает, что если будет выполнять все дополнительные требования, то в срок не успеет и говорит:
- Для реализации данного функционала требуется дополнительное время. Придется перенести срок на час.
- Что? Как на час? Мы договаривались на 10 минут…
- У вас доп. требования…
- Какие еще доп. требования? Все в рамках ТЗ.
- В ТЗ ничего не было сказано про плащ.
- Ну ты сам подумай, может ли девушка быть красивой без плаща?
- Может!
- Ну ладно, уговорил, пусть она будет в купальнике.
- А лучше в доспехах, - принялся за свое заказчик, когда на часах было 4 минуты.
- Для доспехов требуется дополнительное время…
- А на униформу?
- Тоже.
Некоторое время исполнитель рисовал спокойно.
- Ладно, даю доп. время на униформу, плащ и купальник, - внезапно говорит Заказчик, когда на часах уже 7.00 а девушка почти закончена, - думаю, пяти минут хватит.
- Тут придется все переделывать, - возражает исполнитель, - пяти минут мало.
- Да что там приделывать, берешь ластик и стираешь лишнее. А потом рисуешь плащ, купальник и униформу.
- Плащ – пять минут, - говорит Исполнитель, на всякий случай добавив время на непредвиденные задержки, - купальник – тоже пять минут, униформа – пять минут. Плюс восстановление девушки после стирания ластиком. Итого двадцать минут.
- Нет, двадцать минут это много. Даю только десять.
- Тогда выбирайте: или плащ, или купальник или униформа.
- Нет, надо нарисовать все.
- За десять минут все нарисовать не получиться.
Так они спорили, пока на время не истекло. Заказчик видит, что рисунок не закончен. И говорит:
- Работа не выполнена, не будут платить.
Исполнитель:
- Работа не выполнена по вашей вине. Вы должны заплатить. Я время потратил.
Вот такие вот бывают неадекватные заказчики, норовящие кинуть исполнителя. Поэтому программистам должны пиво бесплатно давать за вредность.