Эволюция в три этапа

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

Этап #1 = я решаю тикет. Кто-то создаёт issue в трекере, разработчик приходит, пишет код, вуаля. Всё хорошо, пока не оказывается, что можно было решить так, можно было эдак, но действительно верным является третий вариант. На этом этапе развития разработчик не видит дальше условия, да и не хочет видеть. Он кодер (программист, специализирующийся на кодировании — написании исходного кода по заданным спецификациям) и пишет код.
Фактически это обычный уровень junior’ов со всем вытекающим. Не дать сложную задачу. Надо тщательно и детально описывать всё в тикетах. Надо постоянно следить за тем, что код пишется в стратегически верном направлении.
Требуемые skill’ы: уметь писать код.
Типичный тикет такого уровня: вот в это место вбить такой-то гвоздь.

Этап #2 = я решаю задачу. Более продвинутая версия первого этапа. Разработчик начинает осознавать, что мир немножко больше, немножко сложнее. При чтении текста тикетов начинает задаваться вопросами категории “зачем? почему?” Он не просто пишет код, но расширяет свою зону ответственности и на другие технические области, начинает осваивать смежные специальности. В конце концов, он становится генератором тикетов.
Фактически это большинство разработчиков. Почти все middle и senior’ы решают задачи разного уровня сложности, надувая свою техническую квалификацию до универсальности (например, моднявые full stack developers). На топовом уровне это крутые программисты, которые под ключ сдадут вам сервис с отличной архитектурой, ещё и внуков переживёт.
Требуемые skill’ы: уметь писать проекты.
Типичная задача такого уровня: выстроить забор (middle), построить дом (senior).

Этап #3 = я решаю проблему. До этого доходит один из тысячи. До этого хочет дойти один из тысячи (многие сознательно не хотят). Всё потому, что примерно здесь пролегает граница между разработчиком и внешним миром, а разработчики не любят внешний мир. Там странные люди хотят странного, а тебе их понять, да ещё и помочь. Более того, иногда может оказаться, что через месяц осмысления и планирования разработчик решает проблему без единой строчки кода.
Фактически это уровень вне категории. Программирование — инструмент. Не всегда главный. Дизайн, управление, экономика, коммуникации, технологии и т.д. — всё включается в орбиту использования. На этом этапе уже не получится забиться в угол и тихонько копаться в сервисе, становясь самым главным специалистом по Java или наивеличайшим вкладывателем div’а в div.
На этом этапе у разработчика меняются приоритеты — если в интересах решения проблемы прошивка базы на Луне должна быть написана на VBScript, она (прошивка) будет написана на VBScript. Если для этого надо VBScript транслировать в ассемблер, так и будет. Если для этого требуется переучить группу биологов-аналитиков в группу low level geeks, разработчик убедит переучиться. Надо сначала самому всё осилить? Осиливается. И т.д.
Требуемые skill’ы: всё предыдущее с добавлением всего социального с добавлением человеколюбия.
Типичная проблема такого уровня: уберечь людей от замерзания зимой.

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

Добавить комментарий