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 подробно описано, как овладеть навыком. Нужно практиковать навык снова и снова. Чем больше повторений, тем больше вы осознаете различия в каждом повторении. Только с этим пониманием вы можете стать лучше.

Названия должностей в индустрии программного обеспечения (Junior, Mid-Level и Senior) вводят в заблуждение и непоследовательны от организации к организации. Я работал с компаниями, которые определяли Senior Developer как человека с 5 или более годами опыта. Нет упоминания о качестве опыта, просто они сидели перед компьютером 5 лет. Работая с этими людьми, многие из них еще не овладели объектно-ориентированным программированием, но их считали Senior Developers.

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

Когда я смотрю на инженеров-программистов, я вижу 4 уровня навыков: Luminary, Senior, Mid-Level и Junior.

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

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

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

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

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

Автор: Chuck Conway — инженер AI с почти 30-летним опытом разработки программного обеспечения. Он создает практические системы AI — конвейеры контента, агенты инфраструктуры и инструменты, которые решают реальные проблемы — и делится тем, что он узнает на этом пути. Свяжитесь с ним в социальных сетях: X (@chuckconway) или посетите его на YouTube и на SubStack.

↑ Вернуться в начало

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