Вы можете любить или ненавидеть их, но вы не можете игнорировать их.
В течение моей профессиональной карьеры я работал с множеством различных типов разработчиков. Мне нравилось работать с некоторыми из них, но в работе с другими я только надеялся закончить проект и больше никогда не работать вместе.
В этой статье я перечислю некоторые типы этих разработчиков.
1. Продавец дыма
Этот тип разработчика всегда что-то кому-то обещает — заказчикам, вашим начальникам или другим разработчикам. Но когда что-то действительно нужно сделать, то если он может, он сбегает в другой проект или пытается спихнуть всю работу другим разработчикам. Продавец дыма очень опасен, так как может привести вас к серьёзным проблемам. Он продаёт продукт, который он и не собирается делать, с технологиями, которые никогда не использовал.
Если вы не знаете продавцов дыма, вы подумаете, что они знают всё, о чём говорят и что могут помочь вам. Но скоро вы поймёте, что это ложь и вы не можете рассчитывать на них.
2. Мультизадачный разработчик
Неплохой разработчик. Обычно этот тип обладает классными техническими навыками, но так занят, что никогда не фокусируется на чём-то одном и вы никогда не можете рассчитывать на него в проекте среднего размера. Получить его внимание довольно тяжело и хотя он иногда имеет блестящие идеи, требуется много усилий, чтобы убедить его что-то закончить.
3. Специалист с сертификатами
У меня пока нет большого опыта работы с данным типом разработчика, который всё измеряет своими сертификатами. Я думаю, что необходимо иметь хорошую базу с глубокими знаниями в области вашей работы. Я не против сертификатов. Но в большинстве случаев иметь сертификат, если это не подтверждено реальным опытом, не стоит многого.
Несколько лет назад клиент, которому я разрабатывал программное обеспечение, нанял архитектора программного обеспечения. Роль этого архитектора была в организации и руководстве всеми внешними разработчиками, работающими с клиентом.
Сперва я чувствовал себя хорошо в работе с ним, но вскоре я понял, что всё, что он делает было услышано в решениях других людей и он притворялся, что это были его собственные решения.
В моём случае, я потерял много времени на митингах, в которых он пытался изменить наши методы работы, но это базировалось на идеях, о которых он только читал или слышал, но не использовал на практике.
Конечно, сертификаты или степень в образовании это прекрасно, но только если это подтверждено реальным опытом, иначе вы становитесь разработчиком-теоретиком.
4. Неряшливый разработчик
Их код беспорядочен и не следует каким-либо хорошим практикам, смешивая все дизайны в одну кучу(если они где-то и прослеживаются).
Я работал с людьми, подобными этому типу. В конце планёрок я обычно спрашивал их есть ли у них какие-либо сомнения насчёт того, о чём мы говорили, потому что я видел, что они делали беспорядочные заметки на кусочке бумаги. Они всегда отвечали мне, что сомнений нет. Через несколько дней они разрабатывали что-то тотально отличное от того, о чём мы договорились на планёрке.
У вас может быть много ключей, чтобы распознать нерях:
Упорядочены ли их заметки?
Записывают ли они, чтобы не забыть?
Приведён ли их рабочий стол в порядок?
5. Разработчик-теоретик
Много теории, мало практики. Они всегда говорят остальным разработчикам как делать, но в большинстве случаев сами никогда не используют то, о чём говорят. Когда босс рядом, разработчики-теоретики хвастаются всем, что "знают", но ищут способы уйти с дороги, когда дело доходит до работы.
На одной из моих работ, был такой человек. Он был повсюду, рассказывая как мы могли бы делать вещи, но я редко видел его разрабатывающим что-то. Когда я получил его в напарники, я практически вынужден был объяснять ему как делать что-то.
6. Рядовой разработчик
Наиболее распространённый тип разработчика. Они имеют тенденцию быть средними во всём, что делают и обычно хотят иметь предсказуемые и комфортные задачи в их бэклоге.
7. Боязливый разработчик
Боязливые разработчики никогда не берут инициативу в свои руки. Они всегда ждут пока вы скажете им как нужно делать и какие технологии использовать или напомните что было сказано на митинге о той части, которую они разрабатывают. И если что-то пойдёт не так, они обвинят вас.
Они тратят много энергии и времени, чтобы не быть обвинёнными, если что-то пойдёт не так, вместо того, чтобы думать как сделать свою работу лучше.
Они всегда выбирают наиболее комфортный для них путь сделать свою работу, даже если есть лучшие альтернативы в решениях.
8. Универсальный разработчик
Отличный тип разработчика для большинства проектов. Как правило не обладает супер навыками во всём что знает, но может сделать любой проект. От бэкенда до фронтенда.
9. Нарцисс
Обычно имеют огромное эго и плохие командные навыки.
Они хотят, чтобы их рассматривали как лучшего разработчика в команде. Имеют тенденцию переусложнять простые вещи и используют хитроумный код, который более сложен для понимания другими членами команды. Если они ревьювят ваш код, они всегда пытаются отрефакторить и прокомментировать даже там, где это не является необходимым.
В другое время они рассказывают вам что что-то идёт не так и они позаботятся об этом, применяя что-то супергениальное. Но в конечном счёте, они не сдержат своих обещаний и когда начальник спросит у вас почему ваша задача провалилась, они ответит что предупреждали вас, что что-то пошло не так.
Вкратце, нарцисс - это человек, имеющий высокие технические навыки, но склонный усложнять вещи, чтобы выделиться и быть выше других членов команды. С нарциссами тяжело работать.
10. Одержимый всем разработчик
Тип разработчика одержимого всеми стандартами и методологиями. Стандарты и методологии могут приносить пользу, но если это становится крайностью, то теряется гибкость и вся работа идёт очень медленно.
11. Единорог
В моей компании есть разработчик, которого я обозначаю как "единорог". У него есть всё: великолепные технические навыки, великолепные навыки коммуникации и он всегда готов помочь.
Если есть проблема, он всегда готов решить её. Вы всегда уверены, что если он сказал, то он сделает.
В целом, "единороги" хороши во всём, но, как правило, не задерживаются долго на одной работе, потому что они знают свои возможности, не являются нарциссами и всегда имеют хорошие предложения о работе.
12. Быстрый разработчик
Они склонны заканчивать всё быстро, но берут новую задачу без 100-процентного закрытия предыдущей.
Они стремятся закончить задачу быстро и сделать свою часть работающей, хотя во многих случаях без тестирования хотя бы чего-нибудь или без применения хороших практик. Они не документируют код либо не следуют документации.
Проблема в работе с ними - после них весь код нужно рефакторить полностью либо много исправлять, чтобы избежать ошибок.
13. Разработчик, который всегда хочет помочь
Один из моих любимых типов. Обычно они знают всё и знают как это сделать хорошо. Они всегда хотят помочь не будучи заносчивыми и высокомерными.
К сожалению, некоторые из них отвечают на ваши вопросы, как будто вы ребёнок и совершенно не терпят критики, если опровергаете что-то из сказанного ими.
Заключение
В конечном счёте, наиболее важная вещь - найти сбалансированную команду с людьми, с которыми легко работать, кто надёжен и хочет развиваться. Технические знания и опыт приходят со временем, а изменять себя в лучшую сторону намного сложнее.
И хотя в этой статье я поведал личный опыт работы с другими разработчиками, я уверен, что вы сталкивались с множеством других различных типов разработчиков. И я бы хотел, чтобы вы тоже поделились в комментариях своим опытом.