Гибкие навыки. Исчерпывающее руководство по прокачке себя для начинающих разработчиков — страница 10 из 82

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

Сначала тебе нужно определиться с тем, чем именно ты хочешь заниматься. Ты хочешь заниматься фронтенд-разработкой приложений, создавая и разрабатывая пользовательские интерфейсы? Ты хочешь разрабатывать связующее программное обеспечение, реализуя бизнес-правила и логику? Или ты хочешь стать бэкенд-разработчиком и работать с базами данных и низкоуровневыми операциями? Ты можешь выбрать все три варианта и стать фулстек-разработчиком, но в таком случае тебе нужно определиться с определенным стеком технологий. Например, фулстек-разработчик может специализироваться на создании ASP. NETMVC сайтов, используя С# и SQL Server.

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

Еще одна специализация – это операционные системы. Бо́льшая часть разработчиков пишут приложения и программы для определенной операционной системы, например Windows, UNIX или MacOS.

Разработка мобильных приложений или разработка мобильной операционной системы – это тоже потенциальная область специализации. Спрос на разработчиков, занимающихся написанием приложений на iOS или Android, очень высок.

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

Области специализации:

• стек веб-разработки;

• встроенные системы;

• определенные операционные системы;

• разработка мобильных приложений;

• фреймворки;

• системы ПО.

Выбираем специализацию

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

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


• Какими были основные проблемы компании, в которой ты работаешь или работал? Можешь ли ты стать тем человеком, который способен решить эти проблемы?

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

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

• Если ты сидишь на сайтах вроде Stack Overflow, то на какие вопросы тебе приходится отвечать чаще всего? С какими проблемами сталкиваются твои коллеги?


Что бы ты ни делал, убедись, что ты выбрал определенную специализацию. Размер рынка поможет тебе понять, насколько узкой она может быть; постарайся сделать эту область максимально узкой. Тогда спрос на твои услуги будет намного выше. И не волнуйся: если будет нужно, ты всегда можешь сменить специализацию. Например, я больше не специализируюсь только на разработке ПО для принтеров. Я также знаком со множеством разработчиков, успешно сменивших свою специальность.

Например, мой хороший друг Джон Папа (John Papa) изначально специализировался на Microsoft Silverlight. Спустя несколько лет, когда он ушел из Microsoft Silverlight, он начал работать с одностраничными приложениями.

О программистах-универсалах

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

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

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

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

УПРАЖНЕНИЯ

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

• Какова твоя текущая специальность? Если ты еще не определился, то подумай о том, в какой области ты мог бы специализироваться.

• Посети популярный сайт по поиску работы и поищи предложения по твоей специальности. Подумай над тем, как будет развиваться твоя карьера: твоя специализация ограничит тебя или, наоборот, даст преимущества перед другими?

9Виды компаний, в которых ты можешь работать

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

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

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

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

Малый бизнес и стартапы

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

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

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

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

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

Преимущества:

• станешь всесторонне развитым человеком;

• гибкие роли;

• твой вклад в работу замечают;

• вероятность высокого вознаграждения.


Недостатки:

• ты не сможешь просто сидеть и писать код;

• не получится слиться с толпой;

• невысокая стабильность.

Средний бизнес

Большинство компаний среднего размера. Я уверен, что бо́льшая часть моих читателей работает (или будет работать) именно в таких. Они уже долгое время существуют на рынке, имеют стабильный прибыльный бизнес, но по каким-то причинам не могут войти в список 500 самых состоятельных.