22 May 2011

Вопрос: Так что же? Мы не инженеры?

Project management
Translation
Original author: Geoff Moes
Недавняя статья Вы НЕ инженер-программист! успела порядком нашуметь, как в англоязычном так и в русскоязычном Интернете. Кем только программистов не называли: и садовниками, и учеными, и водителями и фермерами. Давайте обсудим все эти метафоры и то, верны ли они все вообще? Но, это под катом…


Думая метафорически о разработке программного обеспечения


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

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

Множество метафор, описывающих разработку ПО, смутит кого угодно. Дэвид Грайс утверждает, что написание ПО — это наука (Gries, 1981). Дональд Кнут считает это искусством (Knuth, 998). Уотте Хамфри говорит, что это процесс (Humphrey, 1989). Ф. Дж. Плоджер и Кент Бек утверждают, что разработка ПО похожа на управление автомобилем, однако приходят к почти противоположным выводам (Plauger, 1993, Beck, 2000). Алистер Кокберн сравнивает разработку ПО с игрой (Cockburn, 2002), Эрик Реймонд — с базаром (Raymond, 2000), Энди Хант (Andy Hunt) и Дэйв Томас (Dave Thomas) — с работой садовника, Пол Хекель — со съемкой фильма «Белоснежка и семь гномов» (Heckel, 1994). Фред Брукс упоминает фермерство, охоту на оборотней и динозавров, завязших в смоляной яме (Brooks, 1995). Какие метафоры самые лучшие?


В дополнение ко всему, Крис Ейтсон в своем посте под названием «Вы НЕ инженер-программист!», проводит аналогию с садоводством, делая также следующие заявление:
Вы просто не можете сажать те же саженцы, что и Facebook, Flickr и Twitter и ожидать, что они укоренятся, независимо от качества ваших садовников или климата организации.

Идея этой метафоры в том, что каждая компания – это как отдельная экосистема, со своим климатом и своей почвой, но, насколько применима эта метафора для инженеров-строителей; выходит так, что вы не можете успешно построить дамбу или плотину или мост или шоссе, потому что у каждого этого сооружения своя «экосистема»? Точно так же как и в химический инженерии, для следующих продуктов могут быть свои «экосистемы»: для производства пенициллина при помощи ферментации, производства серной кислоты, переработки нефти или извлечения алюминия из бокситов по средствам электролиза? Похоже, что вы можете придумать множество различных метафор, которые подойдут подо что угодно. Признаюсь честно, я не любитель садоводческих и сельскохозяйственных метафор.

Еще одна метафора появилась в недавнем посте Чипа Камдена «Почему программисты должны изучать искусство программирования»
Обсуждение теории вычислений, для среднестатистического программиста, сидящего в траншее, это все равно, что обсуждать химические свойства селитры в то время, как идет перестрелка: все может быть очень правильно и толково, но не относится непосредственно к проблеме, стоящей перед ним.

Я не хочу быть поучающим или особо остроумным, но мне кажется особо ироничным то, что для своей метафоры Чип выбрал именно селитру, которая входит в состав черного пороха, устаревшей формулы пороха, которая была заменена бездымным порохом. В конце 1800-х годов, понимание проблемы черного пороха, которая основана на химических свойствах селитры, в некоторых случаях решало исход боя. Черный порох образует густой белый дым, и в некоторых боях, имея бездымный порох, вы могли оставаться незамеченным, но используя черный порох, вы создавали большой заметный дымовой сигнал, который выдавал вашу позицию. Новая технология предоставляла преимущества, позволяющие сохранить вам жизнь. А дым от черного пороха создавал еще одну проблему, так как ведя огонь продолжительное время, накапливалось огромное количество дыма, через который стрелок уже не мог видеть цель. Этому явлению было дано имя «туман войны».



Я не знаю, насколько будет уместной эта химическая метафора, но все же прослеживаются интересные параллели. На заре становления химической промышленности для добычи серной кислоты использовались большие промышленные свинцовые камеры, которые были изобретены в середине 18-го века. Этот процес был не очень хорошо изучен и был неэффективным в том, что требовал дорогостоящих нитратов, привозимых из Чили, которые за время перевозки частично окислялись и испарялись. Только через 100 лет ученые нашли способ перерабатывать нитраты для увеличения эффективности производства. Только тогда, в конце 19-го века, химическая технология как дисциплина, была надежно закреплена в программах колледжей и была создана отдельная ассоциация.

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

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

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



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

Вопрос здесь в том, можем ли мы создать дисциплину, изучающую разработку программного обеспечения, и не уступающую по эффективности другим дисциплинам? Если использовать метафору химического производства, то где мы находимся сейчас на пути понимания самой науки и ее внедрения в процесс? Исходя из такого сравнения, возможно, мы находимся где-то в начале или в конце 19 века, но я очень сомневаюсь, что шкала времени тут имеет линейный характер и скорее всего эта шкала развития будет больше похожа на экспоненту. А возможно, разработка программного обеспечения – это отдельная сущность, и наши метафоры сдерживают наше мышление и препятствуют объективно взглянуть на реальность?

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

Ответ: Мы – Разработчики!



Dmitry_Zhariy says:
Прочитайте этот текст на английском!
Попробуйте прочитать текст этой статьи на английском языке ради улучшения ваших навыков и добра.
Следующая ссылка ведет на параллельный (билингвистический; смешанный, английский и русский) вариант этой статьи. Читайте текст на английском и пользуйтесь русским переводом снизу, если вдруг вы потеряете смысл англоязычного текста.

[ EN/RU ] Q:Are we not engineers?
Tags:программированиефилософияметафорыдзенсадоводствопрограммистыпорохсерная кислота
Hubs: Project management
+15
1.5k 28
Comments 20
Popular right now