Вы НЕ инженер-программист!
От перев.: Думаю, практически каждый разработчик читал произведение искусства под названием «Если бы программисты строили дома». В этом юмористическом рассказе проводится параллель между строительством и разработкой ПО. Неожиданно! Понятно, что в каждой шутке есть доля правды. И вот спустя годы я наткнулся на другое сравнение. Мне оно показалось более точным, поэтому я решил перевести его на русский и поделиться с сообществом.
Вы не инженер-программист. Вы не строите небоскрёбы. Вы не строите мосты.
Вы растите сады.
Вы садовник-программист.
Стараетесь ли вы запланировать ваши сады так детально, чтобы знать, где каждый листок будет расположен, прежде чем вы посадите одно семя? Делают ли люди предположения (или они обещают в вашей организации?) сколько точно цветов вырастет в одно время года? У вас есть бонус связанный с этим? То, что было бы вполне разумно планировать для небоскреба, кажется немного смешным, когда вы говорите о саде.
У вас, наверное, есть чёткое видение того, как будет выглядеть ваш сад на неделю вперёд. Вы даже возможно имеете грубую оценку того, что будет с ним через год. Но у вас нет понимания, где каждая ветка, листок, стебель и цветок будут через год и, если вы утверждаете обратное, вы всё равно только догадываетесь.
Если бы вы строили мост или небоскрёб и вы бы сказали мне до того как начать, что вы бы знали точно как он будет выглядеть когда будет закончен – я бы поверил вам. Если бы вы сказали мне, что вы бы знали с непостижимой степенью точности, сколько времени это займёт – я бы снова поверил вам. Так работают инженеры. Расскажите вы мне те же вещи о саде, и я скажу, что это бред. Расскажите вы мне, что собираетесь вырастить его быстрее, наняв больше садовников, и я буду смеяться до слёз.
Так почему так много садов забрасывают, но так много небоскрёбов возводят? С небольшими исключениями, техника строительства небоскрёбов похожа, независимо от того в Европе вы или в Сингапуре. Для садов это не работает. Каждый сад уникален, т.к. окружающая среда также различается. Даже сады, которые находятся в зоне видимости друг друга, могут иметь совершенно различную почву. Вот почему за самую низкую цену, вероятно, можно построить такой же мост как за самую высокую цену, но ваша компания не сможет вырастить садов масштаба Google.
Помните то время, когда кто-то в вашей компании безуспешно использовал гибкую методологию (agile) садоводства, и затем ходил, вокруг приговаривая, что это бред и это не работает? В лучшем случае это поможет вырастить ваш сад, но этого будет недостаточно, чтобы сохранить его. Ваш сад, возможно, умер до него, как жертва климата вашей организации. Вы пытались вырастить тропический лес в пустыне? Вы просто не можете сажать те же саженцы, что и Facebook, Flickr и Twitter и ожидать, что они укоренятся, независимо от качества ваших садовников или климата организации.
В отличие от небоскрёба в вашем саду будут расти сорняки. Он никогда не будет “закончен”. То, что вы прекратили тратить деньги на него, ещё не означает, что он закончен. Если вы остановили борьбу с сорняками, они, в конечном счёте, победят, и вскоре посадка заново будет выглядеть более простым решением, чем прополка. Окружающая среда вокруг вашего сада также всегда будет меняться, и запущенный сад станет все труднее и труднее поддерживать.
В большинстве стран, инженерам нужна лицензия для строительства моста. Для садовников такой контроль качества, подтверждённый правительством, отсутствует. К сожалению, качество ваших садовников имеет влияние на успех ваших садов больше, чем любой другой фактор – вам лучше быть мастером в отделении зерен от плевел. Только опытный садовник действительно узнает другого хорошего садовника, когда они увидят друг друга. Те, кто просто управляли проектами по садоводству, будут без понятия, что они должны искать (хотя они не будут знать и этого тоже). И если вы не садовник, но вам необходимо набирать хороших садовников, тогда быстро найдите опытного садовника, которому вы доверите осмотр своих кандидатов. Вы не можете изучить садоводство в классе: помните, что вам нужно сосредоточиться на садах, которые ваши кандидаты выращивали в прошлом, а не на том, как много теории садоводства они помнят со школы (это почти всегда не будет иметь значения для климата, в котором вы работаете).
В своё время инженерная метафора была лучом света, и, возможно, даже использовалась для точности, но теперь она только помогает нетехническим людям делать нереалистичные предположения о том, как строится программное обеспечение.
Я садовник-программист.
Как и вы.