23 альтернативных карьерных пути, которыми могут вырасти разработчики программного обеспечения

За последние пять лет я прочитал десятки гостевых лекций на многих учебных курсах по программированию в Чикаго.

Всегда возникают несколько вопросов: «Какой язык мне следует выучить дальше?», «Как мне подготовиться к техническим собеседованиям?», «Вы нанимаете?»

Но один вопрос, который сбил меня с толку, был: «Что, если я не хочу быть разработчиком программного обеспечения?»

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

Что еще могут делать разработчики программного обеспечения?

Осознание этого заставило меня задуматься: «Чем еще могут заниматься программисты, кроме написания программного обеспечения?»

Список на удивление длинный.

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

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

Альтернативные карьерные пути для разработчиков программного обеспечения

Роли, ориентированные на клиента

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

1. Отношения с разработчиками, пропаганда или евангелизация

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

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

Они часто участвуют в создании демонстрационных приложений, написании сообщений в блогах, выступлениях на конференциях и управлении учетными записями в социальных сетях для технологических компаний. Многие крупные технологические компании (Facebook, Google, Amazon и т. Д.) Нанимают команды специалистов по связям с разработчиками.

Если вас интересует эта область, прочитайте, что делают Мэри Тенгвалл и П.Дж. Хагерти. Они два моих любимых влиятельных лица в этой сфере, и они вместе выпустили подкаст Community Pulse.

2. Маркетинг для разработчиков

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

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

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

3. Инженер по продажам

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

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

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

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

4. Технический рекрутер

Еще одна профессия, получившая плохую репутацию среди инженеров-программистов, - технический рекрутинг.

Я встречал некоторых честных, настоящих технических рекрутеров (например, Тейлор Дорсетт и Мэтт Хоффман из моего родного города Чикаго), но я также встречал некоторых ужасных, невежественных рекрутеров, которые полностью сосредоточены на подборе кандидатов, чтобы выполнить свою квоту. .

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

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

Роли продукта

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

5. Инженер по обеспечению качества или тестировщик

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

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

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

6. Бизнес-аналитик

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

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

7. Менеджер проекта

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

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

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

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

8. Скрам-мастер

В Agile-командах Скрам-мастер помогает убедиться, что все знают теорию, лучшие практики и правила Скрама и принимают их.

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

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

9. Менеджер по продукту

В 2019 году я потратил много времени на изучение управления продуктами, чтобы улучшить наш процесс доставки продуктов в The Graide Network.

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

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

10. Дизайнер

Если у вас дизайнерский или художественный опыт, то стать дизайнером пользовательского интерфейса или пользовательского интерфейса с некоторыми навыками программирования - отличный способ выделиться в своей области. Эта комбинация навыков позволит вам более эффективно общаться с инженерами и создавать интерактивные макеты в HTML / CSS, а не просто файлы статических изображений.

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

11. Разработчик без кода или с низким кодом

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

Makerpad и No Code Jobs - хорошие места для поиска таких вакансий. Поскольку это новая область, вы найдете широкий спектр требуемых навыков и расценок, но ваш опыт написания кода, несомненно, окажется полезным.

Роли поддержки

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

12. Системный администратор или инженер DevOps

У крупных компаний-разработчиков программного обеспечения есть сотни или тысячи серверов, которые необходимо исправлять, обновлять и заменять в течение года. Хотя широкое распространение облачных вычислений изменило эту работу с физического подключения серверов к работе с таким программным обеспечением, как Terraform и Kubernetes, в этой области нет недостатка в рабочих местах.

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

В любом случае вам потребуется базовое понимание операционных систем, хостинговых платформ, средств автоматизации, сценариев bash и архитектуры системы. В этой области может быть сложно найти работу начального уровня, потому что для этого требуется такой широкий спектр технических знаний, но это отличная роль для перехода, если вам нравятся аспекты решения проблем в инженерии без требований UI / UX, которые большинство ориентированные на клиента продукты требуют.

13. Администратор базы данных

Некоторые компании объединяют администраторов баз данных с системными администраторами, но это может быть особая роль.

Администраторы баз данных занимаются безопасностью, предоставлением ресурсов, масштабированием и оптимизацией низкоуровневых систем хранения данных. Вам потребуются знания баз данных SQL и NoSQL, передовых методов безопасности и некоторые базовые навыки написания сценариев, но вы вряд ли будете писать код весь день. Вы также будете беспокоиться о мелких проблемах оптимизации, таких как исправление индексов и кешей.

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

14. Инженер по надежности сайта

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

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

15. Техническая поддержка или поддержка клиентов

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

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

Обучающие и писательские роли

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

Обучающие роли для разработчиков программного обеспечения

16. Технический писатель

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

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

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

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

17. Учитель

Есть несколько способов превратиться из карьеры разработчика программного обеспечения в профессию учителя. Вы можете устроиться преподавателем на учебный курс по программированию, вы можете преподавать в колледже или старшей школе, вы можете присоединиться к платформе, такой как egghead.io, или вы можете создать свой собственный веб-сайт курса с помощью Teachable или Educative. Ваш путь зависит от вашего прошлого и толерантности к риску.

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

18. Тренер

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

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

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

Аналитические роли

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

19. Data Scientist или инженер

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

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

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

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

20. Аналитик по безопасности

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

Некоторые работают в качестве независимых консультантов, но в более крупных компаниях могут быть собственные команды. Эта роль интересна тем, что требует сочетания технических навыков, навыков комплаенс, бизнеса и оценки рисков.

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

21. НИОКР

Работа в области исследований и разработок может стать уникальным опытом для человека, обладающего навыками разработки программного обеспечения. Крупные компании, такие как Google и Amazon, направляют часть своей прибыли на рискованные и потенциально прибыльные эксперименты, проводимые группами исследователей и разработчиков. Эти междисциплинарные группы могут включать разработчиков программного обеспечения, специалистов по обработке данных, бизнес-аналитиков и руководителей проектов.

Попасть в хорошую команду R&D сложно. Эти роли имеют тенденцию быть конкурентоспособными и требуют узкоспециализированных знаний по темам, которые вы, вероятно, не изучите на учебном курсе по программированию. Тем не менее, некоторые компании нанимают этичных хакеров, основателей или полиглотов, чтобы помочь сформировать команду и добавить в нее творческое мышление.

Независимость и гибкость

Хотя наша профессия часто допускает удаленную работу, а иногда и творческий отпуск, вам может потребоваться еще больше гибкости в своей жизни. Если у вас есть желание начать свой бизнес, вы можете работать 4 часа в неделю, проводить шесть месяцев в году в разъездах или половину своего времени работать над проектами с открытым исходным кодом. Это непросто, но как разработчик программного обеспечения вы имеете огромное преимущество перед большинством людей.

22. Фрилансер или консультант

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

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

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

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

23. Основатель стартапа

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

По правде говоря, это зависит от обстоятельств.

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

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

Последние мысли

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

Многие выпускники учебных курсов боятся искать работу за пределами области разработки программного обеспечения, но я бы посоветовал вам идти своим путем. Уравновесьте практичность (зарабатывание денег, чтобы жить) с вашими интересами, и, надеюсь, вы сможете найти карьерный путь, где работа не будет ощущаться «работой».

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