НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Про семинары Бунича и программиста неясновидящего

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

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

[spoiler]Сейчас, сужу по нескольким знакомым, поиск активно перемещается в тематические блоги. Минус этого подхода в плавном уходе множества тематических площадок в даун (об этой тенденции ). Поэтому, самое интересное, поиск таковых спецов наиболее эффективно происходит, как и в доинтернетовскую эпоху -- через знакомых, и на различных реальных тусовках-семинарах-конференциях.

А помните семинары Бунича? Гугль выдает только одну ссылку :)
Единственное место, где в советское время московские программисты могли пообщаться, а работодатели активно приглашали к себе (я в 88-м так работу сменил). Кстати, крепкого здоровья Леониду! вот его ЖЖ.

Обобщу взгляд командиров программного производства на идеального программиста. Пойдем от обратного -- программиста неидеального, или, точнее, программиста, неясновидящего проект. У такого программиста может быть достаточно объемный опыт участия в относительно успешных проектах, неплохие навыки реализации техзадания по схеме "водопада". Собственно, любой более-менее сообразительный выпускник профильной вузовской специальности, знающий С++, за разумное время без проблем напишет кусок кода объемом 3-5, ну до 10 тысяч строк кода.

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

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

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

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

Впрочем, примерно такие мнения, пожелания и оценки высказывались и 25 лет назад. Ничего не меняется.
Сергей Бобровский
Методологии сегодня пока еще не серебряные))), но тенденция заметна. Например, сегодня массовые высокотехнологичные производства работают по шесть сигма (три дефекта на миллион единиц продукции), еще 5-7 лет назад такого не было!
Дмитрий Менщиков
вместо того, чтобы потратить достаточно много времени (дни, недели...) на проектирование.
А это утверждение ведь  вообще противоречит agile, который говорит - не надо тратить время на проектирование - все равно все поменяется. Лучше скорее сделайте прототип (и тесты)

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