LINUX.ORG.RU
ФорумTalks

Какие бывают породы программистов


2

1

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

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

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

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

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

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

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


Конструктивист.

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

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

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

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


Художник.

На самом деле, искусства в написнии кода не меньше, чем науки, не зря же университеты часто сводят оба направления в одной структуре и называют ее как-нибудь вроде «факультета свободных искусств и наук».

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

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

С другой стороны, если программист не культивирует в себе художника результаты его деятельности зачастую отрываются от реальности, теряют «изюминку». Стоит отнять у художника все его отличительные качества, и в результате получится мина замедленного действия, которая обязательно взорвется.


Инженер.

Эти ребята имеют обыкновение скупать все возможные средства сторонних производителей, писать десятки COM-объектов и сводить их воедино, так что они прекрасно работают в версии 1.0, присущая им тяга к усложнению проявляется лишь тогда, когда речь заходит о версии 1.1.

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


Ученый.

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

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

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


Лихач.

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


Волшебник.

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

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

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


Минималист.

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

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

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


Аналогист.

Это программист, который не слишком силен в абстракциях, но прекрасно справляется с аналогиями. Во время проектных совещаний аналогисты постоянно выдумывающие все новые и новые аналогии, способны свести с ума любого.

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

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


Трюкач.

Трюкачи слишком увлекаются разными технологическими трюками. Они постоянно осваивают разные новинки, но результат от этого не улучшается. Трюкачи, при всех их познаниях в технологии, часто не могут усвоить конечное назначение программы.

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


Разгильдяй.

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

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

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


Тормоз.

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

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

Помогите тормозу регулярно добиваться небольших успехов, и тогда все наладится.


Любитель.

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

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

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


Профан.

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


Эклектик.

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

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


Ковбои.

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

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

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


А кто вы? :D

★★★★★

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

P.S. Не читал. И не хочу.

Stahl ★★☆ ()
Ответ на: комментарий от umren

Не читал - не пишы :P

пишы

Написал - не пиши. Никогда. Даже не копипасть. Ничего.

Stahl ★★☆ ()

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

ziemin ★★ ()

Прочитал. Классификация сначала была хорошая, но под конец скатилась на уровень «Программист хороший, программист средний, программист плохой».

А кто вы? :D

Конструктивист.

zorg ★★ ()

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

another ★★★★★ ()
Ответ на: комментарий от another

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

umren ★★★★★ ()

Маладца автор! Пусть теперь накатает такую же классификацию про уборщиц, дворников и сантехников - это так же интересует человечество, как и погромисты.

ptarh ★★★★★ ()

А кто вы? :D

Безумный учёный Хоооооооооооин Кёма!

vurdalak ★★★★★ ()

Спасибо. Отметил для себя, что книга Рейнвотера - унылая графомания.

Nebuchadnezzar ★★★★ ()
Ответ на: комментарий от Nebuchadnezzar

развлекательная литература, с юморком

umren ★★★★★ ()
Ответ на: комментарий от umren

Выглядит и правда не фонтан. Просто выровнено не по ширине. Но зато читать проще.

ziemin ★★ ()

А кто вы?

Описание конструктивиста очень хорошо подходит.

i-rinat ★★★★★ ()
Ответ на: комментарий от vurdalak

Без смеха не канонично. Эль псай конгуру :)

di ()

много букв, ниасилил.

Ygor ★★★★★ ()

прочитал каменты. судя по ним сам высер осиливать не стоит. кг/ам

der_looser ★★ ()

ударим боянами по хабрадрочерству и разгильдяйству

Можно выделить четыре типа системных администраторов:

1. Технический бандит. Обычно в прошлом системный программист, вынужденный заниматься системным администрированием. Пишет скрипты на смеси языков интерпретатора Bourne shell, sed, C, awk, perl и APL.

2. Администратор-фашист. Обычно это законченный тунеядец (реже - бывшая ведьма-секретарша), вынужденный заниматься системным администрированием.

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

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

Как определить, к какому типу принадлежит ваш системный администратор?

Ситуация 1. Нехватка дискового пространства.

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

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

Маньяк:

	# cd /home
	# rm -rf `du -s * | sort -rn | head -1 | awk '{print($2)}'`

Идиот:

	# cd /home
	# cat `du -s * | sort -rn | head -1 | awk '{printf "%s/*\n", $2)}'` | compress

Ситуация 2. Избыточная загрузка процессора

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

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

Маньяк:

	# kill -9 `ps  -augxww | sort -rn +8 -9 | head -1 | awk '{print $2}'`

Идиот:

	# compress -f `ps -augxww | sort -rn +8 -9 | head -1 | awk '{print $2}'`

Ситуация 3. Регистрация новых пользователей

Технический бандит. Пишет скрипт на языке Perl, создающий домашний каталог пользователя, определяющий непонятное окружение и помещающий записи в файлы /etc/passwd, /etc/shadow и /etc/group. Устанавливает на скрипт бит SUID и обязывает секретаршу обеспечить регистрацию новых пользователей. Поскольку обычно секретарша так и не может разобраться в разнице между `Enter' и `Return', ни один новый пользователь не зарегистрирован.

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

Маньяк. «Если ты настолько глуп, что не можешь взломать машину и самостоятельно зарегистрироваться, тебе нечего делать в моей системе. В этом ящике и так слишком много придурков».

Идиот:

	# cd /home; mkdir "Bob's  home  directory"
	# echo  "Bob Simon:gandalf:0:0::/dev/tty:compress -f" >/etc/passwd

Ситуация 4. Авария загрузочного диска

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

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

Маньяк. Извлекает диск. С помощью кузнечного молота пытается подогнать отдельные пластины. Звонит производителю. Во время установки нового диска и операционной системы наносит оскорбления присланному инженеру.

Идиот. Не замечает ничего необычного.

Ситуация 5. Слабая производительность сети

Технический бандит. Пишет скрипт для мониторинга сети, переписывает программное обеспечение, чем повышает производительность на 2%. Пожимает плечами, говорит: «Я сделал все, что мог», и отправляется в поход в горы.

Администратор-фашист. Помещает правила работы в сети в сообщение дня motd. Звонит в Беркли и в AT&T, приставая к ним, как установить сетевые квоты. Пытается уволить поклонников игры в xtrek.

Маньяк. Каждые два часа размыкает кабель Ethernet и ждет тайм-аута на сетевых соединениях.

Идиот:

	# compress -f /dev/enO

Ситуация 6. «Глупые» вопросы пользователей

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

Администратор-фашист. Блокирует вход пользователя в систему, пока тот не представит веские доказательства своей квалификации.

Маньяк:

	# cat >> ~luser/.cshrc
	alias vi ' rm \!* ; unalias vi ; grep -v BoZo ~/.cshrc >~/.z ;
	mv -f ~/.z ~/.cshrc'
	^D

Идиот. Отвечает на все вопросы в меру своего понимания. Приглашает пользователя в группу администрирования системы.

Ситуация 7. Установка новой версии операционной системы

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

Администратор-фашист. В первую очередь изучает законодательные акты против производителя, поставляющего программное обеспечение с ошибками.

Маньяк:

	# uptime
	1:33pm up 19 days, 22:49, 167 users, load average: 6.49
	# wall
	Итак, настало время установки новой версии. Займёт
	несколько часов, и если нам повезёт - управимся к 5-00.
	Мы работаем для Вас!
	^D

Идиот:

	# dd if=/dev/rmt8 of=/vmunix

Ситуация 8. Пользователям необходима электронная телефонная книга

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

Администратор-фашист. Устанавливает Oracle. Отчаявшиеся пользователи возвращаются к использованию записных книжек.

Маньяк. Предлагает пользователям хранить данные в едином сплошном файле и применять grep для поиска телефонных номеров.

Идиот:

	# dd ibs=80 if=/dev/rdisk001s7 | grep "Fred"
heilkitty ★★ ()
Ответ на: комментарий от Harald

Да. Теперь полный иммунитет к погромистам. Можешь завидовать.

ptarh ★★★★★ ()

Классификация должна быть или точной, или лаконичной. Данная не удовлетворяет ни одному из условий.

Sadler ★★★ ()
Ответ на: комментарий от ptarh

а вдруг ты латентный программист теперь, кто знает?

Harald ★★★★★ ()

Программисты бывают говеные, хреновые и мертвые.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от ptarh

не стесняйся, тут все программисты в той или иной мере, скрывать свою программистскую сущность вредно для психики :)

Harald ★★★★★ ()

Рыжий, программист который рыжий.

Tark ★★ ()

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

E ★★★ ()

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

Sociopsih ★☆ ()
Ответ на: комментарий от E

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

umren ★★★★★ ()
Ответ на: комментарий от Sociopsih

Считаю, что это необходимо принудительно лечить.

и это говорит

Sociopsih

сам лечишься?

umren ★★★★★ ()
Ответ на: комментарий от umren

Ну конечно. Вот меня уже вылечили и я несу благо принудительной шоковой терапии в массы. )

Sociopsih ★☆ ()

Трюкач и Профан подходит для описания всех рубистов.

Siado ★★★★★ ()

Не осилил.

Программисты бывают

1. Программули (95% студиозов-хелловордистов с ЛОРа)

2. Программоиды (пишут в быдлоконторах на Це-пи-пи и Кьью-Те)

3. Программозавры (>= 4 килобаксов «чистыми» в месяц, enterpriZe)

Вот так лаконично и понятно.

Bioreactor ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.