Как стать профессиональным разработчиком

0
965
views

Перевод статьи «Becoming A Software Developer».

Меня часто спрашивают, как стать разработчиком. Я не училась разработке в университете, но я зарабатываю ею на жизнь. Также я пробыла 3,5 года наставником в Lighthouse Labs — компании, организовывающей курсы по программированию. На моих глазах (и, смею надеяться, с с моей помощью) сотни людей разного возраста, с разными бэкграундами, становились разработчиками и находили работу.

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

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

Соберите побольше информации о том, во что вы собираетесь ввязаться

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

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

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

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

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

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

Знакомьтесь с как можно большим количеством людей

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

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

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

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

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

Поищите митапы по языкам программирования, которые вам интересны. Если в вашей местности подобных встреч не проводят, вливайтесь в онлайн-сообщества. Вы можете найти slack или discord сервер по любому языку программирования. Люди в таких сообществах обычно очень дружелюбны к новичкам (по крайней мере, в сообществах Ruby, Elixir и Clojure, которые я всячески рекомендую).

Учитесь программированию публично

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

Мой самый первый собственный проект — точная копия лэндинга Google, созданная при помощи HTML and CSS. Моим первым приложением была игра в блэкджек (фреймворк Sinatra). Я также делала клоны Twitter и Reddit на Rails и маленькие браузерные игры вроде Pacman на разных фреймворках JavaScript. Некоторые из этих проектов все еще хранятся на моем GitHub-кладбище (это на случай, если вам хочется посмотреть, что я понимаю под словом «паршивые»).

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

Поищите онлайн-руководства по созданию интересных для вас проектов. Если не знаете, с чего начать, The Odin Project и Free Code Camp предлагают бесплатные программы с довольно реалистичными дорожными картами. Я проходила обе программы частично, но ни одну не закончила. Я также прошла несколько бесплатных курсов на Coursera и edX. Оба ресурса просто потрясающие, но будьте осторожны и не превратитесь в вечного студента. На этих платформах вы найдете настоящие университетские курсы, что очень интересно, но мало связано с тем, чем вы будете заниматься на настоящей работе.

Если ваша цель — начать с нуля и в конечном итоге зарабатывать себе на жизнь разработкой, причем пройти этот путь как можно быстрее, я советую придерживаться более целенаправленных дорожных карт (как у The Odin Project и Free Code Camp).

Есть также бессчетное число платных курсов разного качества и с разными ценами. Возможно, имеет смысл потратиться на какие-нибудь из них. Например, я заплатила за несколько месяцев обучения в Launch School, и это был самый большой рывок в моей карьере. Я от всего сердца их рекомендую. Курсы стоили порядка 200 долларов в месяц, но пара сотен долларов — не самая большая инвестиция в свою карьеру. Также эти и многие другие курсы предлагают отсрочку оплаты.

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

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

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

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

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

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

Изучайте лучшие подходы

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

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

Почитайте книгу «Программист-прагматик» Дэйви Томаса и Эндрю Ханта, и еще что-нибудь, написанное Сэнди Метц. Посмотрите выступления Рича Хики (особенно «Simple Made Easy«) и Сары Меи «Livable Code«. Другие классические труды, которые тоже стоит почитать, — «Domain Driven Design» Эрика Эванса и «Рефакторинг» Мартина Фаулера. Конечно, есть множество других книг, и у каждого свое мнение о том, какие должны входить в обязательную программу, но я рекомендую эти. Они дадут вам надежную основу и понимание, что дальше читать и смотреть.

Не затягивайте с началом поиска работы

Как только научитесь писать код, который в принципе работает, начинайте искать работу.

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

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

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

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

Не будьте слишком переборчивы (поначалу!)

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

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

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

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

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

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

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

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

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

Программист работает в обеденной зоне
Photo by Irvan Smith on Unsplash

Будьте хорошим учеником

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

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

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

Есть вещи, которые можно узнать только работая над реальным проектом. Обращайте на них внимание. Примеры таких вещей:

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

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

И, самое главное, никогда не переставайте учиться.

Вот и все

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here