2013-11-14
На любом IT-ресурсе вы найдёте тысячи статей, посвящённых благодатной теме «Какие бывают типы разработчиков» или «Что такое хороший разработчик как класс?», и все эти классификации набили оскомину.
Я проработал в IT-индустрии 15 лет, и за это время понял, что основным определяющим свойством программиста является источник его мотивации. Когда мне пришла в голову эта мысль о видах мотивации работников IT-сферы, о том, что на самом деле является для них (для нас) источником движения и развития, —мне показалось, что я очень близок к сакральной истине.
Если мы знаем, что подгоняет разработчика к дальнейшим свершениям, что является для него определяющим при принятии решений, мы уже можем предположить, какой он пишет код, какие технологии ему нравятся, как он справляется с заданием.
Итак, какие они, три возможных источника мотивации для программиста?
Центр треугольника занят сферическим отсутствием мотивации в вакууме (среди читателей этой статьи таких точно нет), а каждый угол треугольника представляет собой основную мотивационную силу.
Внутри этого треугольника мы и рисуем плоскость личного мотивационного треугольника, вершины которого определяются силой стремления к той или иной области. Мой личный треугольник будет выглядеть так:
Меня в достаточной мере интересуют и технологии, и общие бизнес-процессы, но прежде всего меня захватывает именно само решение поставленной передо мной задачи.
У других разработчиков акцент может быть смещён в полной мере в один угол основной фигуры, либо же находиться в равной удалённости от всех вершин (но, повторюсь, среди нас таких нет).
Так или иначе, один из мотиваторов всегда будет доминирующим. Что подразумевается под каждым мотиватором?
Бизнес-мотиватор (присущий исполнителям)
Желание сделать всё правильно для клиента. Такие программисты часто бывают любимчиками руководства, потому что они разрабатывают функциональность быстро, без лишних вопросов. Запилить новую функцию в последний момент? Без проблем. Им очень свойственен подход «можно всё, если нужно» (даже если это немного нарушит стройную архитектуру системы). В контексте кода мыслят очень конкретно, и обычно не сильны в абстракциях, необходимых для повторного использования или других целей, не связанных с функциональностью. Они просто хотят всё закончить и увидеть работающий продукт. Такие разработчики необходимы в каждом проекте. Они действуют, не растекаясь мыслью по древу.
Технологический мотиватор (присущий технологическим гикам)
Любовь к изучению нового, к самому процессу познания. Это они знают всё о последнем фреймворке, языке, методологии, и очень хотят опробовать их в текущем проекте. Новая библиотека выпущена на прошлой неделе и была написана сумасшедшим одиночкой за выходные? Надо попробовать! Эти ребята в курсе всех модных трендов, и, возможно, посвящали их изучению своё свободное время. Они всё пробуют на зуб, чтобы понять, что работает лучше. На ниве нового, только зарождающегося проекта они незаменимы и делают всё, чтобы внести в него самые сливки из мира технологий. Когда проект становится зрелым, и некогда новый код становится устаревшим, они начинают искать новую целину, которую можно поднять. Либо искать способы переделать старый код с помощью новых технологий, даже если это вредит системе.
Проблемный мотиватор (присущий головоломщикам)
Воодушевление от решения сложных задач, вне зависимости от того, какие технологии при этом используются, и насколько это выгодно бизнесу. Решение логической головоломки. Когда находится элегантное, изящное, стройное решение — это победа для таких программистов. Здорово, если это ещё и положительно сказывается на бизнес-процессах (а зачастую так и бывает). Таких разработчиков новая технология интересует только если она предоставляет возможность решить проблему интересным и лаконичным способом, но специально за новинками рынка они не следят. Они сосредоточены на поиске решений, детали их не волнуют.
Конечно, такая система классификации далека от идеальной, но мне такое видение помогает в работе с коллегами: осознание разницы между крутыми исполнителями, технологическими гиками, головоломщиками действительно очень важно. Я уже знаю о сильных и слабых сторонах каждого участника проекта, и каким образом каждый из них может внести максимальный вклад в процесс разработки.
Например, при запуске проекта нам очень полезны гики, которые расскажут, какие современные фреймворки могут помочь. Как только проект погрязает в аналитике и разборе неудачных решений, в игру вступают исполнители, способные писать рабочий код в любой ситуации. Когда возникает проблема, кажущаяся нерешаемой и тупиковой, можно обратиться к головоломщикам, которые смогут вытащить проект из болота.
Другими словами, каждый тип имеет свою особенную ценность. Важно соблюдать баланс в команде: преобладание какого-то определённого типа мотивации, скорее всего, сведёт общие усилия команды на нет. Команда, состоящая из гиков или головоломщиков, будет сутками спорить об инфраструктуре, так и не приступив к проекту, а команда исполнителей быстро и ненапряжно напишет десятки тысяч строк кода, больше похожего на сборник анекдотов.
А к какому типу программистов относитесь вы?
Подготовлено по материалам блога Ben Northrop.