Текст книги "Гибкие навыки. Исчерпывающее руководство по прокачке себя для начинающих разработчиков"
![](/books_files/covers/thumbs_240/gibkie-navyki-ischerpyvayuschee-rukovodstvo-po-prokachke-sebya-dlya-nachinayuschih-razrabotchikov-269953.jpg)
Автор книги: Джон Сонмез
Жанр: Поиск работы и карьера, Бизнес-Книги
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 4 (всего у книги 32 страниц) [доступный отрывок для чтения: 9 страниц]
7
Три карьерных пути разработчика
Когда ты повторяешь действия других людей или следуешь по пути, проложенному кем-то другим, очень легко допустить ошибку. Конечно, бо́льшая часть разработчиков почти все время работает на кого-то другого, но это не единственный вариант. Существует множество вариантов, где и как ты можешь применить свои навыки.
Возможно, ты даже не знал о других вариантах, кроме традиционного. Поверь мне, раньше я тоже о них не знал. В этой главе я расскажу тебе о разных вариантах, и у тебя появится возможность определиться с тем, чего ты хочешь в будущем. Мы рассмотрим каждый вариант отдельно, и ты узнаешь, как можно преуспеть в каждом из них.
Вариант 1: сотрудник компании
Стандартный выбор работы, который делают большинство разработчиков. Бо́льшую часть своей карьеры я был сотрудником – все из-за того, что я выбрал самый простой путь. Возможно, мне не стоит рассказывать, что значит «быть работником», но давай рассмотрим все плюсы и минусы этого варианта.
Главный плюс этого варианта – стабильность. Стабильность не в том смысле, что ты будешь работать на одной работе или на одного человека; я имею в виду то, что у тебя всегда будет постоянный источник денег. Если ты решил работать в компании, то пока ты работаешь там, ты получаешь зарплату. Конечно, в будущем ты можешь потерять эту работу и тебе придется заняться поиском новой, но пока у тебя «стабильные времена», ты можешь рассчитывать на определенный доход каждый месяц.
Этот вариант самый простой из всех, так как твоя ответственность на работе довольно невелика и ты всегда знаешь, к чему ты в конце концов придешь. Поиск работы очень прост. К тому же тебе не нужно гадать о том, что делать, чтобы тебе заплатили.
Как у сотрудника компании, у тебя всегда будет оплачиваемый отпуск и – если ты живешь в США – ты всегда можешь рассчитывать на помощь с медицинской страховкой.
Но у этого варианта есть свои негативные стороны. Например, ты довольно ограничен в своей свободе. Будучи сотрудником компании, бо́льшую часть времени ты станешь решать задачи, поставленные твоим работодателем. Ты не сможешь выбирать работу, и иногда тебе придется делать то, что тебе не нравится. Возможно, тебе также придется следовать расписанию: тебе придется работать определенное число часов в неделю.
Хотя ты знаешь размер своей зарплаты заранее, скорее всего, она имеет свой потолок. Являясь сотрудником, в один момент ты достигнешь этого потолка, и тебе будет некуда двигаться дальше.
Плюсы:
• стабильность;
• простейший путь;
• оплаченный отпуск;
• помощь с медицинской страховкой.
Минусы:
• недостаток свободы;
• ограниченный доход.
Вариант 2: независимый консультант
Многие разработчики работают независимыми консультантами и так зарабатывают себе на жизнь. Независимый консультант – это разработчик, работающий не на босса, а на одного или нескольких клиентов. Если ты когда-нибудь подрабатывал на стороне, программируя что-то для человека и получая почасовую оплату (либо сумму, оговоренную заранее), то ты уже понимаешь, что значит быть независимым консультантом.
Я считаю независимыми консультантами тех разработчиков, кто зарабатывает бо́льшую часть своего дохода подобным образом. Разница между независимым консультантом и подрядчиком заключается в том, что последний работает на одного клиента и получает почасовую оплату только за выполненную работу. Подрядчик находится в трудовых отношениях с нанимателем. У независимого консультанта чаще всего имеется собственная компания, с которой заключаются все контракты на выполнение работ; при этом консультант не работает на одного клиента.
Несколько лет своей карьеры я работал независимым консультантом, и иногда я консультирую людей по сей день. У меня всегда была одна мечта – работать на себя, и я считаю, что консультирование – отличный вариант исполнения этой мечты. Невозможно передать то чувство, когда ты сам себе хозяин. Но я даже предположить не мог, что при работе независимым консультантом у тебя будет не один, а несколько начальников.
Нельзя сказать, что в работе независимым консультантом есть только минусы. В том, что ты работаешь с несколькими «начальниками», есть свои плюсы. Например, ты сам вправе решать, когда работать и какую работу выполнять. Ты можешь составить гибкое расписание, но при этом клиенты ожидают, что ты будешь выполнять свою работу вовремя.
Самый большой плюс этого варианта – потенциальный заработок. Работая независимым консультантом, ты можешь устанавливать какую угодно ставку. Например, я беру по $300 в час (кстати говоря, я знаком с независимыми консультантами, берущими даже больше!).
Но это не значит, что у тебя получится сколотить огромное состояние. У тебя не получится сразу брать по $300 в час (хотя в части II я расскажу тебе, как можно повысить ставку). К тому же ты будешь работать больше 40 часов в неделю. Тебе может показаться, что эта работа приносит хорошие деньги, но она также занимает много времени: чаще всего ты будешь искать клиентов и решать задачи, связанные с бизнесом, а не работать. Если ты работаешь независимым консультантом, то ты занимаешься бизнесом. А это значит, что тебе нужно будет платить налоги, решать юридические вопросы, обеспечивать медицинское обслуживание, заниматься продажами и прочими вещами, связанными с бизнесом.
Плюсы:
• больше свободы (ты сам решаешь, в какое время работать);
• постоянно появляются новые проекты;
• возможность зарабатывать больше денег.
Минусы:
• приходится искать клиентов;
• нагрузка, связанная с ведением бизнеса;
• несколько начальников вместо одного.
Вариант 3: предприниматель
Возможно, этот вариант наиболее трудный, неопределенный, но и наиболее прибыльный. Я могу описать этот вариант множеством прилагательных и объяснить каждое из них. Я бы сравнил предпринимателя с профессиональным игроком в азартные игры. Здесь нет никакой стабильности, но если тебе повезет, то ты сорвешь куш.
Итак, что же значит быть предпринимателем? Думаю, твои догадки совпадают с моими. Этот путь довольно расплывчатый, и он может включать в себя множество вещей. Когда я говорю «предприниматель», я имею в виду разработчика, развивающего бизнес с использованием своих навыков. Например, сотрудник компании и независимый консультант обменивают доллары на отработанное время, в то время как предприниматель обменивает время не на мгновенную выручку, а на шанс получить большой заработок в будущем.
Например, в данный момент я считаю себя предпринимателем. Бо́льшую часть своего времени я трачу на обучение разработчиков и создание продуктов, которые я продаю самостоятельно или с помощью партнеров. Именно так я зарабатываю себе на жизнь. Я все еще пишу код, но не занимаюсь этим для одного определенного клиента. Я пишу код либо для собственного продукта, либо для обучающих материалов.
Даже эта книга – продукт работы предпринимателя. Я беру на себя большой риск, занимаясь написанием этой книги. Я трачу на ее написание много времени, но тот небольшой аванс, который я получу от издателя, не покроет все мои затраты. Я хочу либо продать как можно больше копий этой книги, чтобы получить хорошие отчисления с продаж, либо использовать эту книгу как рекламу, которая привлечет клиентов. Возможно, моя затея с книгой провалится, и я просто потрачу силы и время впустую (что маловероятно, потому что: 1) ты читаешь мою книгу и 2) это уже второе издание).
Другие разработчики-предприниматели действуют иначе. Кто-то создает стартап и ищет финансирование у инвесторов – это называется венчурным капиталом. Кто-то открывает небольшую компанию по разработке коммерческого продукта (SaaS) и зарабатывает с помощью подписок на них. Например, основатели популярной компании по подготовке разработчиков Pluralsight начинали с обучения людей в обычных кабинетах. Впоследствии они поняли, что, работая в интернете, они могут улучшить качество предоставляемых услуг, так что они перешли на модель SaaS и начали предоставлять свои услуги по подписке.
Уверен, что ты уже определил два главных преимущества этого варианта: полная свобода и неограниченный заработок. У тебя не будет начальника, кроме себя, хотя именно ты можешь стать самым ужасным начальником в своей жизни. У тебя свободный график: ты можешь приходить и уходить когда захочешь, и только ты ответственен за свое будущее. Ты можешь заработать миллионы долларов (и больше), если создашь популярный продукт. К тому же, если ты правильно воспользуешься своим временем, то твой доход может вырасти в несколько раз.
Но, несмотря на все плюсы, быть предпринимателем – это не только поездки на лимузинах и посещение вечеринок. Это самый рискованный и сложный путь, по которому ты можешь пойти. Нет никаких гарантий, что ты будешь получать доход; возможно, тебе придется залезть в долги, чтобы у тебя были средства для реализации всех идей. Жизнь предпринимателя похожа на американские горки. Сегодня у тебя есть клиенты, и ты словно находишься на вершине мира. Завтра о тебе и твоем продукте все забывают, и тогда приходит время думать, как оплачивать все счета в следующем месяце.
К тому же ты постоянно должен развивать «побочные» навыки, которые не пригодились бы тебе, если бы ты работал консультантом или сотрудником компании. Тебе придется изучать продажи, маркетинг, а также другие аспекты ведения бизнеса. Поверь, все это важные составляющие успеха.
Подробнее об этом в следующих частях. В части II мы рассмотрим самомаркетинг, и он очень похож на продвижение своих продуктов. Мы также рассмотрим способы управления финансами, так как это пригодится тебе даже в том случае, если ты не планируешь становиться предпринимателем.
Плюсы:
• полная свобода;
• потенциально высокий заработок;
• ты можешь выбирать, над чем работать;
• сам себе начальник.
Минусы:
• высокие риски;
• все зависит только от тебя;
• нужно владеть множеством других навыков;
• много работы.
Какой вариант выбрать?
Большинству разработчиков, особенно начинающим, лучше всего устроиться сотрудником в какую-нибудь компанию. Тебе не нужно иметь много опыта, да тут и нет практически никаких рисков. По правде говоря, для меня люди, работающие в компании, кто-то вроде учеников. Даже если ты хочешь работать на себя, я советую начать с работы в компании: так ты сможешь приобрести новые навыки и отточить уже имеющиеся, к тому же это полезный опыт.
Подытожу: если ты только начинаешь свою карьеру и есть возможность стать независимым консультантом или предпринимателем, ты трезво оцениваешь все риски, сможешь преодолеть все трудности и ошибки, то ты можешь попробовать эти варианты. Возможно, у тебя получится создать хороший задел для последующей карьеры.
Должен добавить, что многие разработчики ПО, с которыми я общался и которые стали независимыми консультантами, пожалели о своем выборе. Мой хороший друг устроился в крупную компанию и работал там, но потом уволился и стал независимым консультантом. Сначала дела его шли хорошо, но потом он понял несколько важных вещей: хотя он и получил некоторую независимость от начальства и своего географического расположения, у него появилось множество новых обязательств. К тому же начальников стало несколько. Потом он стал предпринимателем и сказал мне, что если бы он знал то, что знает сейчас, то он бы ни за что не стал независимым консультантом.
Выбор только за тобой. Не забывай, что ты всегда можешь изменить свое решение. В главе 11 я расскажу тебе, как перестать работать на чужого человека и начать работать на себя. Это сделать непросто, но, возможно, этот путь подойдет именно тебе.
УПРАЖНЕНИЯ
• Постарайся составить список знакомых разработчиков, подходящих под каждую из категорий.
• Если ты хочешь стать независимым консультантом или предпринимателем, расспроси своих знакомых, прошедших этот путь. Узнай, как развивается их карьера сейчас. Слишком многие разработчики начинают заниматься карьерой, не осознавая всех рисков и того, к чему это может привести.
8
Почему тебе необходима специализация
Приходилось ли тебе когда-нибудь нанимать адвоката? Что ты делал в первую очередь? Если ты никогда не пользовался его услугами, то как ты думаешь, что бы ты сделал в самом начале?
Если ты подумал, что тебе нужно определиться с тем, какой именно адвокат нужен, то ты прав. Ты же не хочешь нанимать первого попавшегося адвоката; тебе нужен определенный человек, имеющий опыт работы в нужной тебе сфере. Например, адвокат по уголовным делам, адвокат по делам о несчастных случаях, адвокат по недвижимости и т. д.
Думаю, ты не захочешь, чтобы твои проблемы с налогами и недвижимостью решал адвокат по делам о разводе, так что специализация чрезвычайно важна. Оканчивая юридическую школу, адвокат выбирает свою специализацию, а не остается просто «адвокатом»; к сожалению, большинство разработчиков поступают ровно наоборот.
О важности специализации
У множества разработчиков нет определенной специализации. По правде говоря, для большинства разработчиков специализация ограничивается выбором языка программирования, на котором они работают. Уверен, ты не раз слышал что-то вроде «пишу на С#» или «разработчик на Java». Но это нельзя назвать специализацией.
Из таких предложений очень тяжело понять, какую именно работу ты можешь выполнить. Я знаю, что ты программируешь на определенном языке, но каким разработчиком ты являешься? Что именно ты можешь делать?
Иногда человек боится быть привязанным к одной специальности, так как ему кажется, что он потеряет массу других возможностей, из-за этого он не хочет специализироваться на одной области разработки ПО. И хотя часть возможностей для тебя действительно будет недоступна, обязательно откроются новые.
Давай снова вспомним пример с адвокатом. Если ты стал просто адвокатом, то чисто теоретически каждый человек будет твоим потенциальным клиентом. Но вот проблема: люди не хотят покупать услуги обычного адвоката. Большинству требуются настоящие специалисты.
Если ты станешь специалистом, то у тебя будет намного меньше потенциальных клиентов, но зато они увидят в тебе профессионала, и им захочется купить твои услуги. И пока твою специализацию не выбрало много других разработчиков, у тебя не будет никаких проблем с поиском работы или клиентов.
О выборе специализации
Но если «разработчик Java» или «разработчик С#» не специализация, то что можно считать ею? Это довольно сложный вопрос, потому что ответ звучит так: «Все зависит от обстоятельств». Твоя специальность зависит от твоих целей и от рынка, на котором ты работаешь.
Давай рассмотрим еще один пример. Когда я только начинал карьеру, я называл себя «разработчиком ПО, специализирующимся на принтерах и принтерных языках». Очень… четкая, узкая специализация. В итоге я мог получить работу только в нескольких крупных компаниях. Но только представь, как производителю принтеров тяжело найти разработчика, специализирующегося на принтерах и языках для него.
Так я стал очень важным и ценным специалистом для определенного числа потенциальных работодателей. У этих работодателей не было представительств во многих городах, так что рынок покрывал весь мир только США, но он все равно был достаточно велик для того, чтобы моя специальность была полезной. Но если бы я не захотел переезжать с того места, где я тогда жил, то рынок моих услуг был бы слишком узким – скольким местным компаниям нужен разработчик с такой специализацией?
К счастью, тогда я был готов постоянно переезжать и работать в любом городе США, так что я смог извлечь из этого выгоду.
ПРИМЕЧАНИЕ. Правило специализации гласит: чем уже твоя специализация, тем меньше потенциальных рабочих мест и больше шанс получить работу.
Давай вернемся к твоей ситуации. Допустим, что ты ищешь работу в своем городе и ты Java-разработчик. В большинстве городских агломераций спрос на Java-разработчиков довольно высок, так что у тебя не будет проблем с поиском работы – ты получишь множество предложений от местных компаний. Но тебе нужно всего лишь одно рабочее место, а не множество.
Давай представим, что в твоем городе есть 500 свободных рабочих мест. Теперь представим, что ты решил сузить свою специализацию и выбрал область веб-разработки на Java. Возможно, теперь около 250 рабочих мест для тебя недоступны, но у тебя все еще есть остальные 250 мест. Довольно много, да? Помни, что тебе нужно только одно из них.
![](i_004.jpg)
Специализация уменьшает количество потенциальных вакансий, но повышает шанс устроиться на одну из них
Виды специализаций для разработчиков ПО
Разработчикам ПО доступно множество разнообразных специальностей. Конечно, можно выбрать специализацию на основе языка или платформы, на которой работаешь, но также существуют специальности на основе используемых методологий, технологий или отрасли работы.
Сначала тебе нужно определиться с тем, чем именно ты хочешь заниматься. Ты хочешь заниматься фронтенд-разработкой приложений, создавая и разрабатывая пользовательские интерфейсы? Ты хочешь разрабатывать связующее программное обеспечение, реализуя бизнес-правила и логику? Или ты хочешь стать бэкенд-разработчиком и работать с базами данных и низкоуровневыми операциями? Ты можешь выбрать все три варианта и стать фулстек-разработчиком, но в таком случае тебе нужно определиться с определенным стеком технологий. Например, фулстек-разработчик может специализироваться на создании ASP. NETMVC сайтов, используя С# и SQL Server.
Ты также можешь выбрать специализацию в области разработки встроенных систем: тебе придется работать с аппаратными устройствами и писать код, который будет выполняться внутри компьютера. Такие программисты решают задачи совершенно непохожие на задачи веб-разработчиков.
Еще одна специализация – это операционные системы. Бо́льшая часть разработчиков пишут приложения и программы для определенной операционной системы, например Windows, UNIX или MacOS.
Разработка мобильных приложений или разработка мобильной операционной системы – это тоже потенциальная область специализации. Спрос на разработчиков, занимающихся написанием приложений на iOS или Android, очень высок.
Некоторые программисты становятся специалистами, работающими с очень специфичными платформами или фреймворками. У таких разработчиков не так много рабочих мест, но зато они могут ставить на свои услуги высокий ценник. Ты заметишь, что низкоуровневые специальности включают в себя работу с очень дорогими платформами или фреймворками. Давай рассмотрим это на примере крупной немецкой компании SAP. Некоторые высокооплачиваемые сотрудники специализируются на разработке решений для клиентов и их реализации в этой системе ПО.
Области специализации:
• стек веб-разработки;
• встроенные системы;
• определенные операционные системы;
• разработка мобильных приложений;
• фреймворки;
• системы ПО.
Выбираем специализацию
Большинство разработчиков, которым я рассказываю о пользе специализации, соглашаются со мной; однако я часто получаю вопросы о том, как именно выбирать специализацию. Очень часто эта задача вызывает затруднение.
Ниже несколько вопросов, которые помогут тебе определиться со специальностью.
• Какими были основные проблемы компании, в которой ты работаешь или работал? Можешь ли ты стать тем человеком, который способен решить эти проблемы?
• Есть ли работа, которую никто не хочет выполнять? Есть ли недостаток хороших специалистов? Стань экспертом в этой области, и ты получишь множество предложений о работе.
• Какие темы чаще всего обсуждаются на конференциях или пользовательских группах?
• Если ты сидишь на сайтах вроде Stack Overflow, то на какие вопросы тебе приходится отвечать чаще всего? С какими проблемами сталкиваются твои коллеги?
Что бы ты ни делал, убедись, что ты выбрал определенную специализацию. Размер рынка поможет тебе понять, насколько узкой она может быть; постарайся сделать эту область максимально узкой. Тогда спрос на твои услуги будет намного выше. И не волнуйся: если будет нужно, ты всегда можешь сменить специализацию. Например, я больше не специализируюсь только на разработке ПО для принтеров. Я также знаком со множеством разработчиков, успешно сменивших свою специальность.
Например, мой хороший друг Джон Папа (John Papa) изначально специализировался на Microsoft Silverlight. Спустя несколько лет, когда он ушел из Microsoft Silverlight, он начал работать с одностраничными приложениями.
О программистах-универсалах
Каждый раз, когда я затрагиваю тему специализации, я встречаю сопротивление. Думаю, здесь необходимо уточнение: хоть я и рекомендую иметь специализацию, это не означает, что тебе не нужно иметь и развивать другие навыки.
Тебе может показаться, что эти два утверждения противоречат друг другу, но на самом деле это не так. Быть эрудированным и разносторонним разработчиком очень хорошо. Способность использовать разные программы, технологии и языки программирования сделает тебя более ценным специалистом. Но очень сложно позиционировать себя как мастера на все руки.
Очень удобно иметь разработчика, который может выполнить любую работу, но обычно клиенты или компании ищут других людей. Хотя ты отлично знаешь все виды программ, технологий и владеешь 50 языками программирования, тебе все равно необходимо выбрать специализацию. Ничего страшного, если со временем ты поменяешь ее.
Учись столько, сколько сможешь, и стань гибким специалистом, но всегда имей специализацию, делающую тебя особенным и уникальным. Если ты не можешь выбрать между двумя вариантами, то начни с того, на чем ты специализируешься именно сейчас; ты можешь изменить свое решение в любой момент.
УПРАЖНЕНИЯ
• Перечисли разные виды специализаций для разработчиков ПО, которые представляют для тебя наибольший интерес. Начни от широких и постепенно сужай специализации. Сколько специальностей получилось выделить?
• Какова твоя текущая специальность? Если ты еще не определился, то подумай о том, в какой области ты мог бы специализироваться.
• Посети популярный сайт по поиску работы и поищи предложения по твоей специальности. Подумай над тем, как будет развиваться твоя карьера: твоя специализация ограничит тебя или, наоборот, даст преимущества перед другими?
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?