EngTalks

Разговоры на инженерные темы и не только

Главная

Кодер vs Инженер

Я условно делю всех программистов на две категории - кодеры и инженеры.

Круг внимания кодера ограничен IT технологиями: языками программирования, компиляторами, серверами, различным специализированным ПО. Кодеру нужно поставить конкретную задачу, описанную техническим языком. Для чего эта задача, как результат его работы будет использоваться - ему не особо важно. Да и смысла этим интересоваться у него нет - ему нравится сфера IT, а о том что снаружи пусть думают другие - аналитики, менеджеры проекта и прочие.

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

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

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

Кодер читает только профильные сайты и блоги. Инженер читает все. Откуда заранее знать, из какой жизненной сферы будет новая задача? Вдруг придется рисовать полигоны и заниматься трассировкой лучей? Тут никак не обойдешься без сильной тригонометрии и матричного исчисления. Вдруг окажется, что единственный нормальный вариант построения лейаута на сложной форме - составить и решить по-быстрому систему линейных уравнений? Сразу подумаешь, что не зря на втором курсе в универе потратил несколько дней на симплекс метод. Русский язык и грамотная устная и письменная речь - это для инженера вообще мастхев: ему никто не ставит задачи на техническом уровне - ему говорят что хотят, а как этого добиться инженер думает сам. Человеку со скудной лексикой и ошибками больших высот не достичь. И да, в случае с IT инженером, грамотная речь, хотя бы письменная должна быть еще и на английском.

Если инженер не хочет всю жизнь клепать формочки или делать однотипные скучные интернет магазины, ему можно направить внимание в бизнес сектор. А значит - работать с руководителями компаний разных уровней. Чтобы с ними работать - их надо понимать, а значит как минимум понимать этику и мораль. Научиться этому, кроме как прочитав классиков мировой литературы вообще никак. А еще очень поможет понимание того, как люди принимают решения в условиях жесткого дефицита информации. Это история. Анализируя решения лидеров с исторический времен до наших дней можно увидеть много закономерностей. Мне, к своему удивлению, еще пригождались знания и из вообще далеких от IT областей - физики, биологии, музыки и прочих.

И да, инженеру надо сразу привыкать, что получением новой информации, перевариванием, формированием знаний ему придется заниматься всю жизнь. Мир меняется. Чтобы “оставаться инженером” и не отстать до кодера - надо довольно быстро двигаться вперед.

Разумеется, на вознаграждении такая разница в подходах тоже отражается. Кодер, в зависимости от удачливости, сейчас получает 100-200тр/мес. Инженер получает столько, сколько хочет. Можешь придумать любую цифру и мысленно задать мне вопрос “И даже вот столько?” Я тебе сразу могу ответить “да”. Надо только сказать, что начиная с некоторого уровня дохода, деньги инженера уже не сильно интересуют. Но это уже другой разговор.