Эта статья — перевод оригинального поста Сика Худеиба, который недавно решил резко изменить свою жизнь, сменив профессию с учителя на программиста.
От автора: Моя история — о том, как у меня получилось с нуля начать карьеру frontend-разработчика, не имея никакого специального образования или опыта. Я учился самостоятельно, одновременно работая по 8 часов в день. Через 10 месяцев я получил работу по новой специальности.
Желание стать разработчиком
Оно возникало исподволь, постепенно становясь все крепче: я читал статьи, подобные этой, и мне хотелось начать карьеру в IT. Правда, изучая рассказы энтузиастов, которые добились, чего хотели, я не слишком верил их словам. Казалось, что все эти люди какие-то особенные, а я — нет, поэтому не стоит и пытаться.
С тех пор я понял, как это все работает. Нет никаких особенных людей, которые могут стать программистами и делают это. Я не хочу сказать, что процесс превращения в кодера простой, поскольку это, конечно, не так. Но стать разработчиком, вероятно, может каждый; во всяком случае, нужные задатки есть почти у всех нас. Вам придется много работать, постоянно учиться, быть терпеливым. Будут и моменты отчаяния, когда кажется, что ничего не выйдет, нужно все бросить и заниматься тем же, чем раньше. Но в итоге, если все сделано правильно, вы добьетесь того, чего так желаете.
Добавлю, что, когда я начинал, у меня не было не только знаний по специальности, которую я хотел получить, — не было и особых средств для того, чтобы закончить дорогие курсы. Я не студент и не школьник, мне нужно было работать на прежней работе, чтобы обеспечивать себя. Несмотря на это, у меня все вышло как надо, поэтому мне кажется, что и у вас тоже может получиться. Почему нет?
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».
Skillbox рекомендует: Онлайн-курс «Профессия Frontend-разработчик».
Начало
До момента, когда я написал первую строку своего кода, я никогда не делал ничего подобного и особо ничего не знал о программировании, да и об IT в целом. В начале пути моим выбором стал ресторанный бизнес, им я был занят с младых ногтей. Затем я получил музыкальное образование, а непосредственно перед тем, как стать кодером, работал преподавателем в Испании. Я не особенно хорошо разбирался в компьютерах. Но мне всегда было интересно узнавать о технологиях. Я думал о программистах как о героях нашего времени. Может быть, потому, что кодинг казался мне элитным занятием, которое доступно лишь людям, которые получили необходимое образование в топовых университетах. Поэтому я просто считал порог входа в программирование слишком высоким для себя.
Момент, когда появилось твердое решение
Моя девушка как-то затронула тему о малом проценте женского пола в технологических специальностях. Она решила исправить ситуацию хотя бы немного и стать программистом. Частично — потому, что ей хотелось стать примером для своей семьи, особенно младших ее членов.
После того как она мне об этом сказала, я тоже задумался. Мы обнаружили, что есть большое количество ресурсов, которые можно использовать для обучения. Да, справедливости ради скажу, что моя подруга до того, как стать программистом, работала HR. И в итоге она получила приглашение из технологической компании по новой своей специальности на месяц раньше меня.
До того как начать обучение, мы увидели детскую книгу о программировании в музее искусств. В книге рассказывалось об HTML. Мы пришли домой, открыли Блокнот и написали
Hello, world
, после чего запустили получившееся в браузере, заменив цвет changed color: red. У нас все получилось, и мы были просто очень довольны.В итоге именно этот случай привел к тому, что мы оба стали программистами.
Предыдущая работа
В момент, о котором я рассказываю, я обучал восьмилетних детей английскому языку. Мне, в принципе, все нравилось; мой случай отличается от ситуации, когда вы бросаете ненавистную работу, чтобы начать жизнь с нуля. Нет, у меня было все хорошо. Но иногда случается, что, даже если вам все нравится, приходит время что-то изменить, двигаться дальше. Я решил начать новый этап своей жизни и выйти из зоны комфорта.
Путь к успеху
В принципе, этот путь сложно найти, вряд ли он вообще существует. Можно нащупывать дорогу, но не более. Путь к программированию мы начали втроем (да, я, моя девушка и еще один хороший друг). И мы стали тем, кем хотели, — все мы сейчас разработчики. При этом мы использовали материалы и методы, которые подходили каждому из нас, и наши пути были разными.
Старт
На самом первом этапе я начал читать о программировании и смотреть видео на YouTube, для того чтобы что-то понять. Затем стал изучать HTML и CSS. Ничего особенно серьезного, это была почти что игра. Далее я решил просматривать туториалы и создавать то, чему они учили, — это были базовые страницы. Это помогло мне попасть в струю.
Установка цели
Мы с друзьями помогали друг другу советами и моральной поддержкой. Это было очень неплохим подспорьем.
Кроме того, я постарался установить для себя цель — сформулировать ее максимально четко, убрав все лишнее. Я решил изменить карьерный путь не резко, а постепенно, шаг за шагом идти к новому. У меня не было стороннего источника дохода, так что я не мог бросить работу на время обучения, до того момента, пока не получу новую.
Я решил, что frontend станет тем, к чему я стремлюсь, — мне показалось, что порог входа здесь не слишком высокий. Поэтому я сузил свои поиски и сфокусировался на получении опыта и знаний, которые нужны именно в этой сфере. Причем мне больше нравилось и нравится работать в компании, а не идти по пути фрилансера.
Итак, цель есть, теперь нужно установить дедлайн. Мне не хотелось записать свою цель и забыть о ней, поэтому нужно было сделать ее как можно более реалистичной. Я начал в 2017 году, поэтому решил, что через год, в 2018-м, я должен найти работу в новой для себя специальности.
Было бы наивно притворяться, что на этом этапе я полностью все контролировал и был сверхуверен в своих силах. Вовсе нет. Мне было немного страшно, поскольку изменения в карьере были слишком уж серьезными. У меня возникали все сомнения, которые только могут появиться в подобной ситуации. Но ключом была уверенность в том, что мне нужно закончить начатое. Я принял решение и шел до конца.
Обучение
Было понятно, что единственный правильный для меня путь — это обучение. Поскольку я работал целый день, у меня было не слишком много часов на это. Поиск времени привел к тому, что я структурировал свои дни, воспользовавшись таким ценным ресурсом, как выходные. В этот период мои типичные суббота и воскресенье выглядели вот так:
8:00 — подъем, завтрак
8:30 — обучение и кодинг
12:30 — спортзал
13:30 — ланч, отдых
15:00/16:00 — обучение и кодинг
20:00/21:00 — завершение дня
У меня был еще и отпуск, которым я не преминул воспользоваться — в это время я учился каждый день. Да, лето пролетело мимо меня, но оно того стоило.
Пришел сентябрь, и я снова вышел на работу. Я решил немного сократить свой рабочий день, осознавая, что мой доход сократится. Но зато это должно было дать мне немного больше времени на обучение. Это был очень серьезный шаг, который повлиял на все мое будущее, и я не жалею о своем решении.
Сложно описать словами, насколько мне было сложно отрываться от своего кода. Все, что я хотел, — просто вернуться за компьютер и продолжать работу. К сожалению, у меня было все меньше и меньше времени на обучение, поскольку преподавание требовало максимального участия. Даже учитывая свой высокий уровень мотивации, я ничего не мог поделать.
Моя активность на GitHub в октябре
Тем не менее вы можете видеть по картинке выше, что я пытался находить свободное время и ресурсы мозга. Иногда получалось, иногда — нет. В некоторых случаях я даже терял мотивацию, что, правда, не продолжалось долго. Это было сложно, но все же я продолжал выполнять задуманное. Я поддерживал необходимый ритм, пока не пришлось уехать в Мадрид — это было за несколько месяцев до наступления дедлайна.
Инструменты и ресурсы
В течение всех 10 месяцев я занимался поиском релевантных моей задаче ресурсов. Так, я задавал вопросы в Twitter, спрашивал знакомых, искал информацию в сети. В итоге получилось вот что.
Часть из списка по ссылке вот:
- freecodecamp.org;
- Cassidy Williams и Colt Steele’s Udemy;
- Wes Bos’ JavaScript 30 и другие курсы;
- YouTube: Traversy Media, LevelUpTuts;
- Christina Truong’s Lynda.com;
- Udacity Front-End Nanodegree.
Курсы — это хорошо, но сами по себе они не могут сделать вас специалистом, нужны и другие инструменты. Вот мои:
- Twitter — мне очень помогали в сообществе #100DaysOfCode.
- GitHub — собственно, здесь описывать особо нечего. Все и так ясно.
- Портфолио разработчиков — я просматривал их, изучая то, что нужно мне для погружения в новую профессию.
Работа
Удивительно, но найти работу по новой специальности оказалось гораздо проще, чем я думал. Я не рассылал тысячи резюме и не искал часами вакансии. Я старался бить точно в цель — выбирать именно то, что интересно и релевантно.
В итоге у меня было пять интервью. Одно я не прошел, мне отказали, на втором я завалил выполнение финальной задачи. Успешно прошел три и получил сразу три оффера. Один из них был чрезвычайно непривлекательным. Два других были хороши, оставалось только выбрать.
Получение работы я описал кратко, но поверьте, ее поиск был насыщенным временем. При этом я до сих пор не до конца понимаю, являются ли мои знания и опыт конкурентоспособными или нет. В общем, было сложно, но в то же время интересно. Когда я получил два приглашения, то даже не поверил в это. До сих пор успешное завершение этого квеста вызывает удивление у меня самого.
Кстати, об интервью: у двух компаний они были очень разными. В одном случае это была серия видеозвонков различным сотрудникам компании. Она небольшая, но у нее отличная команда. Именно они дали мне один из двух хороших офферов.
Вторая компания оказалась стартапом, который находится где-то на середине своего пути к успеху. После телефонного интервью они дали задание, которое я успешно выполнил в течение нескольких дней. Мне нужно было создать компонент с включением API-вызовов и отобразить в итоге правильные данные. Затем состоялся видеочат, и я рассказывал о том, что сделано, как и почему. Уже после меня пригласили на личное интервью, и я присоединился к команде в качестве junior frontend.
В первый свой рабочий день в Мадриде я выпил утренний кофе, зашел в новый офис и представился. Так начался мой новый путь, моя новая карьера.
Skillbox рекомендует:
- Практический курс «Профессия веб-разработчик».
- Практический курс «Мобильный разработчик PRO».
- Практический годовой курс «PHP-разработчик с нуля до PRO».
Комментарии (25)
Taliesien
25.10.2018 14:39+3Хорошая статья. Хороший жизненный опыт и есть мотивация.
Суровая реальность выглядит же так: придумаем Васю в кубе. Ему перевалило за n-лет. У него есть работа, в которой он являетесь если не профессионалом, то специалистом. Работа его кормит и одевает. У него есть семья, дети, ипотека. Планы на новый телевизор/машину/стиралку/кровать/зимние ботинки. У него может быть супруга в декрете, и вся семья кормится с его зарплаты. Допустим, что он человек упорный, трудолюбивый. Мало спит ночами и может себе позволить смотреть, видео гайды по языкам и фреймворкам, когда семья спит. Допустим у него есть возможность на работе уделять время самообучению. В конце концов можно ездить на метро и в поездке смотреть/читать материалы. Чему можно обучиться самостоятельно? Ну, думаю, на уровень джуна реально. И вот наш Вася решил сменить карьеру и достиг уровня, когда не стыдно идти на собеседование. И какие же проблемы ему могут встретится?
1)Снижение уровня жизни. З/п джуна может быть много ниже текущей. Перейти на новый уровень может быть весьма проблематичным, а в рамках одной компании и вообще маловероятно. В любом случае, семье придется ограничить свои потребительские потребности. Если это возможно, и не висит над головой домоклов меч ипотеки.
2) Риск вообще остаться без работы и оставить себя и семью в нелучшей ситуации, по уши в долгах. Одно дело устроиться на работу. Важно на ней ещё и задержаться. А если ты джун проваливший испытательный срок (на последнем месте отработал, менее 3х месяцев) то вероятность, успешных собеседований в перспективе заметно падает.
Но. И это поправимо. Вася может быть холостой. Или иметь понимающую жену. Или иметь значительные накопления, которые вполне реально инвестировать в будущую карьеру.
3) Провальные собеседования не вине Васи. ВУЗы ежегодно выпускают армии юных дарований, желающих повторить успех ФБ или ЭнгриБедс. И на собеседовании, отдадут предпочтение более молодому и с корочкой, чем не молодому и без корочки, если они показали одинаковый уровень знаний. Всё это может здорово сказаться на вере в себя, загнать в стресс, и как следствие даже подорвать здоровье. Герой статьи устроился почти сразу. Не знаю, повезло ему или нет. На своей шкуре испытал, что такое менять карьеру. Это ад. И те кто через него прошел и в конце получил свой хэппиэнд — герои.
Собственно, я страшилки вначале написал, чтобы пояснить, что люди решившиеся уйти на строну добра (писать код) посреди своей карьеры, обладают мужеством. Не каждый сможет. Так что, всем юным подаванам желаю удачи. Если вы хоть чего-то стоите в этом мире, вы пройдет путь к успеху. Даже если начало будет тернистым. К провальным собесам относитесь оптимистичнее. Это опыт, который вы будете использовать на следующих собесах. Пусть это станет ещё одним уроком, а не ударом. В этой жизни очень мало того, что невозможно сделать, а там где смог один, сможете и вы.unsignedint
25.10.2018 15:33Снижение уровня жизни
Вы это про Россию или вообще? Средняя зарплата по РФ ниже чем зарплата джуна, скорей будет повышение уровня жизни. У меня есть знакомый, всю жизнь работающий сборщиком электрошкафов, зп около 40 тыщ, и это в МСК.
edogs
25.10.2018 22:39Снижение уровня жизни. З/п джуна может быть много ниже текущей.
Вот это самая жесть на самом деле. И чем дальше, тем хуже. Только у нас с другой стороны немного.
Мы на фрилансе еще с 90-тых годов (php/mysql, прикладной фронтэнд и админство) и в офисах с той поры не работали вообще.
Фриланс зарплаты вполне хватает, но стеклянный потолок как и по зарплате так и по скиллам так и по возможности переезжа непрошибаем уже лет 10 как. Приятными плюшками является свободный график и свободный отпуск когда хочется. Но убивает отсутствие как прогресса, так и перспектив.
Периодически пролистываем вакансии в офисах, даже пару раз отправляли резюме и собеседовались в скайпе, но прокачка на фрилансе настолько принципиально отличается от офисной прокачки, что нам предлагают за фулл-тайм в офисе в 4 раза меньше чем мы сейчас на халф-тайме получаем на фрилансе. Сколько времени займет рост до соразмерной зарплаты сказать сложно, но если трезво рассудить — вряд ли меньше нескольких лет сидения в офисе вместо достаточно свободного времяпрепровождения.
Так-то по сути это безвыходка. Наиболее банальный совет делать фирму — не вариант, т.к. управление фирмой это совершенно другая деятельность чем программирование.
Drag13
25.10.2018 14:41+2Ребята, ну не вставляйте рекламу внутри статьи, пожалуйста. Это сбивает и вызывает только раздражение, вместо желанмя сказать спасибо за перевод. Не портите сами себе статьи.
nexus478
25.10.2018 15:33А что можно учить 10 месяцев во фронтенде, еще и по 8 часов в день? Я имею в виду не в общем, а для получения оффера junior.
unsignedint
25.10.2018 15:44почти как у меня все было. Закончил институт в 2004-м, устроился инженером. Обнаружил что моя инженерная зарплата на целых 2% ниже чем у слесарей. Мне это не понравилось, я начал пушать по этому поводу начальство. Через год зарплату подняли, и она сравнялась с зарплатой слесарей(есть подозрение что из за округления до ближайшей сотни). Инженеры с опытом получали больше конечно, но не сильно, может быть +10% к зарплате слесаря. Поняв что нечего ловить работая инженером, купил себе ноут, за месяц на работе в обеденные перерывы выучил С, по распечатанной с интернета книге, пописал хелло ворд, потренировался в стамине и пошел искать работу. Первую работу нашел по принципу куда взяли, ну а дальше уже все итеративно, эмбеддед, серверы, C#
Taliesien
25.10.2018 16:33+2Такие комментарии вызывают во мне чувство неполноценности. 6 лет назад, я 2 года оббивал пороги всяких контор занимающихся разработкой. Хотя тестирование и фронтенд, меня мало прельщали и их старался обходить, начав с С#. Вообще в веб не хотелось погружаться. За плечами около десятка безуспешных собесов.
И вроде не дурак. И не сказать, что плавал по ответам. Я мог бы про это статью написать, но это будет нытье уровня Задолба! ли. В конечном итоге стал 1Сником (Внезапно!). А уж зацепившись ноготком, за 3 года с небольшим вытащил себя до начальника отдела ИТ небольшого завода.unsignedint
25.10.2018 16:43+1может порог входа был слишком большой? Я начинал с эмбеддед уровня микроконтроллеров с 10 кб флеша и 256 байтами оперативы. Сильно много не накодишь. Потом уже начал ходить по собесам. Помню как на одном собесе открыл для себя что есть такая штука как stl и что delete и delete[] отличаются ;-) В общем тогда я пошел ботанить дальше, и через два года таки устроился в американскую компанию, достаточно известную и крупную.
Taliesien
25.10.2018 16:50Сложно сказать. Тут может быть много причин, часть из которых не в пользу моих софт скилов.
Как надоест автоматизировать бизнес, пойду на низкий уровень, биты пересчитывать.
BigFlask
25.10.2018 19:50Хотя тестирование и фронтенд, меня мало прельщали и их старался обходить, начав с С#. Вообще в веб не хотелось погружаться.
И ты так и не понял, в чем была твоя ошибка?
Lazytech
25.10.2018 17:28Как мне кажется, история смахивает на красивую сказку. Я как раз в последнее время пытаюсь самостоятельно освоить Python хотя бы на уровне «чайника». Несмотря на знание азов программирования и базового знания пары языков программирования, относительно простых для освоения, новый язык дается со скрипом. От многочисленных синтаксических конструкций голова пухнет…
Позанудствую насчет перевода (осторожно, многабукаф)Заметил неточности в переводе, в частности, в расписании:
8:00 — подъем, завтрак
8:30 — обучение и кодинг
12:30 — спортзал
13:30 — ланч, отдых
15:00/16:00 — обучение и кодинг
20:00/21:00 — завершение дня
Заглянем в оригинал:
8:00 am: Wake up, breakfast.
8:30 am: Start coding
12:30 pm: Go to the gym
1:30 pm: Have lunch, then a break
3:00/4:00 pm: Continue coding
8:00/11:00 pm: Finish for the day
Попробую подправить:
8:00 — подъем, завтрак
8:30 — начинаю программировать
12:30 — спортзал
13:30 — обед, отдых
15:00/16:00 — продолжаю программировать
20:00/23:00 — заканчиваю программировать на сегодня
Сначала хотел перевести coding как «кодить», но потом решил не использовать жаргон.
Предположительно, время до косой черты относится к субботе, а после косой черты — к воскресенью.
Вот еще фрагмент статьи:
В итоге у меня было пять интервью. Одно я не прошел, мне отказали, на втором я завалил выполнение финальной задачи. <...>
Сравним с оригиналом:
In the end I entered five interview processes. I got rejected from one, and failed to finish the take-home challenge of another. <...>
Обычно перевожу interview как «собеседование», поскольку вариант «интервью» слишком жаргонный.
Строго говоря, выражение failed to finish the take-home challenge означает, что кандидат не справился с «домашним заданием», которое выполняется уже после собеседования (что называется, на дому), поскольку на его выполнение может потребоваться много времени. Подробнее о take-home [coding] challenge см. в этой статье:
The Ultimate Guide to Kicking Ass on Take-home Coding ChallengesBigFlask
25.10.2018 20:02Я даже не говорю про Spring, Hibernate. Ты просто посыпешься с первых вопросов каких-то основ CS, которые ты просто обязан знать, ты даже телефонное интервью не пройдешь тебе позвонят и будет диалог:
— Наследование и виртуальные функции?
— Эээ, ну это функции virtual box. Наследование — это, когда дед квартиру оставил.
— Хэш как структура данных.
— Ну там хэш это по английски гашиш, вооот.
— N*log(N) в дереве, почему это так?
— … (синий экран смерти в голове Влада Бахмана).
— Молодой человек — мы вам перезвоним.
Возможно, начинать ходить по собеседованиям стоит не после пары недель самоподготовки, а поучиться чуть подольше, например, пару месяцев? Когда будешь уже немножко понимать в хеш-таблицах, деревьях, сложностях алгоритмов и принципах ооп? А то как-то глуповато пытаться устроиться на работу на следующий день после изучения цикла for.
shalm
25.10.2018 22:48Вполне реально изучить за полгода программирование, особенно если склад ума математический и нравится решать логические задачи.
GarfieldX
26.10.2018 16:19Синтаксис — да, но не более. И то спорно, т.к. для освоения/осмысления/понимания синтаксиса чтобы уметь его применять нужен практический опыт. При этом все равно на выходе получится кодер, а не разработчик. Основной навык разработчика — уметь создавать точные алгоритмы, т.е. формировать правильную последовательность действий для решения задачи. За полгода такой навык не прокачать. А frontend — это как конфеты в обертку заворачивать, где основную работу делает backend-разработчик. Особой логики тут не требуется.
Neikist
26.10.2018 16:27А еще нужно отдельно уметь писать читаемый, расширяемый, гибкий и поддерживаемый код. И… На самом деле хотел начать писать но поленился, чтобы заявлять что изучил программирование нужно знать заметно больше. Я вот с ПК познакомился впервые лет 8 назад, лет 6 назад начал писать хелло ворлды, уже 4 с копейками года работаю программистом, экспериментирую с кодом, читаю книги, статьи, посматриваю по сторонам (другие технологии), слушаю подкасты, немного знаю о процессах (скрам, канбан, аджайл, водопад и вот это все, но тут совсем немного) и то только в самом начале изучения программирования.
GarfieldX
26.10.2018 17:48Как правило все это вытекает как раз из умения строить точные алгоритмы :) Если в голове порядок, то и в коде получится. «Процессы» — на мой взгляд вообще зло. Это из разряда «благими намерениями...».
shalm
26.10.2018 19:14Сформировать последовательность действий необходимых для решения задачи можно не зная синтаксис яп и обычно есть много разных способов достичь результат, когда человек имеет большой опыт в программировании он делает всё быстро, потому что может разобрать сложную задачу на элементарные, которые ему в основном уже будут знакомы.
chuikoffru
26.10.2018 00:28Интересная история. С 2008 по 2011 начинал карьеру на фрилансе фронтенд ( хотя тогда это так не называлось кажется), с 2011 ушёл в предпринимательство вплоть до 2015. А там армия. Точнее. Я полтора года судился с военкомом чтобы заменили ВС на АГС и полтора года ждал назначения. Пока ждал направление работал сисадмином, подрабатывал сайтиками. Сейчас на АГС работаю дворником в детской больнице. Работа не напряжная, в течение дня куча времени чтобы кодить. Так же стало лучше здоровье за счёт чередования физической и умственной работы.
Как и герой этой статьи поставил цель — к концу АГС (март 2020) устроится как iOS разработчик. Для этого сейчас встаю в 5 утра, чтобы иметь 1,5-2 часа дополнительного свободного времени перед работой для обучения. Наметил проекты которые хочу реализовать для себя и для портфолио. Хотя имею определенный бэкграунд в сфере ИТ, в отличие от героя статьи, сфера мобильной разработки для меня новая, плюс время предпринимательства и сисадминства не сильно способствовали профессиональному росту в коде, по крайней мере не так как фриланс.
maaGames
Всегда есть Китаец…