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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Network tools, или с чего начать пентестеру?

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

Домашняя лаборатория для самоконтроля, или что купить в гик-аптечку

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