Найти тему
PHP Боярин

Умывальников начальник и мочалок командир

Кем был бы программист в армии?

На минуту забудем о национальной специфике и представим, что имеем дело с армией, существующей "по уставу".

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

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

Мотивация рядового в действии
Мотивация рядового в действии

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

Комбинация "сержанты+рядовые" представляет собой среду исполнения программы: железо + язык программирования + фреймворк. Это идеально настроенный на исполнение механизм, имеющий ровно 0% стратегической инициативы.

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

В роли главнокомандующего выступает "обобщенный заказчик" - персона, которая за все платит. Это может быть, натурально, заказчик коммерческого продукта. Или нет. Так или иначе, это парень, который не вникает в тонкости, а требует конечного результата.

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

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

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

На долю же младших офицеров выпадает самое интересное.

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

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

А потом - не удивляться, когда выясняется, к каким последствиям это привело.

Такая работа, безусловно, накладывает отпечаток на образ мышления.

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

Также многим известно, что программисты думают как-то не так. И теперь вы знаете, почему.