Чем отличается программист от инженера

В этой статье я хочу изложить свои мысли на тему того чем отличается программист от инженера и в каких случаях кто вам понадобится в команде.

Программист

Программист зачастую просто исполнитель. Есть задача – я ее делаю. Программист не задумывается над целью и смыслом задачи, ее ценности для бизнеса, этим занимаются те кто ставят ему задачи. Таким образом программист реализует фичи, задает либо много либо ни одного вопроса о том как их делать. Программист мало задумывается о трендах и новшествах. Он пишет свой код так как рекомендуют топовые специалисты индустрии или дев-блогеры, а в худшем проявлении – как привык писать раньше.

В реалиях нашего времени программистом может стать каждый. С одной стороны это круто и классно, а с другой мы получили рынок некомпетентных и неквалифицированных кадров.

Зачастую эти кадры зазубрили лежащие в интернете ответы на популярные вопросы на собеседованиях, насмотрелись видео-туториалов на ютубе (зачастую от индусов) и успешно прошли собеседование на позицию джуна, потратив на подготовку в лучшем случае месяц. Месяц, Карл. Кого же получила компания в лице сего специалиста (прости Господи) – если говорить о веб-деве, то это будет человек не понимающих базовых принципов веб-разработки (какие есть виды протоколов и чем они отличаются, какие есть виды запросов и т.п.), а работы выполняет повторяя увиденное в ранее просмотренном видео (если повезет, то будет искать новое), ну а если такого не было будет задалбывать вопросоми наставника. Но вот беда, похожую задачу он будет решать тем же методом, даже не думая о том, что пригодится может другой. Нужен ли вам такой программист?

Но на этом рынке еще остаются мастера написания кода даже с завязанными глазами, хоть и ценник их заметно выше описанных выше специалистов. Такие люди реализуют четко поставленную им задачу без лишних или с минимумом вопросов. Программисты будут полезны если у вас:

  • большая компания с отлаженными процессами и есть стабильный технологический стек;
  • командам работающим “на потоке” и которые зачастую используют тот стек, который дает клиент;
  • государственные организации, где программист зачастую отрабатывает ставку, но в идеальном мире это то же самое что и большая компания, только бюрократия умножается на 2, а стек взят из позапрошлого века.

Инженер

Это бывшие программисты-профессионалы которые посвятили львиную долю своего свободного времени саморазвитию и самообучению. Основное их преимущество – умение провести глубокий анализ полученного в любом виде материала.

Инженер может разобрать ваш легаси-код на мелкие запчасти, найти в нем узкие места, предложить методы их устранения, подобрать команду для решения проблемы самостоятельно или с помощью HR.

Ему не нужно детальное ТЗ (если понадобится он сам его напишет), так как декомпозицию задач и их постановку он осуществит непосредственно при ознакомлении с требованиями по входу в проект.

Последовательность действий инженера зачастую такая: анализ требований, проектирование, реализация. Именно в таком порядке и в соотношении потраченного времени оно распределяется примерно как 40/30/30.

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

Вам нужны инженеры если:

  • большая компания, которой нужны те кто будет контролировать/исправлять то что производится программистами;
  • ваша компания решает не рутинные задачи, а связанные с высокими нагрузками и построением сложны архитектур или инфраструктур;
  • продуктовая компания, которая занимается развитием собственных продуктов.