Перевод статьи «The Stages Of Your Software Development Career».
Вы когда-нибудь задумывались, каким должен быть следующий шаг в вашей карьере? Как определить, какие инструменты, принципы и языки программирования учить дальше?
Я хочу поделиться с вами простым планом, который поможет разработчику любого уровня в продвижении вперед.
Важные соображения
Каждая стадия, описанная в этой статье, представляет собой определенную точку, на которой вы можете находиться с точки зрения вашей карьеры. Между этими точками есть переходные периоды, в которых вы накапливаете знания и опыт в определенных сферах.
Каждая стадия базируется на предыдущих.
Названия стадий совершенно необязательно соотносятся с названиями должностей, которые вы можете занимать. Человек, занимающий позицию сеньора, на самом деле может быть еще джуниором (по уровню знаний и опыта).
Да, порой люди получают подобные повышения просто потому, что у них за плечами Х лет работы в данной сфере, а не потому, что у них есть необходимые знания и навыки. Или они могут работать в одной компании так долго, что им просто дают «лучший» тайтл в виде поощрения. Я уверен, все вы такие ситуации наблюдали.
И, конечно, я должен оговорить, что между стадиями карьеры, описанными в этой статье, нет каких-то жестких разграничений.
Это просто способ визуализировать карьерный путь, чтобы было легче охватить его взглядом и управлять им. Это лишь полезный набор концепций, только и всего!
1. Кодер (Coder)
Кодер это, в общем-то, любитель. Относительно кодера будут истинными следующие утверждения:
- Знает синтаксис языка программирования (возможно даже очень хорошо!)
- Может самостоятельно создавать маленькие проекты вроде видеоигр, приложений и т. п.
- Это хороший «решатель» проблем.
- Работает в одиночку.
- Не получает платы за свою работу (не занимается разработкой на профессиональном уровне).
2. Разработчик-джуниор (Junior Developer)
В начале своего пути джуниор имеет много общего с кодером. Но джуниор входит в сферу разработки как оплачиваемый профессионал и работает в команде с другими профессионалами.
Вскоре джуниор вероятнее всего будет работать с кодовой базой, которая будет слишком большой для его понимания. Ему придется научиться разбивать проблемы на более мелкие задачи, с которыми будет легче справляться.
Джуниор начнет учиться соединять различные системы, например, изучать взаимодействие клиента и сервера или учиться коннектиться к базе данных из бэкенд-кода.
3. Разработчик среднего уровня (Intermediate Developer)
Это компетентный член команды и контрибутор. Он уже умеет строить базовые системы, такие как веб-приложения.
На этой стадии разработчик приобретает (среди прочего):
- Понимание базовой архитектуры системы
- Хорошие навыки использования профессионального инструментария
- Базовое понимание шаблонов проектирования, кода «с душком» и т. п.
- Понимание, как успешно работать в команде.
4. Разработчик-сеньор (Senior Developer)
Разработчик сеньор обладает знаниями и навыками на таком уровне, что окружающие начинают воспринимать его как наставника. Именно к нему они обращаются, когда у них возникают трудности.
Разработчики-сеньоры обычно имеют какие-то специализированные и продвинутые познания в программировании. Они способны создавать более сложные системы, используя при этом продвинутые приемы и шаблоны.
Вот некоторые отличительные черты сеньоров:
- Они разбираются в шаблонах проектирования, коде «с душком», рефакторинге и т. п.
- Знают архитектурные парадигмы, такие как предметно-ориентированное проектирование (Domain-driven design), Event Sourcing, CQRS и т. д.
- Имеют некоторый опыт развертывания и обслуживания серверов. Разбираются в балансировке нагрузки, пуле соединений и т. д.
Да, сеньоры много чего знают!
Примечание относительно различных направлений
Я обозначил черты старшего веб-разработчика. И хотя большинство из них имеют довольно общий характер, некоторые могут отличаться в зависимости от специализации разработчика. Например, разработчик-сеньор, специализирующийся на базах данных, будет иметь больше знаний и навыков, связанных с администрированием баз данных и т. п.
5. Ведущий разработчик (Lead Developer)
Ведущий разработчик дает профессиональные рекомендации своей команде разработчиков. Но, что более важно, он является связующим звеном между командой разработчиков и другими отделами вашей организации, больше ориентированными на бизнес.
6. Техлид (Tech Leader)
Техлид это человек, создавший себе имя и репутацию эксперта в каких-то специфических сферах деятельности. Он обычно позиционируется как очень хороший узкий специалист.
Специализацией техлида может быть определенный язык программирования, веб-безопасность, фронтенд-разработка с помощью React, обучение других разработчиков и даже работа в определенной отрасли.
Эти люди создают вокруг себя сообщества последователей, которые воспринимают их в качестве наставников. Это лидеры мнений, продвигающие определенные идеи. С целью продвижения идей техлиды выступают публично.
Короче говоря, это эксперты по технологиям и очень опытные коммуникаторы.
Вот и все, что я хотел рассказать. Как думаете, на какой стадии своей карьеры вы находитесь в настоящий момент? Что вам нужно сделать, чтобы перейти на следующий уровень?Поделитесь своими мыслями в комментариях!
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
Говно статья
Как минимум, на мой взгляд, пропущен ещё архитектор