Saturday, November 22, 2008

Породы программистов(часть 2).

В сообщении Породы программистов(часть 1) были перечислены основные породы программистов, здесь же будут перечислены редкие.

Волшебник

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

Минималист

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

Аналогист

Ну ладно, ладно - слово "аналогист" я взял с потолка. Только не подумайте, что это медсестра, которая делает наркоз перед операцией. Нет - это программист, который не слишком силен в абстракции, но прекрасно справляется с аналогиями. Во время проектных совещаний аналогисты, постоянно выдумывающие все новые и новые аналогии, способны свести с ума любого. Но при этом нельзя не признать, что, как правило, они очень быстро схватывают суть задачи и в результате создают удобный, в том числе и для сопровождения, код. У некоторых аналогистов есть любимые аналогии, которые они наровят применить ко всем без исключения проблемам разработки программных продуктов. Они воображают компоненты маховиками, а успешно справившись со своей задачей, хвалятся тем, что их код "воспламеняется во всех цилиндрах". Их аналогии всегда привязаны к осязаемым объектам, поскольку, как я уже говорил, с абстрагированием дела у них обстоят неважно. Ну, в общем, вы меня поняли. Посадите аналогиста вместе с архитектором, и если они друг друга не прикончат, скорее всего, у них получится превосходный продукт. Правда, поскольку аналогисты не дружат с абстракцией, создавать объекты с четкими межуровневыми интерфейсами у них получается не всегда. Дело в том, что возможность создания в достаточной мере абстракного интерфейса объекта - это одно из величайших преимуществ объектно-ориентированного программирования, и поэтому конкретное мышление иногда мешает успешно справляться с поставленными задачами.

Трюкач

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

Разгильдяй

Что сказать о разгильдяях? Некторые люди небрежны, и это проявляется в коде, который они создают.Они не обращают внимания на такие мелочи, как правильное написание имен переменных и правила венгерской нотации. Зачастую качественно выполнять свои обязанности им мешают проблемы личного плана. Тому, как пишется эффективный код, их нужно учить. Они любят начать с одного стиля, а через процедуру - другую перейти к новому. Читать их код очень утомительно - иногда поздними ночами его приходится переписывать, поскольку иначе есть риск не успеть к сроку сдачи проекта. Если вы не справились с задачей по их вине, прошу вас: отнеситесь к ним снисходительно. В конце концов, они просто отъявленные разгильдяи, котрых лучше всего пересадить в отдел бета-тестирования. Хотя нет - так вы просто заморозите проблему, в итоге она все равно может может проявиться. Если разгильдяй действительно любит писать код, при условии, что вы уделяете достаточно внимания, он имеет шансы реабелитироваться. Всех, кому это не удается, нужно просто пнуть под зад или познакомить с консультантом по трудоустройству.

Тормоз

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

Любитель

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

Профан

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

Эклектик

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

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

Благодарности автору книги "Herding Cats. A primer of programmers who lead programmers" J. Hank Rainwater'у за хороший материал и отдельное спасибо моей супруге Ирине за помощь, в переносе материала.

2 comments:

  1. После своих постов обнаружил, что до меня(кто бы сомневался) уже был выложен этот материал:

    http://seregaborzov.wordpress.com/2008/01/13/porody-koderov-1/

    http://seregaborzov.wordpress.com/2008/01/14/porody-koderov-2/

    Очередной раз, вывод: сначала гугл.

    ReplyDelete
  2. >Ну и к какой себя относишь? Коллег?

    >я волшебник-архимаг высокого уровня, а коллеги хоббиты - чудят и пишут хранимые процедуры.

    ReplyDelete