Уровни «программиста»

В вакансиях часто пишут «требуется программист». Однако, само по себе слово «программист» ничего не говорит о крутости позиции, и о уровне требуемых навыков.

Это может запутать новичка. Дополнительно может запутать то, что в индустрии нет единого стандарта именования уровней программиста. Наиболее распространенная: Junior developer → Senior developer. Иногда еще Middle посередине.

Ёмкого определения этих позиций однако я не нашел, и в итоге решил запротоколировать систему, крутившуюся у меня в голове. Вот что у меня получилось:

Кодер Знаком с одной технологией и одним способом ее использования. Способен выполнять только небольшие максимально детализированные задачи.
Программист Знаком не только с языком, но и с экосистемой вокруг языка. Любые задачи предпочитает решать на любимом языке с любимой базой данных. Способен выполнить проект целиком. Отклонения от изначального плана разработки могут вызывать возмущение.
Разработчик Выбирает подходящие технологии и инструменты под задачу. Не имеет предубеждений. Нормально уживается с некоторой степенью неопределенности. В состоянии помочь заказчику уточнить требования
Инженер В состоянии разработать инструменты для оптимального решения задачи, если нет подходящих В состоянии работать над большими проблемами состоящими из нескольких проектов с высокой степенью неопределенности

Чем круче специалист, тем больше ответственности он готов на себя взять, и тем более серьезные проблемы он может решать для бизнеса.

Несколько мыслей вдогонку

  1. Главное назначение классификации — самодиагностика. Она наглядна, и даёт возможность новичку взглянуть на общую картину без углубления в детали, как в матрице компетентности программиста, где можно потонуть в большом количестве незнакомых терминов.

  2. Каждое следующее «звание» включает в себя предыдущие, как матрёшка. Инженер способен выполнять проекты, используя существующие технологии, а разработчик так же как и кодер, справится с детализированными задачами.

  3. Достижение четвертого уровня не обязательно! Вы можете достичь благосостояния, востребованности, и известности оставаясь просто хорошим программистом(т.е. на втором уровне).

  4. При достаточном кругозоре и опыте рост из кодера в программиста - неизбежен.

Выше уровень → По силам больше неопределенности → Более сложные задачи → Более высокая зарплата
И вот классная статистика, которая это подтверждает: