Веб разработка
Как стать программистом
5 мая 2020
В этом посте я хочу поделиться с вами опытом смены карьеры в сфере аналитики на программирование. Я прошла этот сложный, длинный и непростой путь, но боже, какой же всё-таки увлекательный, и мне есть, что вам посоветовать. Также этот пост будет интересен и тем, кто хочет кардинально поменять свою профессию.
Менять карьерную лестницу, по которой вы шли годами, мягко скажем, непросто по многим причинам. Во-первых, неужели всё, чем я занимался до этого, мне не пригодится и это значит, что я "выкину" весь опыт, который доставался мне и так нелегко? Во-вторых, у многих уже есть какие-то жизненные обязательства (семья, ипотека, место жительство, денежные трудности), которые просто не могут позволить "всё бросить" и начать заниматься чем-то новым. В-третьих, страх: а что если не получится и всё пойдёт наперекосяк? Может лучше не искать счастье за забором, а ценить то, что уже есть сейчас?
Оглядываясь назад я просто хочу написать кратко следующее:
- Опыт "выкинуть" невозможно, он всегда будет с вами и будет полезен всю жизнь! Думаете, насколько мне сейчас очень пригождается вычислять площадь поверхности бутылки Клейна в n-мерном пространстве? В явном виде, конечно же, никогда. Однако, каждый день мой мозг говорит мне спасибо за тот опыт. Благодаря тому, что мозг отлично натренировался на тех задачах, сейчас может справляться с другими. Тем более, вы не можете заранее знать, как и где ещё может пригодится ваш прошлый опыт.
- Обстоятельства будут мешать всегда. Непременно нужно всё взвесить. Если честно, то лично мне было очень страшно. В таком случае обязательно иметь поддержку близких, если вы всё-таки решились предпринимать какие-то шаги! В одиночку довольно сложно, не говоря уже о сопротивлении. Воспользуюсь возможностью и ещё раз поблагодарю своего супруга и лучшую подругу, что не только поддерживали меня, но давали пинки и развеивали все мои страхи и сомнения в нужную минуту! Тут даже не передать словами, насколько это важно! С поддержкой близких людей никакие обстоятельства вас не смогут остановить.
- Если вы задумываетесь о другом направлении, это уже значит, что на текущей позиции что-то уже не так (нет интереса, не нравятся условия работы). Вернуться в ту же сферу можно всегда и в любой момент. Так как мы проводим на работе бОльшую часть своего времени, стоит ли его проводить на истощении? Или же стоит получать заряд энергии от того, чем вы занимаетесь?
Теперь давайте поговорим более предметно. Я уже десятый месяц работаю Go разработчиком, но моя статья не будет никак привязана к какому-либо языку программирования, чтобы оставаться максимально полезной для всех.
Наверное самый главный вопрос, на который нужно ответить, это получаете ли вы драйв от процесса разработки. Этот процесс включает в себя не только написание кода, но и постоянное изучение новых материалов, статей, технологий, курсов и так далее. Если вы этим позанимаетесь, то вам потом хочется полежать и прийти в себя или же вас это заряжает? Если второе, то тогда идите вперёд и не думайте больше ни о чём! Если же первое, то боюсь, нужно оставить эту затею. Я до сих пор верю, что у человека лучше всего получается то, что он любит делать, даже если у него нет особых талантов (знаю, клише :)).
Итак, какой же путь подготовки? Допустим, вы решили стать программистом, и вам правда это очень интересно. С чего же начать? Да, это самое трудное! Начать! Когда я села и начала рандомно что-то читать и решать первые попавшиеся задачи, то через полчаса мне уже хотелось всё это бросить. Приходило уныние от того, сколько ты всего не знаешь и ещё предстоит узнать, опускались руки. Мне повезло, что моя подруга тоже прошла этот пусть и задала мне направление! После этого всё пошло, как по маслу!
Поехали!
- Выберете язык программирования, на котором вы будете решать задачи и готовиться к собеседованию. Я рекомендую освоить Питон, как самый универсальный язык, который должны знать все. До момента подготовки к собеседованиям, я уже освоила азы Go и, честно скажем, влюбилась в этот язык. Но пообщавшись со знакомыми в сфере разработки и просмотрев вакансии, мне было понятно, что начальных позиций именно на Go программиста очень мало. В связи с этим я прошла курс Python for Beginners (правда он ещё не закончен, но мне хватило) и готовилась решать задачки именно на Питоне. Также на Coursera есть отличная специализация по Питону Python for Everybody. Если вы владеете хотя бы одним языком программирования, то разобраться и выучить остальные не должно составить труда. Не стоит сразу привязываться к какому-либо языку в самом начале. Потом у вас появятся свои предпочтения.
- Обязательно нужно освоить такую тему как Алгоритмы и структуры данных. Проверять знания по этим темам на собеседованиях будут 100%. Очень рекомендую специализацию Data Structures and Algorithms на Coursera (первые два курса must have). Лично мне очень понравились эти курсы больше всего тем, что после каждой темы нужно решить достаточно большое количество задач. Задачи варьируются по уровню, но в основном они непростые. Своё решение (код) нужно скопировать в специальное окно. Дальше оно тестируются не только на корректность (обязательно ещё и по разным граничным случаям (!), не забывайте об этом), а также насколько эффективный вы предоставили алгоритм. Для тех, у кого есть финансовые трудности, на каждый из курсов любой специализации вы можете подать на финансовую помощь! Обычно нужно ответить развёрнуто на пару вопросов. В Coursera отличная и понимающая команда и всегда предоставляют бесплатный доступ к курсам, если у вас на это веские личные причины. Тут только очень важно быть искренним.
- После прохождения курсов из пункта 2 можно уже прям смело решать задачи на таких сайтах, как LeetCode, HackerRank, Code Forces, CareerCup, Geeks For Geeks. Чтобы занятия были эффективными, старайтесь заниматься каждый день. Конечно, часто не будет хватать времени, но если вы возьмёте за правило решить минимум одну задачку в день, то так вы сможете быстрее увидеть результаты ваших трудов.
- Настольная книга для начинающего (кстати, и не только) разработчика в поисках работы: В ней собрана вся основная теория и огромное количество задач с решениями. Это просто кладезь полезной информации! Уверена, что эту книгу я буду доставать перед любым поиском работы вне зависимости от текущего уровня.
- Очень будет здорово, если вы сможете создать собственный pet project. Pet project это не только строчка в резюме, но также и великолепная возможность попрактиковаться на реальном проекте и показать, чему вы научились. Моим личным проектом стал этот сайт, на который вы сейчас смотрите. Для того, чтобы его сделать, мне пришлось изучить frontend (HTML, CSS, JS), backend (Go, MongoDB), а также системное администрирование (частично об этом было написано здесь). Например, моя подруга разработала онлайн игру и показала, насколько круто она разобралась в сложных алгоритмах на стыке frontend и backend. Может вам захочется написать бота для Telegram или Slack? Или сделать CRUD приложение (create, update, delete)? За идеями можно всегда обратиться к друзьям, знакомым или к сообществу (см. п. 7).
- Делитесь своими наработками на GitHub и обязательно оставьте ссылку на свой профайл в резюме. Это так называемое портфолио разработчика (как у фотографа и дизайнера), которое вас непременно попросят показать. Открыв профайл, сразу можно понять насколько чистый код пишет программист и какие у него интересы.
- Станьте членом сообщества! У питонистов есть зарубежное крутое сообщество в Slack, и конечно же у Go-шников Gophers. Российское Go сообщество доступно по ссылке GolangRussian. Популярное сообщество для data scientists в России ODS. Уверяю вас, что приветливее, добрее и отзывчивее людей, чем разработчики, я не встречала. Будьте активными, задавайте вопросы, найдите единомышленников для совместных проектов или изучения чего-либо. Так вы обретёте новые знакомства, в чатах вы сможете попросить кого-нибудь поревьюить (проверить) ваш код или даже весь pet project. Благодаря одному такому прекрасному ревьеру, я смогла сильно улучшить свою кодовую базу и уже было не так стыдно иметь её на своей странице GitHub.
- Проведите с кем-нибудь сессию парного программирования! Этот пункт я на себе не испробовала, однако, его советуют всем начинающим. Во время такой сессии вы поймёте как мыслит опытный разработчик, чем руководствуется, когда возникают проблемы. Да и в конце концов, как дебажит свой код при поиске багов 🙂 Таких программистов для парных сессий вы сможете найти в сообществах, но есть и платные ресурсы. Мне понравилась эта статья по данной тематике.
- Ну и самое главное напоследок! Если вы дошли до 6 пункта, не стоить натаскиваться до победного на задачи. Сразу рассылайте уже резюме! Как вы поймёте, что вы идёте в нужном направлении? После своего первого собеседования, я сразу узнала, где у меня большие пробелы в знаниях, и это дало мне большой толчок готовиться дальше. Не только решать задачки, но и читать много технических статей по разным темам.
Соискатели очень любят давать на дом тестовое задание. Ни в коем случае не отказывайтесь, а делайте! Уверена, что когда вы будете искать работу на позицию старшего разработчика или team lead-а команды, то вам уже не захочется тратить свое ценное время на написание приложения, которое вы и так напишите, но для новичка это очень полезные упражнения. Например, так появился на моей страничке в GitHub MD5 калькулятор. Да, работу я не получила, но зато добавила ещё один pet project в своё портфолио.
Я каждый день благодарю судьбу, что всё так перевернулось, и я осмелилась таки пойти по новому пути и стать разработчиком. Я уверена, что у вас также всё получится, если есть огромное желание и поддержка близких! Надеюсь, что для начинающих разработчиков вся информация была полезной! И как всегда: все вопросы пишите в комментариях или через форму обратной связи 🙂
Photo by Emile Perron on Unsplash.
Ольга
Хорошо написано, грамматика, орфография, пунктуация - без ошибок. Легко читать. Позитивно.
Мария
http://marialife.comСпасибо большое! ❤
Александр
Маша, прикрути к сайту HTTPS, а то как-то для визитки не солидно :) По этой инструкции сам делал, совсем не сложно оказалось
Мария Ефименко
marialife.comСаша, даааа! Вот собиралась это сделать в ближайшее время! Спасибо за ссылку!
Кристина
Очень полезная статья. Я бы посоветовала изначально подумать, чем хочется заниматься в будущем: back-end, front-end, full-stack developer, software developer, software engineer, или углубиться в сфере security, data science, а может вообще уйти в cloud architecture. И после этого уже выбирать язык программирования. Можно сразу посмотреть интересующие вакансии и требования к ним. Python - это отличный язык программирования, и подойдёт для начинающих, но, например, на front-end/back-end всё-таки спрашивают больше node.js, JavaScript, Angular и React. Поэтому, определившись с направлением, можно сразу преступать к изучению того, что потребуется на новом рабочем месте.
Мария Ефименко
marialife.comСпасибо, Крис! Очень полезное дополнение!
Айр
https://maths-h.com/Маша, ты большая умница! Классный блог. Читается легко и приятно. Я бы добавила к предыдущему комментарию, что еще есть направления мобильной или игровой разработки, а к ним требования по стеку совсем иные. Буду ждать новых постиков :)
Мария Ефименко
https://marialife.comАйрана, спасибо огромное за обратную связь и ценное дополнение к посту! Буду очень рада, если будешь читать =***
Nikhil6208
I read your post. It is very informative and helpful to me. I admire the message valuable information you provided in your article. online training
Мария Ефименко
https://marialife.comDear Nikhil, Thank you very much! I am glad it is useful!