Путь курильщика: как войти в профессию программиста, если ты гуманитарий

В детстве Анастасия Бирилло мечтала стать учителем русского языка и литературы. Сегодня она — научный сотрудник JetBrains Research, методист и преподаватель Digital Banana, а также разработчик собственного стартапа. «Гуманитарий — не приговор», — утверждает Настя. На нашей ноябрьской конференции «Контентинг» она рассказала о том, как освоить программирование самостоятельно, какое направление выбрать начинающему разработчику, где искать проекты, какие трудности могут встретиться на «пути курильщика» и как их преодолеть.

oi3zgjtby_ou-1dcn1ne2zp24fm.jpeg

Под катом — расшифровка ее доклада.

Два пути в программирование


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

187f7a2dde7d9c8beba8c36a9b476f18.png

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

eca8505e75ada5a4e9134dffdd126d54.png

Но мы поговорим о другом способе, о так называемом «пути курильщика». Это когда ты уже получил какой-то первый диплом, работаешь где-нибудь в пиаре, например, — и вдруг у тебя появляется желание стать программистом. У этого пути есть несколько минусов. Во-первых, у тебя мало времени, после работы ты садишься за учебники вместо того, чтобы пойти с друзьями в бар или в кино. Во-вторых, скорей всего, ты не будешь получать образование и у тебя не будет диплома. Но при должном старании ты удивишь друзей, станешь тем самым «богом-программистом», о котором они думали: «Господи, это же так сложно». А ты теперь это умеешь!

914a303b990e572f92b291aafef82cfe.png

Первые шаги, первые трудности и успехи


Войти в программирование, как мне кажется, проще с веба. Сначала это будет даже не совсем программирование, но ты можешь начать с верстки: структурировать страницы, раскрашивать их при помощи стилей. При должном старании довольно скоро ты сможешь получать за это неплохие деньги, собирая заказы на фрилансе. Потом ты изучаешь JavaScript, HTML, CSS… Думаешь, что уже все понял — и, само собой, ошибаешься.

77aad1433d9d09f3c3dd84c15955fa3d.png
Это реальная цитата из довольно популярного паблика ВКонтакте. Ребята считают: «Фронт я освоил, я суперклевый веб-программист, теперь мне пора в бэкенд». На самом деле, это не так.

b49e05e783e75955c8ff34586df1536e.png

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

6795eb987e3d44837fbb977d6fcd5d62.png

После JavaScript, HTML и CSS можно начать изучать фреймворки для работы с фронтендом. Через 3–4 месяца ты уже сможешь написать свое простенькое приложение на Angular или React. Раньше, видя кучу ошибок в консоли, ты пугался: «О господи, что это?!…» Теперь ты смотришь на это спокойно, начинаешь гуглить и разбираться, в чем причина. При упоминании Github тебя не прошибает холодный пот: ты знаешь, что это такой милый котик, довольно удобная штука для всех программистов. Возможно, ты уже мило посмеиваешься над другом-гуманитарием, который вдруг тоже захотел научится программировать. У него ничего не получается, он сидит и не понимает, что у него происходит. А ты видишь, что он просто где-то забыл скобочку поставить.

Программист — как художник


Теперь ты неплохо освоил программирование и можешь пойти в так называемый Software Engineering. Там обитают те самые ребята, которые пишут всякие сложные штуки на Java, C#, C++, Python и так далее. И это не то чтобы очень сложно: к этому моменту ты уже понимаешь, что программист — как художник. Просто он научился мыслить как компьютер и переносит это в код — с определенными строгими правилами. У художника нет жестких рамок, а в программировании они есть. Но вы уже понимаете: в принципе это не так сложно, я могу с этим справиться.

ee59e73dabd3c3fadba5cad186ddb6cd.png

С какого языка начать


Для тебя открывается очень много путей и языков программирования. Например, можно начать с Python. Это довольно просто язык, его делали в академических целях, для детей. Если ты знаешь английский, то сможешь понять код на Python, даже если никогда не программировал. На Питоне пишутся сервачки — это логика на всяких сайтиках. А если вдруг откроешь в себе талант к математике и найдешь кучу времени, то можешь пойти в самый хайповый Data Science и зарабатывать там по 300 тысяч в секунду. Но в этой сфере есть свои сложности.

39854e000d372aeae27447dfbb4e15a1.png

Учить Kotlin или Java труднее, чем Python. Там намного больше всяких тонкостей и довольно сложный синтаксис. Зато устроиться на работу, особенно в начале пути, будет намного проще: вакансий Junior Java Developer гораздо больше, чем вакансий для начинающих Python-программистов. Здесь тоже открывается много возможностей. Можешь просто остаться в Software Engineering в качестве Java Developer, можешь пойти в мобильную разработку или писать те же сервачки, только на Java или Kotlin.

cfa8175a2703e97da3c6a04b10da86ee.png

А если видишь в себе очень много сил, чувствуешь себя властелином вселенной, то учи C++ или Rust. Это путь тех самых людей, которые идут стажироваться в Google, пишут суперсложные приложения, постоянно говорят о каких-то утечках памяти или о том, что могут сами прострелить себе ногу. Но если ты действительно хочешь заниматься, уверен, что не бросишь, что сможешь — почему бы нет?

d8ab3aefcdb8bd432649a4ab1a000601.png

Шкала крутости


1c0930db8a03a92acb357e8b9273a6b2.png

Я упомянула о такой штуке как Junior Java Developer. В IT-мире есть так называемая «шкала крутости» от Junior до Senior. Когда ты Junior, ты как ребенок: видишь какую-то ошибку и сидишь в панике, не понимаешь, что происходит. Просто плачешь и зовешь на помощь этого супергероя-сеньора: он приходит и решает твою проблему, над которой ты мог сидеть несколько часов или дней, буквально за одну минуту. Это не магия, способности накапливаются со временем: набирается опыт и увеличивается база знаний.

На чем практиковаться


32a2ce496db85a297e49e1c515dd75ca.png

Теперь ты, наверное, думаешь: «сейчас выберу сферу, буду учить Python или пойду в веб, запишусь на гору курсов, прочитаю тонну книжек — и стану крутым программистом». На самом деле, так не работает. Самое важное — практика. Я сейчас говорю не о каких-то банальных проектах, которые задают на курсах, из разряда «выведи 10 первых чисел Фибоначчи» или «поменяй местами в массиве две переменные». Решай действительно интересные задачи, делай то, что нравится.

Напиши свою версию приложения, которое ты используешь каждый день, просто попробуй. Зачем? Одно дело — читать теорию: «Ага, инкапсуляция, какое-то страшное слово… ну, я понял примерно, для чего это…» Другое дело — столкнуться с этим на практике: ты сразу увидишь все пробелы, которых может не хватить потом, когда будешь устраиваться на работу.

b5c89dce8d305b1be581d57c85e06a5c.png

На собеседованиях мы часто сталкиваемся с джунами, которые рассказывают о прочитанных книжках, о курсах. Спрашиваешь такого: «А что ты делал?» Он: «Ну, решил там пару учебных проектиков, которые были на Stepik». Гораздо круче рассказать о собственном приложении: «Я сделал вот такую архитектуру… У меня не получилось, я переделал, я столкнулся с такими-то проблемами, решал их вот так и вот так…» HR это видит, и это — довольно клевый плюсик в карму. При приеме на работу — да, смотрят знания в целом. Но для джуниора важно, чтобы он мог обучаться и чтобы ранее не только читал теорию, но и занимался какой-то практикой.

Где искать проекты


874e4e86d59e7cbb5af4a45cc78d2c83.png

Найти проекты очень просто. Например, ты решил заниматься версткой. Мы все сидим в интернете, у тебя наверняка есть какой-то любимый ресурс — Хабр, Пикабу, какой-нибудь сайт с картинками. Берешь этот сайт и верстаешь такой же. Да, он не будет использоваться, его никто не купит. Зато пока ты будешь заниматься этим проектом, наткнешься на кучу проблем — и научишься их решать: что-то попытаешься сделать, сначала не получится, а потом ты это исправишь.

080a215c471ca6bd9f58b0103ee85855.png

Если хочешь писать какую-то логику — например, для веб-приложений на фронте или на бэке, то просто ищешь похожий ресурс в интернете и реализуешь его… Вообще код можно написать для чего угодно. Найди в интернете банальный туториал — как сделать to-do list. Это многие советуют — такой список дел, в котором ты отмечаешь, что уже сделано. Можешь реализовать какие-нибудь шашки, в которые ты будешь играть с тем самым другом, который тоже решил учиться. Можно вообще объединится и писать проект вместе.

Как успевать все и получать деньги за хобби


2b04d01b3d529ee3fc2f6c134b0cfb2d.png

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

4d251ab873ab0c5fabff4c47b6359a41.png

Это будет работать, только если дело тебе действительно нравится. Мой коллега стал фронтенд-разработчиком, потому что ему дико надоело работать в пиаре. Он понял, что ему очень нравится верстать сайты, и он тратил на них все свое свободное время. Но ему это нравилось. Не зря говорят: найдите то, что вам нравится, и тогда вы не будете работать ни дня. Звучит пафосно, но это правда. Мне настолько нравится то, чем я занимаюсь, что я не могу называть это работой. Получается, что мне платят за мое хобби.

Точка входа: почему веб лучше, чем игры


Игры — тоже неплохая точка входа. Но нужно заниматься тем, что нравится. Я, например, ненавижу игры и не смогла бы через них стать программистом, даже если бы очень хотела. Если ты используешь какой-нибудь Construct (это такая простая штука, чтобы делать 2D-игры), то по сути не программируешь. А когда начинаешь верстать, ты все равно приучаешься хоть к какой-то дисциплине: видишь эти скобочки, приучаешь себя не бояться писать код, и тебе будет проще адаптироваться к более сложным вещам. Потом и на большие куски кода смотришь спокойно: «Ну ладно, я тоже такое писал, ничего страшного».

Главное — не бояться


— Ты думаешь: «Да, она так говорит, как будто все легко. На самом деле, это все мечты». Нет, не легко –, но возможно. Когда я поступила в университет из гуманитарной школы, я была худшей на курсе. Но ты стараешься, и даже если у тебя ничего не получается — стараешься дальше. Я думала, что никогда не пойму все эти ООП, графы, структуры данных и прочее. Но теперь я работаю программистом и учу программированию детей. Возможно, прозвучит пафосно, но гуманитарий — это не приговор.

c78ede0891c83a6c18bb656146bb9e63.png

Если хочешь перейти в IT, главное — не бойся. Нужно преодолевать страх, не бояться писать код. Все почему-то думают о программировании, что это, блин, очень-очень сложно. Даже дети, которых я обучаю, иногда боятся запускать программу, которую сами же написали: «Сейчас будет ошибка, все упадет, и я не смогу понять, в чем причина». Главное — побороть этот страх. Ты можешь начать с веба, это довольно просто. И запомни: практика, практика и много-много практики. Без нее ничего не выйдет!


Все доклады с «Контентинга» —, а это 16 часов полезной информации, 26 выступлений и 3 дискуссии о том, как делать крутой контент о технологиях и с помощью технологий — есть в видеоформате тут. Скидка для пользователей Хабра по промокоду habr_online_promo.

За поддержку конференции благодарим наших спонсоров:

© Habrahabr.ru