май 18, 2021

Как я самостоятельно стал программистом с нуля и без опыта устроился на работу

Как я самостоятельно стал программистом с нуля и без опыта устроился на работу

Смена профессии
Сложно ли научиться
Как проходить обучение
Онлайн-курсы
Лекции
Книги
Какую выбрать специальность
Какой учить язык программирования
Можно ли обойтись без знаний английского
Что нужно уметь для работы
Как искать стажировку
Как я стажировался без опыта
Где сейчас пройти стажировку
Где искать работу

Сменил профессию и пришел в программирование

Здравствуйте.

Меня зовут Дмитрий. По образованию я географ, но последние три года занимаюсь веб-разработкой.

Увлечение естественными науками началось в школе. После уроков я дополнительно ходил заниматься в детский экологический центр. Ездил на всероссийские олимпиады по географии. Благодаря школьным заслугам без экзаменов поступил в СПБГУ на географический факультет.

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

После университета я пошел работать экологом: выполнял инженерные изыскания для строительства и плотно занялся картографией. В процессе работы для обработки данных приходилось использовать SQL и Python (хотя этих языков программирования я толком не знал). Чаще всего применял какие-то простые скрипты, скачанные из интернета. Но даже этот опыт пригодился мне в новой профессии.

В 2015 году мы с коллегой пошли изучать Python на курсы повышения квалификации в ИТМО. Так случилось, что как раз в этот период меня повысили с инженерной должности до административной — руководитель проекта. Python стал больше не нужен. Учебу забросил.

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

Сложно ли стать программистом

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

Я, например, часто встречаю коллег в веб-разработке, которые не знают базовых принципов устройства и работы компьютера. В Data Science могут работать ребята без глубокого изучения математических методов статистики. В Machine Learning без углубленных познаний в высшей математике. Мне кажется — это неправильно. Как минимум странно, когда люди выучились на программистов, работают несколько лет и не стремятся разобраться с базовыми вещами профессии. Несмотря на это, они успешно работают в отрасли.

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

Где учиться на разработчика

В университете я получил базовые навыки в фундаментальных науках: математика, физика, география, химия и т.д. Считаю, это важный этап в освоении любой профессии. Образование дало базу и задало правильное направление развития. Главное, чему я научился — находить источники знаний. Это позволяет разобраться практически в любой области (и даже с нуля стать программистом).

Онлайн-курсы

После увольнения я решил научиться программированию и интуитивно начал с веб-разработки (в этой области есть больше материалов в открытом доступе). Изучил первые попавшиеся бесплатные интернет-курсы:

  • HTML
  • Python
  • JavaScript и т.д.

Одновременно проходил порядка 5-10 курсов. На это ушло месяцев 6 или 7.

Считаю, начинать с платных онлайн-школ не самое лучшее решение.

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

Но это не значит, что все курсы плохие. Нужно тщательно выбирать.

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

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

Лекции

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

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

Книги

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

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

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

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

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

Какое направление разработки выбрать

В профессии программиста можно выделить множество направлений:

  • Android-разработка
  • Gamedev
  • Data Science
  • Machine Learning
  • Веб-разработка и т.д.

Я начал с веб-разработки. Считаю, это одно из самых простых направлений. Да, здесь нужен довольно большой объем знаний, но эти знания «плоские». Другие направления требуют более «глубокого» изучения и могут оказаться на старте более сложными.

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

Веб-разработку делят на два направления:

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

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

Какой выбрать язык программирования

Когда стоит задача смены профессии, самое разумное — посмотреть на сайте вакансий, что именно сейчас востребовано. Открываем сайты вакансий и смотрим, что ищут работодатели. Сейчас, например, популярны:

  • Python
  • PHP
  • JavaScript

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

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

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

Обязательно ли программисту знать английский язык

Конечно, знание иностранного языка — это большой плюс, но не самоцель в этой профессии. Я, например, свободно читаю на английском техническую документацию, хотя целенаправленно его никогда не учил (кроме изучения «на отвали» в школе и университете). Читать инструкции в оригинале приходится по двум причинам:

  • Далеко не все мануалы есть с переводом на русский.
  • Переводчики могут сильно искажать информацию. Чтобы не наделать ошибок, зачастую лучше работать с первоисточником.

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

Что нужно уметь программисту

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

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

Представьте, человек приходит работать в компанию. Его принимают в команду, тратят время на инструктажи, рассказывают про технологии и проекты. Пока новый сотрудник вникает в работу, своими расспросами он отвлекает всех остальных. Потом он берется за задачу и пропадает. Не отвечает на звонки или придумывает липовые отмазки. Даже в WB—Tech у нас есть достаточно подобных примеров.

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

При смене профессии полезным может оказаться любой предыдущий опыт. Даже если раньше ты был географом или выращивал цветы. Главное — иметь живой ум.

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

Когда начинать и где разработчику искать стажировку

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

  • HTML.
  • CSS.
  • Поверхностно JavaScript.

Бэкенд-специалисту, помимо HTML и CSS, нужно:

  • Базово изучить какой-нибудь фреймворк, например, Django.
  • Разобраться с простыми запросами SQL.
  • Хотя бы немного знать теорию компьютерных сетей и сетевые протоколы.
  • Уметь работать в linux (окажется нелишним).

Всем советую:

  • Разобраться с распределенной системой управления версиями Git.
  • Завести аккаунт на GitHub, научиться там создавать репозитории, ветки и пользоваться инструментами разработки.

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

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

Сначала откликаемся на открытые вакансии стажера. Если ничего подходящего нет, ищем IT-компании, которые занимаются тем, что вам нравится, и предлагаем свои услуги стажера. Так два года назад я обратился в WB—Tech.

Как я проходил стажировку

Штатный разработчик WB—Tech дал мне первое задание — написать REST API веб-сервис с несколькими методами на Django и набор юнит-тестов для них. Я месяц или полтора работал над этим. Главное — увидел, какие пробелы в знаниях и навыках программирования нужно восполнить для решения подобных задач. Когда первое задание выполнил, отправил его на проверку и попросил новое.

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

Я брал одно задание за другим. Делал их долго и вдумчиво. Отправлял результат — тимлид указывал на ошибки, недоработки и подсказывал, в каком направлении искать нужную информацию. Не все получалось сразу. Многое приходилось переделывать. Исправлял долго, медленно и с трудом. Уставал до головной боли. Было реально сложно. Зато сейчас у меня уходит 3-4 часа на работу, которую раньше мог делать неделю. А главное — я получаю удовольствие, когда решаю какую-то сложную задачу, и в результате все работает как надо.

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

Пока стажировался, примелькался в команде — стал «своим». Многие воспринимали меня не как стажера, а как штатного специалиста — члена команды. Спустя два месяца такой стажировки меня пригласили в штат на зарплату.

Где сейчас программисту можно пройти стажировку

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

В школе стажеров WB—Tech мы собрали базу знаний для фронтенд и бэкенд-разработчиков. Информации достаточно для старта в профессии. Вы получаете исчерпывающие пошаговые инструкции — курсы и ссылки на первоисточники, которые мы за вас собирали годами.

Вы записываетесь в школу, изучаете программирование и сдаете итоговое тестирование. Это бесплатно. После успешной сдачи тестов предлагаем поработать над проектами — вы получаете первое «боевое» задание. По результатам выполнения обратная связь от куратора. Если в процессе сотрудничества мы понимаем, что подходим друг другу — принимаем вас на работу в WB—Tech. Если открытых вакансий нет, рекомендуем вас как крутого специалиста коллегам.

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

Кстати, работать в WB—Tech после обучения необязательно. Вы становитесь свободным и востребованным специалистом. В остальном решение только за вами. Есть другие варианты трудоустройства.

Личный кабинет стажера-программиста в WB—Tech.

Где и как программисту искать работу после стажировки

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

Зарплата Junior-специалиста может быть в пределах от 20 до 60 тысяч рублей. Разница в три раза. Поэтому я бы агрессивно подходил к вопросу трудоустройства: откликался на все вакансии, проходил собеседования, предлагал свои услуги компаниям, у которых сейчас нет свободной должности программиста.

Но зарплата не самый главный критерий выбора. Особенно для новичков. Можно найти работу с окладом на 10 тысяч выше, но попасть в компанию с токсичной командой. Или попасть на поток однотипных задач. С такой работой чему-то новому не научишься — свою ценность поднять не получится. Есть риск надолго застрять в позиции Junior и не набраться реального опыта разработки.

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

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

За знаниями и опытом приходите в школу стажеров WB—Tech. Тем более что это бесплатно и ни к чему не обязывает.


Подпишитесь на блог WB—Tech

Никакого спама, только анонсы новых статей!