2014-08-09

О карьере

Поговорим о невозможности карьеры программиста. Программиста в узком смысле. А не тыжпрограммиста, как называют всех работников ИТ отрасли люди со стороны. Во всех-то ИТ возможностей для карьеры весьма много.

Что делает программист? Он пишет код. Он думает о том, как писать код. Его мало волнует зачемдля кого и к какому сроку нужно написать код. Писать код — это очень круто. Это — власть над машиной. Это — возможность войти в поток. Я уже давно не пишу код регулярно. Но я искренне наслаждаюсь теми редкими часами, когда мне удается непрерывно покодить.


Новорожденная личинка программиста ничего не знает о компьютерах. Потом происходит столкновение с вычислительной техникой. И человек на несколько лет погружается в компьютерные игры. Озарение происходит в момент понимания факта, что игру можно написать и самому. И какая-то игруля пишется на Бейсике (или теперь на Scratch, а то и под мобильную платформу?). Это и есть рождение программиста.

В школе программиста в лучшем случае учат основам алгоритмов. Заставляют рисовать блок-схемы и что-то кодить на том же Бейсике или Лого. В вузе учат классическим заплесневелым языкам программирования и заставляют реализовывать хитрые алгоритмы решения систем дифференциальных уравнений методом Рунге — Кутты. Хороший будущий программист за это время пишет пару игрулек, создает пяток домашних страничек для себя, одногруппников, и даже для строительной фирмы двоюродного дяди маминого брата (первый коммерческий проект!). Некоторые умудряются придумать свой ЯП и нескучные обои.

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

Программист растет. Изучает нужные языки и фреймворки. Кодит. Много кодит. Кодит на настоящем боевом проекте и становится джуниором. Начинает сам понимать, что собственно он кодит, и становится специалистом. Кодит так много, что начинает понимать, как надо кодить правильно, и становится сениором.



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

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

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

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

Мне неизвестны случаи перехода программиста в тестировщики или сисадмины. А вот наоборот бывает. Видимо это вызвано тем, что программистам все же платят больше, чем тестировщиками или сисадминам. Но программист пишет больше кода, чем они.


Конечно, можно расти и при этом продолжать быть программистом. Можно расти вглубь, становясь абсолютным экспертом в выбранной технологии. Можно расти вширь, изучать все новые языки, все новые фреймворки. ИТ развивается стремительно. Появляются все новые пространства для развития. Совершенствоваться можно бесконечно.

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