Skip to content

Посты

Овладение мастерством: Основные навыки старшего инженера-программиста

31 октября 2012 г. • 4 мин чтения

Овладение мастерством: Основные навыки старшего инженера-программиста

Когда я слышу “Старший разработчик”, я думаю о человеке, который овладел программированием. Я думаю о человеке, который может проектировать, кодировать и тестировать систему. Они могут говорить об архитектуре системы или дизайне компонентов. Они понимают и используют паттерны проектирования. Этот человек может предвидеть узкие места производительности, но знает, что не стоит преждевременно оптимизировать. Этот человек будет использовать асинхронное программирование, очереди, кэширование, логирование, безопасность и персистентность, когда это уместно. При запросе они могут дать подробное объяснение своего выбора и плюсов и минусов. В большинстве случаев они овладели объектно-ориентированным программированием и дизайном, хотя это не абсолютное требование - другие языки, такие как javascript, F#, scheme, мощны и не являются объектно-ориентированными по своей сути. Они искусны в управлении рисками и, что самое важное, они могут донести вышеупомянутое до своих коллег.

Что такое мастерство? Существует общепринятая идея, что для овладения ЛЮБЫМ навыком требуется 10 000 часов повторения, чтобы человеческое тело и разум усвоили и интернализировали навык. Об этом подробно написано в книге Малкольма Гладуэлла Outliers.

Некоторые примеры из “Outliers” Малкольма Гладуэлла:

Моцарт написал свой первый концерт в молодом возрасте 21 года. Что поначалу кажется молодым, но он писал музыку с 11 лет.

The Beatles изначально были отвергнуты. Им сказали, что у них нет таланта и стоит рассмотреть другую сферу деятельности. Они провели 3 года в Германии, играя около 1200 раз на разных площадках, каждый раз по 5-8 часов. Они вновь появились как The Beatles, которых мы знаем и любим сегодня.

И наконец, Билл Гейтс в возрасте 20 лет бросил Гарвард, чтобы основать Microsoft. Для некоторых это может показаться глупым, но учитывая, что в 20 лет он потратил почти половину своей молодой жизни на программирование. В 1975 году, возможно, только 50 человек в мире имели такой опыт, как у него. Его опыт дал ему предвидение увидеть будущее в Microsoft.

Питер Норвиг также обсуждает правило 10 000 часов в своем эссе “Teach Yourself Programming in Ten Years”.

В книге Mastery by George Leonard подробно рассказывается о том, как овладеть навыком. Нужно практиковать навык снова и снова и снова. Чем больше повторений, тем больше вы осознаете различия в каждом повторении. Только с этим пониманием вы можете стать лучше.

Должности в индустрии программного обеспечения (Младший, Средний уровень и Старший) вводят в заблуждение и непоследовательны от организации к организации. Я работал с компаниями, которые определяли Старшего разработчика как человека с 5 или более годами опыта. Нет упоминания о качестве опыта, только то, что они сидели перед компьютером 5 лет. Работая с этими людьми, многие из них еще не освоили объектно-ориентированное программирование, но они считались Старшими разработчиками.

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

Рассматривая инженеров-программистов, я вижу 4 уровня навыков: Светило, Старший, Средний уровень и Младший.

Светило (10+ лет) - это тот, кто овладел навыком и занялся улучшением своей соответствующей дисциплины. Некоторые примеры включают: Ted Neward, Uncle Bob Martin, Donald Knuth, Oren Eini, Peter Norvig, Linus Torvalds. Это может изменяться в зависимости от вашего набора навыков.

Старший (от 7 до 10+ лет, Уровень 3) - это тот, кто провел последние 10 000 часов, программируя в определенном жанре. Есть глубокое понимание паттернов проектирования. Они используют асинхронное программирование, очереди, кэширование, логирование, безопасность и персистентность, когда это уместно.

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

Средний уровень (от 4 до 6 лет, Уровень 2) - это тот, кто понимает повседневное программирование. Они работают самостоятельно и создают надежные решения. Однако они еще не имели опыта создания или поддержки больших или сложных систем. В целом разработчики среднего уровня отлично справляются с разработкой на уровне компонентов.

Младший (от 1 до 3 лет, Уровень 1) - это тот, кто понимает основы программирования. У них либо есть степень в области программной инженерии или информатики, либо они самоучки. Их код постоянно проверяется. Даются рекомендации относительно алгоритмов, поддерживаемости и структуры.

Автор: Чак Конвей специализируется на разработке программного обеспечения и генеративном ИИ. Свяжитесь с ним в социальных сетях: X (@chuckconway) или посетите его на YouTube.

↑ Наверх

Вам также может понравиться