Следующий шаг в карьере разработчика-сеньора (и это не менеджмент)

Перевод статьи Итамара Тернера-Трауринга «The next career step for Senior Software Engineers (that isn’t management)».

Карьера Senior-а: Implementer, Solver, Finder

Вы работаете программистом уже несколько лет, получили одно-два повышения и теперь думаете, что же дальше. До этого момента путь был достаточно прямым: вы учились работать самостоятельно, затем вас повысили до старшего инженера или какого-то равнозначного тайтла.

Но теперь дальнейший путь неясен.

Становиться менеджером и завязывать с программированием?

Просто изучать новые технологии или этого все же не достаточно?

На что нацеливаться?

В этом посте я представлю альтернативное карьерное продвижение. Этот путь даст вам больше автономности и усилит ваши позиции при ведении переговоров с компаниями. В отличие от варианта «стать менеджером», вы по-прежнему сможете программировать.

От кодинга к решению проблем

Конечное назначение нашей деятельности как программистов это решение проблем, а вовсе не написание программ. Для решения проблемы нужно уметь:

  1. Находить и идентифицировать проблему.
  2. Выдвигать варианты решения.
  3. Реализовывать решение.

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

Рэндал Каутник описывает это в виде особых тайтлов, соответствующих прогрессу карьеры: Implementers (реализаторы), Solvers (те, кто решает проблемы) и Finders (те, кто отыскивает проблемы).

Продвижение по карьерной лестнице

Implementer

Это неопытный программист, задачи которого определяются кем-то другим. Он лишь реализует маленькие, четко определенные куски кода.

Давайте представим, что вы работаете в компании, которая создает сайт для владельцев животных. Вы приходите на работу и вам дают задание: «Добавить выпадающее меню вот здесь. В меню должны перечисляться все болезни игуан (взять их можно из таблицы IGUANA_DISEASE). Когда пользователь выбирает пункт меню, он должен перенаправляться на соответствующую страницу».

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

Solver

Накопив побольше опыта, вы становитесь Solver-ом. Теперь вы способны предлагать решения для не столь хорошо определенных проблем.

Вам озвучивают проблему: «Нам нужно добавить на сайт секцию, где владельцы домашних животных смогут определить, не заболел ли их любимец». Вы прикидываете, какие данные у вас есть и какие APIs вы можете использовать. Вместе с дизайнером вы продумываете UI, а затем создаете план реализации. После этого вы начинаете писать код.

Finder

В конечном счете вы становитесь Finder-ом: вы начинаете самостоятельно определять проблемы и находить, что за ними стоит.

Вы идете поговорить со своим менеджером об игуанах. Их практически никто не держит, так зачем выделять им на экране столько же места, как котам и собакам? Не говоря уже о том, что написание отдельного игуано-ориентированного кода кажется просто тратой времени. Почему бы не написать какой-то общий код, который будет работать для всех видов животных?

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

Чем выгодно быть Finder

Чем выгодно быть Finder-ом?

Многие программисты останавливаются на уровне Solver-ов и не знают, куда двигаться дальше. Если менеджмент не для вас, то следующим отличным шагом будет стать Finder-ом. Причины для этого две: автономность и продуктивность.

Основная мысль Каутника в том, что каждая из стадий дает вам все больше автономности. У Implementer-а автономности совсем мало, у Solver-а ее больше, а у Finder-а вполне достаточно: вам дают кучу неопределенных целей и ограничений, а что со всем этим делать, решаете вы.

Но есть и другое преимущество: продвигаясь от Implementer-а к Solver-у, а от него – к Finder-у, вы становитесь все продуктивнее, поскольку выполняете все меньше ненужной работы.

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

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

Что дает продуктивность

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

А это значит, что у вас больше преимуществ при ведении переговоров с компаниями:

  • вы с легкостью можете выторговать прибавку к зарплате;
  • вам доступны лучшие вакансии, даже связанные с технологиями, которые вы не знаете;
  • вы можете выторговать себе не два (как у всех), а три дня выходных.

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


[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх