2021-05-12 10:45:04
Взгляд на типы программистов, работающих в команде
Попалась любопытная статья польского архитектора софта по имени
Łukasz Bownik, посвящённая разбору причин неудач в проектах по созданию программного обеспечения профессиональными командами разработчиков.
Статья довольно длинная, и не все изложенные в ней мысли выглядят бесспорными. Тем не менее ряд высказанных автором идей интересны, как минимум в качестве предмета для дискуссии.
Ни для кого не секрет, что многие проекты по разработке программного обеспечения (ПО) оказываются провальными: срываются сроки, не реализуется весь запланированный функционал, расходы превышают установленные лимиты. Чаще всего в причинах этих неудач винят менеджеров проектов (
Project Managers).
Автор статьи акцентирует внимание на других виновниках – программистах. Под программистами он понимает довольно широкий круг технических специалистов, участвующих в разработке ПО (системные аналитики, архитекторы, тимлиды и др.)
Обычно программистов считают
умными. Но так ли это на самом деле? Автор полагает, что это утверждение уже не соответствует действительности: писать код нынче не сложнее, чем кулинарные рецепты, с этим успешно может справиться 12-летний подросток.
Основной задачей программиста автор видит не просто написание кода (
coding), а поиск комплексного решения конкретной проблемы клиента (
solving customer's problems), не ограничиваясь при этом чисто техническими аспектами.
Мало на рынке таких программистов, которые способны не только писать код, но и вникать в подробности предметной области, осуществлять эффективные коммуникации с клиентом, понимать его нужды, совместно искать пути решения его проблем (не только технических, но и, например, организационных).
В статье приводится любопытная классификация программистов по шкале «выгода для себя/выгода для команды». Выделены 6 типов программистов: 4 основных и 2 дополнительных.
Умные программисты (
Intelligent). Упрощают работу себе и всей команде, продвигаясь к заданной цели оптимальным путем. Умеют правильно формулировать проблему и находить наилучшие её решения, гибки в своих действиях, отзывчивы к просьбам других. Это самые классные ребята на проекте. Таких называют "десятикратный программист".
Бандиты (
Bandit). Акцентированы только на своей задаче. Плюют на остальных, за счет чего часто добавляют головной боли остальным членам команды. Сосредотачиваются на скорейшем выполнении только своего куска, не проявляя гибкости по отношению к другим.
Беспомощные программисты (
Helpless). Ставят успех команды выше своих собственных предпочтений. Интеллектуально обычно находятся примерно на уровне бандитов, но ставят противоположные им цели: сначала помоги другим, а потом уже доделаешь свои куски. Часто работают сверхурочно.
Глупые программисты (
Stupid). Худший из возможных типов. Они часто не понимают ни саму задачу, ни как её решать. Банально не хватает знаний и опыта. Но стараются не подавать виду. Их называют "одна десятая программиста".
Дополнительные (промежуточные) типы:
Наивные (
Naive) концентрируются только на своей работе и вообще не смотрят на общую картину проекта. Стараются работать качественно, но если ими грамотно не руководить, их вклад в общее продвижение проекта будет близок к нулю.
Невежественные (
Ignorant) программисты работают по принципу "мне всё равно, я просто пишу код". Они подобны рабочему на конвейере: делают какую-то операцию, и на остальное плюют. Автор сравнивает их с "органическими компиляторами" и считает, что это самая распространённая категория.
По мнению автора, чтобы повысить шансы проекта на успех, в нём должны быть только умные программисты, но их мало, поэтому можно дополнять команду наивными и беспомощными. Можно ещё рискнуть и оставить нескольких талантливых бандитов, если вы способны удержать их в узде и жёстко контролировать. Всех, кто располагается ниже диагональной черты на рисунке, нужно увольнять.
Как вам такой подход?
#термин
54 views07:45