Книжная башня

В начале своей профессиональной карьеры я прошел однодневный курс «Требования к программному обеспечению» в Microsoft. Кульминацией тренинга стало творческое упражнение по созданию конструкции для хранения книг («используя только свое воображение и предметы на вашем столе»). Каждому столу было поручено изготовить одну башню для хранения книг для представления на общеклассном конкурсе в конце дня.

Моя находчивая команда использовала наши таблички с именами, несколько папок, распечатки учебных материалов и немного скотча, чтобы создать переплетенную сотовую структуру, способную удержать взрослого мужчину. Это было второе по высоте приспособление в классе. Единственным другим запоминающимся представлением был очень высокий, шаткий кусок дерьма, который эффектно рухнул, как только инструктор положил на него первую книгу.

Угадайте, к чему я клоню.

Ха-ха! В требованиях сказано построить *самую высокую* башню! Там ничего не говорилось о том, сколько времени нужно стоять, или как красиво это выглядело, или сколько времени вам понадобилось, чтобы сделать. Команда Shit-Tower побеждает! Второго места нет! Все остальные проигрывают!

Инструктор изо всех сил старалась подчеркнуть, что была только одна команда-победительница, а все остальные проиграли. Она даже как-то грубо об этом говорила. Думаю, в мире корпоративных контрактов на программное обеспечение это действительно имеет смысл.

Как разработчику логично инвестировать в архитектуру, когда вы сами управляете системой, и приятно делать что-то красивое, если вы используете продукт самостоятельно. Когда спецификации функциональных требований и специальные группы обеспечения качества становятся частью процесса, слишком часто приходится просто компилировать код и обналичивать чек. Черт возьми, отдел продаж даже может предложить привлекательный контракт на поддержку вашего минимального, какофонического кода.

Я уже понял, что разработка программного обеспечения — это не информатика; тогда я понял, что индустрия программного обеспечения не является разработка программного обеспечения.