Почти пять лет назад Питер Велч написал свое эпическое и грустное, но правдивое эссе Программирование - отстой. Мне очень нравится его сочинение, и я нахожу статью очень интересной и в основном правдивой, но в ней также есть то, что я считаю довольно распространенным заблуждением:

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

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

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

Но никого это не волнует.

Даже если теоретически это красиво.

Программа должна решать проблему, если возможно, реальную, точно так же, как книги предназначены для чтения, дороги предназначены для движения или настольные игры предназначены для игр.

И все это должно происходить в жестокой, неприглядной и непоэтичной реальности.

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

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

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

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

Но для меня красота действительно есть.

Настоящая задача состоит в том, чтобы создать что-то, что способно пережить этот хаос, несмотря ни на что, и что в то же время служит определенной цели и нравится людям, использующим это.

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

Хаос - не наш враг, это наш работодатель (или наш клиент!), Который нам неплохо платит, в основном потому, что справиться с ним не для всех.

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

Тип проблемы, для решения которой вы нанимаете инженера.