SamaraITCommunity.
Николай, Senior Serverless JavaScript Developer в Voximplant – обладает восьмилетним опытом работы с бек- и фронтендом, влюблен *nix- подобные системы, vim, чистый код, архитектурные подходы и open source, как лучшее, что случилось с человечеством. Он — один из создателей SamaraITCommunity (сильно причастен к появлению GrindConf, VolgaHack, подкастов SITCast” и “SITalk”), а также он входит в команду авторов проекта Джуность.
Делимся с вами расшифровкой эфира и записью.
❒ Меня зовут Коля, фамилия моя – Сладкий. Мне 29 лет, я – разработчик, работаю сейчас на позиции Senior Serverless JavaScript Developer в компании Voximplant, занимаюсь движком Voxengine – это serverless-платформа. Я занимаюсь разработкой уже около 7.5 лет, почти 8; мои основные инструменты на данный момент – языки JavaScript и Go. То есть, на JavaScript мы делаем serverless, а на Go, когда нужно, докидываем перфоманса.
❒ Несколько слов о себе. Я занимался и backend, и frontend, то есть, я – full stack web developer, хотя больше backend-based. Как я уже говорил, это почти 8 лет опыта. Я являюсь devops culture addict-ом, то есть, я пропагандирую, что нужно везде докидывать operations, куда только можно, чтобы максимально автоматизировать процессы. Являюсь технологическим евангелистом, в частности, я очень сильно топлю за NodeJS – ну, тоже в каких-то разумных пределах. NodeJS это очень классная технология. Ещё я занимался архитектурой, построением web-приложений, работал тимлидом. Работал техническим директором в двух компаниях – в стартапе и в более крупной компании, которая называется Mechanica (раньше она называлась ANMEDIO).
Много занимаюсь разной общественно-полезной деятельностью – я думаю, это можно так назвать. Есть независимое сообщество разработчиков Самарской области – Samara IT Community, мы его когда-то сделали вместе с другими ребятами, теперь оно активно развивается без особого участия с нашей стороны (мы больше модерируем). В рамках нашего комьюнити мы делали интересные мероприятия, у нас была конференция GrindConf, несколько раз мы делали хакатон VolgaHack. Еще мы записываем подкасты SITalk и SITCast. Также я – стейкхолдер и один из создателей проекта “Джуность”.
Это проект для обучения, и он так называется потому, что его главная идея – в том, чтобы всегда как бы быть джуном и жить в погоне за новыми знаниями, за развитием. Еще я влюблен в *nix-подобные системы (так исторически сложилось), очень люблю vim, топлю за чистый код, чистую архитектуру, чтобы все было понятно, чтобы все легко читалось. Я топлю за open source, у меня есть много всего интересного по open source, я сам пишу open source — меня можно найти в GitHub. Вообще, я считаю, что open source – это одна из лучших вещей, что случились за все время существования IT-технологий.
❒ Почему я рассказываю про «войти в IT»? Наверно, должна быть какая-то подоплека. На самом деле, она есть: дело в том, что я два года своей жизни проработал в полиции, а именно в уголовном розыске. И в 2014 году я начал изучать программирование – это было сложно, странно, но я это сделал и поэтому могу вам что-то рассказать об этом. Через 7 месяцев после того, как я начал изучать программирование с нуля, я нашел свою первую IT-работу. Это не была работа супер-программистом: было что-то вроде вебмастера (поддержка сайта, SEO, контекст). С тех пор прошло уже почти 8 лет, я занимаюсь любимым делом, и всем советую. Я прошел тот самый путь, который предстоит пройти каждому человеку, который хочет войти в IT. Конечно, этот путь не будет 1 в 1, и конкретно мой опыт может быть нерелевантен для другого человека. Однако, скорее всего, я знаю многие из подводных камней, с которыми предстоит столкнуться, и на эту тему мы поговорим, порассуждаем и сделаем выводы. Возможно, я сегодня кому-то смогу помочь. Если хотя бы одному человеку это будет полезно – уже день не зря пройдет.
❒ Поговорим про сферу IT в целом – откуда у нее такая популярность? Мы не будем углубляться в детальную историю развития, а поговорим про то, что происходит сейчас в плане рынка, маркетинга, денежной составляющей популярности. Поговорим про то, как войти в IT и стать программистом – это будет самая длинная секция, на нее мы потратим больше всего времени; я буду рассказывать именно про программирование, потому что так исторически сложилось, что я – программист, и мне это ближе. Я расскажу немного про свой путь; возможно, кому-то это будет интересно или даже релевантно. У меня есть много знакомых, которые до сих пор работают там, где я работал, или в смежных структурах, и хотят изменить свою жизнь, но им чего-то не хватает для того, чтобы это сделать. Поэтому расскажу, как у меня это было.
❒ Можно ли попасть в IT без программирования? Мы все прекрасно понимаем, что IT – это огромная сфера, и даже уже не одна сфера, а очень обширное понятие. Поэтому не программистами едиными сыт рынок. Поговорим о том, что ожидает сферу в ближайшем будущем, и сделаем из этого всего выводы. Потом еще ответим на вопросы.
❒ Итак, поговорим немного про IT. Есть такая интересная фраза – даже не помню, где я ее слышал: «У вас должна быть очень серьезная причина, чтобы в 2021 году работать не в IT». Это шутка, конечно, но в ней есть большая доля правды. Уже в 2020 году – а сейчас уже 2021 год – IT было везде. То есть, IT проникает во все сферы. Уже нельзя сказать, что IT – это какие-то отдельные технологии, сейчас это – образ ведения бизнеса. Бизнес меняется до неузнаваемости. И для его правильно функционирования, роста и развития ему приходится уходить в сферу IT.
Мы прошли с вами через серьезное испытание, которое для нас еще даже не закончилось, а для многих стран оно вообще только начинается. Но, тем не менее, мы сейчас уже более комфортно чувствуем себя в этих условиях. Возьмите это же время год назад – март, апрель; помните, что происходило, когда объявляли локдауны и все уходили на удалёнку? Было сложно, но, в основном, все сферы побеждают это. Даже сейчас мы с вами сидим – я сижу в одном месте, вы смотрите меня, возможно, из другого города или страны – и делаем это с помощью интернета, с помощью той самой IT-сферы. И нам это удобно. Получается, что так же мы можем работать. Люди созваниваются через Vox, через другие сервисы – так можно коммуницировать друг с другом, общаться, работать, зарабатывать деньги. Сфера здоровья точно так же сейчас уходит в IT, и вообще весь госсектор, все госуслуги это делают. Есть тот же самый сайт госуслуг, где сейчас можно, зарегистрировавшись и подтвердив аккаунт, записываться к врачу, например, а с мая можно будет даже перерегистрировать автомобиль при продаже; то есть, кучу всего можно делать. Доставка – опять же, на локдауне мы все это очень здорово почувствовали, и сейчас продолжаем пользоваться. Это очень здорово, очень удобно, когда не нужно выходить из дома, чтобы купить еду, купить другие вещи, сделать что-то еще – мы можем полностью удаленно это делать. Эквайринг, удаленный эквайринг или обычный безналичный расчет – как часто мы с вами сейчас пользуемся обычными физическими деньгами? Они уже просто не имеют такого смысла, какой в них вкладывался раньше. Транспорт, вся e-commerce, все гаджеты, которые мы носим в кармане – это все тоже IT. То есть, все сферы сейчас завязаны на IT, а IT – на всех сферах. Мы с вами уже непосредственно работаем в сферах, которые не могут без IT – либо в сферах, без которых само IT не может обойтись. Это замыкается рекурсивно на том, что все сферы не могут без IT.
И все это произошло, в первую очередь, благодаря развитию интернета. Многие люди не задумываются о том, насколько интернет мощное оружие, насколько это классная и крутая вещь в современном мире. Это далеко не только Facebook, Instagram и TikTok; люди обычно просто не думают об этом, но, на самом деле, интернет сейчас — это в первую очередь работа. Все вышеперечисленные сферы, про которые мы с вами говорили, сводятся в итоге к рынку. А рынок существует для того, чтобы зарабатывать деньги. То есть, интернет – это наше главное оружие для того, чтобы зарабатывать деньги. И для того, чтобы делать вещи, нужен только ноутбук, выход в сеть и какие-то скиллы. Получается, что запросы бизнеса уходят в сеть: тот бизнес, которого раньше не было в интернете – ему там, допустим, нечего было делать – в 2021 году должен там быть. Если его нет в интернете, то, скорее всего, его самого уже нет, или не будет – он постепенно деградирует и умрет.
Из этого можно сделать простой вывод: если у нас все больше появляется сфер, все больше появляется работы в интернете и вообще в IT, то ее кто-то должен делать. И мы постоянно слышим о том – особенно в последние несколько лет – что миру нужны программисты. Иногда кто-то утверждает об обратном, но мы-то с вами знаем правду. Миру нужны программисты, миру нужны IT-шники. И если на фоне спроса рождается предложение, то на фоне потребности бизнеса рождаются рабочие места. И эту работу кто-то должен делать. И, если эту работу кто-то должен делать, то о ней постоянно говорят, мы слышим об этом из каждого утюга, и люди начинают интересоваться. То есть, сфера разогревается, молекулы этой сферы двигаются быстрее, и люди уже начинают интересоваться извне – им становится интересно. Многие люди хотят что-то изменить в своей жизни – в основном, в погоне за чем-то интересным, или за деньгами – но все равно этому способствует то, что мы постоянно об этом слышим, потому что сфера сильно прогрета. Люди хотят что-то изменить в своей жизни – и начинают хотеть в IT. Или, как минимум, узнать об этом побольше.
И эти люди – это мы с вами. Так же, как я интересовался в 2014 году, и как вы интересуетесь сейчас – скорее всего, если вы пришли на эту лекцию, то вам это интересно. Я сразу оговорюсь, что я никакой не коуч: я обычный программист, который пишет код. Я просто в свое время уже прошел этот путь, и мне хочется поделиться с людьми. Я не рассказываю, как надо; возможно, у вас будет не совсем так, или совсем по-другому. Но я стараюсь мыслить логически, и у меня много знакомых, которые уже прошли этот путь, или собираются его пройти. Я думаю, если мыслить логически, то можно сделать из этого какие-то выводы, и в этом состоит наша сегодняшняя цель. Потом вы сможете еще раз все обдумать и уже сделать какие-то выводы для себя.
Давайте представим абстрактного персонажа Петю, который хочет войти в IT. Пусть он будет примерно нашего с вами возраста. Важная оговорка: возраст не слишком важен, и, если вам 35-40-50 лет, я не думаю, что вас это остановит. Конечно, будет чуть сложнее по ряду причин, но это не будет невозможно. Итак, Петя – нашего с нами возраста, он так же пришел сюда, чтобы узнать для себя что-то новое, и, конечно, он хочет войти в IT. Он хочет стать программистом, потому что это популярно сейчас – и он будет обязательно программистом, это его путь, он его выбрал для себя. Что он знает о программировании? Он знает, что это популярно. Потому что работы действительно много, отрицать это глупо; у нас есть вакансии, есть Headhunter, где мы можем их посмотреть, мы постоянно слышим новости, мы приходим в бар и слышим, как программисты общаются друг с другом о странных вещах. То есть, это действительно популярно. И мы знаем, что это хорошо оплачивается. По крайней мере, про космические зарплаты сейчас, опять же, из каждого утюга вещают, мы не можем пройти мимо этого – об этом громко говорят громкими словами.
Еще Петя постоянно натыкается на рекламу курсов. Я думаю, так у всех сейчас — мы постоянно натыкаемся на рекламу курсов, где из нас обещают сделать программиста за 3 месяца (недели, дня, часа). И Петя задумывается о том, чтобы попробовать. А почему нет – он молод (ну, или не очень) и полон сил, он может совмещать текущую работу с обучением, если постараться, и он не совсем тупой. Тут без обид, но мы должны прекрасно понимать: тут нужно будет думать головой. Думать надо везде, конечно, но в IT – чуть-чуть побольше, наверно. У Пети есть какое-то образование; это необязательно, но, скорее всего, если у тебя есть образование, то оно научило тебя учиться, и ты знаешь, что это такое. То есть, ты готов дальше самостоятельно обучаться. И еще Петя умеет в компьютеры – ну, потому что это все-таки IT, а в 2021 году надо уметь в компьютеры хоть как-то. Хоть серфить Интернет. Есть еще нюансы; ну, Петя понимает, что он – не самый умный, хотя и не самый тупой (опять же, без обид), и у него нет профильного образования, хотя бы технического; с техническим образованием будет проще, конечно, а с профильным – вообще другая история. Но у Пети этого нет. И, самое главное, он боится, переживает; это довольно тяжело – взять и сменить профессию. Но он решает попробовать.
И сейчас Петя будет задавать вопросы, а мы будем стараться ответить (это те самые вопросы, которые были в анонсе):
Если он готов к тому, что это будет очень трудно, и нужно будет потратить много времени. Будем честными – программистам платят деньги, но платят не за просто так. Это сложно. Это не невозможно; это не rocket science – мы не запускаем ракеты в космос (ну, большая часть из нас не запускает), но это потребует очень много усидчивости, времени и сил.
И — если ты готов рискнуть своим временем. Потому что, опять же, почему бы и нет. Ты просто принимаешь это решение для себя, это – твоя ставка.
Но не стоит этого делать, если ты просто устал, если тебе нужно отдохнуть, чтобы дальше заниматься своим делом. Если ты психуешь, что-то у тебя идет не так, но при этом ты любишь (или хотя бы не ненавидишь) свою работу и готов всю жизнь ею заниматься, то, наверно, лучше не рыпаться. Это будет более правильным решением. Не нужно менять профессию, просто поверив в сказку. Про 300 тысяч в месяц – конечно, это есть, это все правда, мы видим эти зарплатные вилки. Но для того, чтобы зарабатывать деньги, нужно делать дела. Легко не будет. Если ты не любишь трудности – лучше пройди мимо. Программисты всегда превозмогают что-то, это не так просто, как хотелось бы. Если тебе нравится решать сложные задачи – это профессия для тебя, а если нет – нужно еще подумать, стоит ли оно того.
Тебе нужно идти в IT, если ты технически подкован и ты не боишься этой вашей математики. Про математику мы еще поговорим позже, но, в целом, нужно понимать, что математика здесь присутствует. Не очень сложная, но, тем не менее, без нее никак не получится.
Если ты готов тратить все свободное время на обучение. Если ты учился в университете, ты знаешь, как проходят эти 5 лет. А если ты учился на заочном, ты ещё и прекрасно понимаешь, что такое учиться самостоятельно, когда тебе дают только материалы и показывают роадмап для продвижения. Здесь будет то же самое: ты будешь тратить очень много времени на обучение. Если тебе хочется тусить, то, наверно, это – история не для тебя. Но если бы готов вкладывать свое время в обучение, то действуй.
Если ты любишь сложные задачи, потому что программирование – это сложные задачи. С каждой последующей задачей сложность будет возрастать, если ты хочешь прогрессировать, а не прокрастинировать. И если ты усидчив и морально устойчив; ты сидишь весь день, разбираешься, смотришь, как все работает, дебажишь что-то, у тебя не работает; спустя какое-то время все заработало, ты радуешься, здорово, задачу решил – а потом все заново. Нужна усидчивость.
Это не займет две недели. «Сделаем из вас программиста за две недели» — это все сказки. Если ты не хочешь разбираться в математике, если не любишь думать, если родился для того, чтобы отдыхать – это точно не для тебя. Если хочешь тусить – тоже; по крайней мере, первое время придется постоянно вкалывать, чтобы когда-нибудь потом тусить. И – если ты не любишь или не можешь долго сидеть за одной задачей, то это тоже не для тебя. Это такая история, где нужно долго сидеть и много думать.
Мы сейчас будем идти сверху вниз, и каждое следующее будет сложнее – по моему собственному мнению. После frontend у нас идет backend – именно web-based backend. Это NodeJS, PHP, Go, это всякие Express, Laravel и прочие фреймворки, построенные на этих технологиях. Также у нас есть enterprise backend – это Java, C#, то есть, то, про что все слышали. Здесь есть Spring, .NET – технологии, на которых строят большие корпоративные приложения, большие распределенные сложные системы. Это банковская сфера и так далее.
Дальше у нас есть mobile development – разработка под мобильные устройства. Она сейчас на пике популярности, потому что есть Kotlin, Swift, Dart – это три языка, которые больше всего под мобильную разработку заточены. Здесь прямо волна хайпа, однако это довольно сложно.
Также есть направление data science, machine learning — работа с данными, обучение нейросетей. Это Python как язык программирования, платформы на нем всякие – GPT3, TensorFlow и прочие интересные решения от серьезных игроков, мировых корпораций, которые делают машинное обучение. Это сложно, но очень интересно.
Направление геймдева – разработки компьютерных игр – считается самым классным и кайфовым, конечно. Я прямо по себе помню – когда-то я думал, что буду разрабатывать игры, и это будет классно. Была такая идея. Но, когда я начал этим заниматься, я понял, что это совсем не весело. Если ты сам любишь игры – скорее всего, тебе совсем не понравится, что «под капотом» в разработке компьютерных игр. Языки программирования – скорее всего, самые хайповые сейчас C# и C++, потому что на C# построен игровой движок Unity, а на C++ — Unreal Engine и множество разных физических «кишков», хотя используются не только эти языки и платформы.
Сложное направление, на которое нужно учиться и учиться, потому что здесь нужна хорошая математика – это алгоритмы и структуры данных. Именно разработка и оптимизация: всякие карты, геолоки и прочие штуки, где надо по графам считать кратчайшие пути, например.
Есть еще более сложные вещи – например, сферы, связанные со сложным перфомансом, со сложными расчетами. Какие-нибудь «кишки» крипты или просто блокчейнов, которые будут написаны на специализированных языках программирования, например, Solidity (высокий уровень) или Rusty (низкий уровень), но это уже сложно.
Я бы советовал думать больше про первые 3-4 направления. Может быть, ещё data science на Python. То есть, web-контент, web backend, enterprise backend, mobile development плюс data science / machine learning.
Еще нужно понимать одну важную вещь. Особенно когда наш Петя еще молод и горяч, он еще ничего особенно не умеет, но уже очень хочет денег и постоянно слышит о том, что программисты получают много денег. Никто никогда не будет платить тебе деньги за просто так. Нужно делать вещи. Когда ты умеешь делать вещи, и умеешь это делать хорошо, тогда ты будешь получать много денег. Просто так никто тебе не заплатит.
И нужно понимать, что, как сказал дядя Бен, большая сила – это большая ответственность. Чем больше тебе платят, тем больше ты должен делать, тем более сложные у тебя задачи. Или не «чем больше платят», а «чем более высокая позиция» — не обязательно все в деньгах представлять. Для кого-то деньги не первостепенны: может быть, кто-то просто хочет самоутвердиться, добиться чего-то для себя в жизни. Стать лидом, например, или руководить вообще большой компанией – быть CTO или solution architect. Многие люди работают именно ради этого, а не ради денег. Я сам знаю много людей, которые работают именно по такому принципу: для них деньги – это, конечно, хорошо (можно вкусно покушать, если они есть), но они – не самое главное, что есть на рынке.
Я думаю, самый лучший совет, который здесь можно дать – это найти знакомых, которые уже есть в этой сфере. Если у вас есть такие знакомые – можно с ними пообщаться, попросить у них материалы и советы, хотя бы по тому, по чему мы уже сегодня прошлись, по тем же самым сферам и выбору будущей профессии в IT. То есть, чем вы хотите заниматься, каким программистом хотите быть – frontend, backend, data science. Лучше посоветоваться с кем-то, кто в этом реально шарит, кто в сфере уже хотя бы несколько лет – 3, 5, лучше больше. Вам дадут советы, дадут материалы.
В дальнейшем с этими людьми можно договориться о менторстве, или просто о code review; чтобы вы, что-то написав, показывали им, а они отвечали: чувак, здесь надо все переделать, а вот здесь хорошо, делай так, а тут чуть-чуть поправь. Тогда вы будете лучше, быстрее и качественнее обучаться. Но – внимание, это очень важно – не приставайте к этим людям слишком сильно. Не просите научить вас всему, не требуйте от них чего-то. Старайтесь как можно меньше тупить и не доставать их вопросами, особенно теми, которые сами чувствуете себя в состоянии нагуглить. Я знаю по себе – я был тем человеком, который доставал своими вопросами. Я был и тем, которого доставали, но я всегда говорил об этом: успокойся, я не твоя мама, я не буду сидеть с тобой за тетрадками и решать твои домашние задания; я могу тебе помочь, подсказать, но ты должен делать это все сам. Поэтому мой вам совет – не доставайте этих людей. Если вы не будете их доставать, если это ваш хороший товарищ и отзывчивый человек, то ему будет даже приятно с вами это обсуждать, разговаривать. Еще важный момент: когда программист, инженер кому-то что-то объясняет, он сам как бы заново это проходит и начинает в этом еще лучше разбираться. Поэтому, если вы не будете сильно доставать собеседника, он, скорее всего, сам будет хотеть общаться.
К сожалению, легко нарваться на ерунду в сети, если вам никто не помогает. Сейчас масса плохих платных предложений – менторов, курсов, некачественных книг, на которые можно наткнуться и потратить время впустую. Плохих материалов, наверно, даже больше, чем хороших, поэтому и хорошо спрашивать у того, кто в теме. Хотя я бы не сказал, что тут 90 процентов грязи и только 10 годноты; наверно, соотношение чуть похуже, чем 50 на 50. Старайтесь показывать тот материал, который вы находите, своему другу, который вас менторит или общается с вами – он вам даст свой фидбек на этот материал. Это будет здорово.
По поводу материалов в целом – книг, вебинаров, курсов, подкастов, скринкастов и так далее – нет правильного решения. Кому-то больше заходят книги, кому-то – видео. Я люблю смотреть видео, я кайфую от него, я не так хорошо воспринимаю текст, как видео и звуковую информацию. Я слушаю много подкастов, и до сих пор очень много полезной информации для себя получаю из них, каждую неделю. Но кому-то подкасты совсем не заходят, кто-то не может что-то делать и одновременно слушать подкаст, например. Все индивидуально. Главное – учиться фильтровать источники, а на каких они носителях – дело десятое.
Здесь такая же история. На курсах нам могут дать источники – правильные, хорошие – и нам могут структурировать информацию, то есть, подача будет структурированная. У нас будет роадмап: идем отсюда сюда, сюда, сюда, и при этом знаем, что действительно идем по пути куда-то, а не топчемся на месте, что часто бывает.
Еще по поводу платного контента. Очень важно понимать, что, хотя есть много теории, нам нужны практические задания. В программировании теория без практики – это ничто. Поэтому, если вы берете платный источник, то хорошо, чтобы там были задания. Живое наставничество и менторство всегда стоит своих денег, если вы понимаете, что человек, который с вами занимается – адекватный и является реальным специалистом в своем деле. Если он просит какие-то очень большие деньги, то это неадекватно; если это адекватные деньги, то почему бы их не потратить. Вы получаете человека, который шарит, в шаговой доступности – это очень удобно.
Есть такой момент, что потраченные средства могут вас мотивировать на большую отдачу. То есть – я заплатил денег, теперь надо их отрабатывать по полной. Со мной это отлично работает.
И, как с любым контентом, его точно так же надо учиться фильтровать. Общаться с другими людьми, смотреть, что за курсы, читать отзывы, получать фидбеки какие-то. Понимать, какой курс плохой, какой хороший. Это – плохой источник, который стоит неадекватных денег, это – хороший, который стоит адекватных.
По поводу английского языка: английский язык – это круто не только для программиста или IT-шника, а для человека в целом. Я думаю, через несколько лет это будет вообще must have. Будем честны: английский – это язык мира, на нем весь мир разговаривает. Вся официальная документация, все спецификации языков, протоколов, решений, RFC, чего-то еще – написаны на английском языке. То есть, если вы хотите читать и получать четкие знания, то вам нужен именно английский язык. Без него будет сложно.
По поводу образования – в некоторых случаях, конечно, корочка нужна, но это тоже скорее исключение. Придете в какую-то компанию работать, вас там спросят – а есть ли у вас образование, вы скажете – нет, вам скажут – ну и уходи, вы скажете – ок, и уйдете. В другое место, где нужны люди, которые задачи решают, а не светят корочками. Но, если вы вдруг думаете о том, чтобы пойти на второе высшее, я бы советовал сначала постараться понять, ваше это или не ваше, попробовать позаниматься, может быть, даже найти уже первую работу. Это не так сложно сейчас, на самом деле; может быть, вам потребуется полгода поучиться или, как максимум, год своего времени потратить на это. Но это будет гораздо лучше, чем потратить еще 3-4 года в университете или вообще бросить его через 1-2 года из-за того, что – будем честны – в университете вы не будете получать тех знаний, которые вам будут нужны для непосредственного решения проблем прямо сейчас. Все-таки университетская база знаний устаревает. Я не говорю, что это происходит во всех университетах, но, наверно, в большинстве своем они учат именно базовым вещам, а не решению задач. А если вы сами начнете учиться на курсах, то вы сможете начать решать задачи и почувствовать профит от решения своих задач, и это будет очень полезно.
❒ По поводу кодинга: сколько уделять времени именно на код. Теория — это здорово, конечно, но нужно кодить. Кодить нужно столько, сколько сможете. Очень много. Если вы хотите научиться писать код – надо писать код. Если вы не будете этого делать, а будете прокачиваться в теории, вы будете отличным теоретиком, может быть, но теоретикам, скорее всего, не платят деньги. Или это бывает редко. Нужна практика. Это как в школе: чтобы научиться делить столбиком, надо делить столбиком.
Допустим, вы всему научились, и начинаете искать работу. Что нужно для того, чтобы начать это делать? Нужна база. Базовые знания – математика та же самая, базовая: то есть, базовая логика, чтобы уметь писать решения, алгоритмы, алгоритмы структур данных. Это самое главное, что нужно программисту. Алгоритмы и структуры данных – самые простые, чтобы научиться решать задачи, без этой базы вы никогда не будете разработчиком. Также надо знать конструкции и синтаксис целевого языка программирования, библиотеки, фреймворка: то есть, не зная JavaScript, вы не устроитесь во frontend, не зная HTML и CSS, вы не устроитесь верстальщиком, не зная PHP, вы не сможете делать сайты. Это естественно. Синтаксис и конструкции надо знать довольно хорошо. Кроме того, нужно умение решать поставленную задачу. Пусть неоптимально, но верно. Когда вы – начинающий разработчик, молодой специалист, джун, от вас требуют одного: чтобы вы учились быстро, решая задачи. То есть, вы берете и делаете задачу, ее дальше передают в работу, а вы, научившись, следующую сделаете лучше.
Получается, что вам нужно решать поставленную задачу. Я бы еще советовал не пытаться выучить все на свете – это невозможно; и не ждать у моря погоды («я еще не готов, еще рано искать первую работу»): скорее всего, искать работу не рано, вы, наверно, готовы. Вы это почувствуете, или вам это кто-то скажет. Если вы несколько лет сидите, учитесь, но боитесь искать работу – вы что-то делаете не так. И еще важно ходить по собеседованиям. Как только вы начинаете это делать, вы набираетесь опыта собеседований, подтягиваете слабые места – на них вам указывают. И вы не боитесь провалов. Вы перестанете бояться, что вы придете на собеседование, и вам там скажут – чувак, да ты не знаешь ничего. Бывают токсичные собеседования, но это уже редкость. Скорее всего, вам просто скажут: вам не хватает этого, этого и этого. Вы скажете: окей, придете домой, позанимаетесь еще месяцок, пойдете на следующее собеседование. Один раз откажут, второй раз откажут, а к третьему разу вы все выучите, скорее всего, и вас возьмут на первую работу.
И, когда вы получите первую работу, главное – не расслабляться. Потому что работать придется очень много, нужно будет быстро расти и прогрессировать – вы никогда не перестанете учиться. Это такая ловушка. Вы в нее попадаете, когда начинаете обращаться в программирование и устраиваетесь на первую работу. Знаний здесь – бездонная бездна, и знать нужно много – не для того, чтобы начать, а для того, чтобы развиваться. Нужно пытаться вылезти из джунов, вырасти в своих знаниях, стать уверенным специалистом. Тогда вы будете двигаться все дальше и дальше, и это – только начало. Вам будет все сложнее и сложнее, но так будет не всегда.
❒ Вам действительно будет сложно. Вы должны быть к этому готовы. Но когда вы пройдете этот путь, даже тогда, когда вы просто получите первую работу, вы осознаете, что это – невероятный кайф. Когда вы развиваетесь, это очень здорово. Нужно ставить достижимые цели и идти к ним. Вряд ли вы станете премьер-министром планеты – такую цель ставить не надо. Ставьте себе короткие майлстоуны, идите к ним, получайте внутренние ачивменты – так вы будете развиваться. Нужно научиться декомпозировать сложные задачи на более простые, декомпозиция – это вообще лучший друг программиста. Как только вы разбиваете большую задачу на маленькие, оказывается, что с ними гораздо проще справляться. И однажды вы заметите, что уже прошло несколько лет, и вы все сидите, кодите, обучаетесь, тратите на это все свободное время, и вам это нравится.
Вот он, в принципе, весь путь. Наверно, я рассказал про все, что нужно знать человеку, который хочет войти в IT.
❒ Расскажу кратко о том, как было у меня. Это был примерно тот же самый путь, как я описал выше, только все было не так структурировано, и все было очень размазано, потому что я не особенно понимал, что я делаю, и мне было довольно сложно. Вообще, с компами я дружил с самого детства, но это значит только, что я ковырялся в винде, в реестре, ставил линукс, любил железки, в BIOS залезал – мне это все нравилось. Но я никогда не был программистом. В детстве я учился в лицее информационных технологий, но «что-то пошло не так», как говорится: у родителей закончились деньги на лицей, а там такая история – ты или очень умный, или учишься за деньги. Я ушел из лицея после 7 класса, перевелся в обычную школу с направлением в юриспруденцию, а после 9 класса пошел получать среднее специальное юридическое образование. О чем я, на самом деле, не жалею. После среднего специального получил высшее юридическое, а потом пошел работать по специальности. Около 2 лет я работал в уголовном розыске. Это было весело, это было интересно, это был замечательный жизненный опыт. Я совсем не жалею, что моя жизнь так сложилась.
Но в 2014 году я пришел к осознанию того, что занимаюсь чем-то не тем, и мне нужно что-то менять, делать другие вещи. Я собрался увольняться. Последние несколько лет я много думал о программировании, о том, что когда-то я этим занимался, и меня всегда к этому тянуло. Мне так нравилось, что можно весь день проводить за компом – я очень любил компьютеры, любил играть, тратил много времени на MMORPG какие-то. И почему бы точно так же не тратить время на программирование – сидеть по многу часов, пытаться решить задачу, получать от этого удовольствие? Я тогда проводил у себя эту параллель с MMORPG. И я понял, что настало время для этого, уволился, начал учиться. Я понял, что у меня отсутствует школьная база знаний, что я в плане технической подкованности и грамотности – математики, геометрии, физики – сильно отупел. Понял, что мне нужно все это подтянуть, начал общаться с ребятами. Походил по знакомым, собрал у них учебники по математике за 7-8-9-10-11 классы. Перечитал это все для себя, порешал задачи. Нашел несколько знакомых программистов, пообщался с ними и понял, что нужно садиться учиться и писать код.
Начал обучения с Java – я до сих пор считаю, что это лучший первый язык программирования. По ряду причин, основная из которых – то, что язык включает в себя все самое лучшее и самое худшее (или хотя бы многое). Становится понятно, как вообще вещи работают, как устроены истории с Java под капотом. Думаю, JavaScript – слишком запутанный язык для роли первого, а C++ — слишком многословный.
Прошло несколько месяцев, я начал писать на Java за еду, что называется (на самом деле, за опыт). Знакомые мне начали подкидывать задачи, по которым надо было писать код, они мне даже какие-то символические деньги платили. То есть, я уже начал работать – почувствовал, что я могу себе этим хотя бы на что-то зарабатывать. Где-то через 7 месяцев после того, как я сел учиться, у друга на работе появилась вакансия: они искали не то чтобы программиста, а человека, который бы сайты поддерживал, что-то там дописывал и настраивал рекламу. Там были PHP и JavaScript – я с ними был вообще никак не знаком, но все равно решил попробовать. Сходил на собеседование, ответил там на все вопросы, которые они хотели услышать. Они поняли, что я могу решать какие-то проблемы, и наняли меня.
Так я устроился на первую официальную работу в IT, через 7 месяцев. Там я выучил PHP и JavaScript; параллельно пописывал на Java для знакомых, когда было свободное время, потом начал больше времени изучать JavaScript, уделять время NodeJS – тогда был 2014 год, эта платформа начала как раз активно развиваться, вокруг нее хайп пошел. Я и по сей день на ней пишу, классная штука. Дальше у меня началась череда работ, подработок; я учился, учился, получил много опыта. Тут, наверно, я как раз и стал миддлом – разработчиком, который уже начинает более рационально подходить к решению проблем. Миддл начинает решать задачи более правильно, он может решить задачу, даже если она сложная, и он изначально не знает, как ее решать – он все равно найдет решение. Так я для себя оцениваю этот уровень.
Дальше у меня было все, как у нашего гипотетического Пети. Я работал, учился, развивался – в принципе, по сей день этим и занимаюсь. Наверно, это вся моя история.
❒ Маленькая поправка.. Сегодня перед выступлением я смотрел комментарии на хабре, и там один человек написал такое: история успеха ничему не научит, гораздо полезнее истории неуспеха, на их основе можно понять, чего и как не надо делать. Такие истории у меня, на самом деле, тоже есть. К сожалению, время ограничено – иначе я мог бы часов 5 рассказывать интересные истории из своей жизни – но у меня есть знакомые (и знакомые знакомых), которые так и не стали разработчиками по разным причинам. В основном что происходит – люди не верят в себя, люди боятся, люди слушают своих родных, которые их «мотивируют» (да куда ты пошел, зачем, чего). Ребята, нужно верить только в себя, самому себе доверять. Если вы понимаете, что вы способны на это – вы точно на это способны. Сядьте и делайте, не ищите отговорки, не ищите отмазки. Но самое страшное – это не то, что нет веры в себя, а то, что есть лень. Люди просто не хотят напрягаться и думать, они хотят приходить с работы домой и играть, или садиться на диван с пивом. Это лень.
Есть несколько примеров. Один человек работает инженером, он кодит уже 10 лет, у него абсолютно нормальные мозги. Я с ним часто общаюсь. Но он инженер-то не особо успешный – по решениям он нормальный, технически грамотный, но по успеху – ну такое. Он кодит в свободное от работы время, кодит интересные вещи, но он так и не стал программистом. Ему лень, он не хочет тратить силы на то, чтобы уволиться, несколько месяцев потратить на обучение – вложить это время в себя, и найти себе первую работу. Еще один интересный случай – я познакомился с чуваком, который чинит велосипеды (я к нему свой велосипед на ТО отгонял). Он попробовал и устал. То есть, он мне рассказывал, что он занимается frontend, что начал изучать. А через три месяца мы встретились снова, и он сказал – нет, я бросил, там что-то сложно, думать надо. Ну, дам. Там надо думать.
❒ Есть еще отличный кейс: человек называет себя программистом, свято верит в это. При этом работает черт знает где, занимается черт знает чем и пять лет учит Java. Пять лет. Не знает ничего, зато пять лет учит Java. По-моему, самый классный антипример. Натуральнейшая прокрастинация. Так жить не надо. Если уж вы что-то взялись делать – делайте, это так везде работает.
❒ Еще несколько минут хотелось бы уделить тому, что делать Пете, если он не хочет быть программистом. Ну, IT большое, и не программированием единым. Мы можем много чем заниматься. Я вот работаю в компании Voximplant, и у нас здесь не только одни программисты. Voximplant – это платформа, это бизнес, это серьезное решение. Я, готовясь к этому выступлению, как раз решил посмотреть, кто нам нужен на работу. Почему бы и нет, это вполне релевантно. Я смотрю – и оказывается, что направлений очень много. И это все равно – IT: то есть, ты так или иначе будешь крутиться в этой сфере, даже не будучи программистом.
Например, user interface/experience (UI/UX) design – здесь надо делать интерфейсы, рисовать это все, делать качественным то, с чем потом конечный пользователь работает, продумывать это все. Технический писатель занимается написанием технической документации к решениям, которые пишут программисты. Есть Sales-менеджеры, которые занимаются продажами. Или Presales-менеджеры и инженеры – это те, кто еще до продажников общается с заказчиками и предлагает им какие-то решения; менеджеры здесь – ближе к бизнесу, а инженеры – ближе к технической стороне, и они могут на этапе предпродажи сказать клиенту, как сделать получится, а как – не получится. Есть business development-менеджеры, которые выясняют потребность клиента и то, чем мы непосредственно можем им помочь. Также есть, например, event and communications-менеджеры, которые организуют мероприятия любого уровня – все конференции, наша конференция Intercom, например, или другие конференции, которые проводит компания; тоже отличная профессия. Есть project-менеджеры, account-менеджеры, customer success-менеджеры, которые занимаются непосредственно ведением проектов, аккаунтов, продуктов внутри компании. Есть всевозможные юристы, HR или просто рекрутеры, которые занимаются поиском и наймом сотрудников. Контент-менеджеры, таргетологи, маркетологи.
Просто откройте Headhunter и посмотрите – нашу компанию, или какую-то другую. Профессий очень много, открытых вакансий очень много. Вам даже не обязательно менять свою профессию, если вы – хороший специалист в своем деле, но при этом работаете в компании, которая вам не нравится по каким-то причинам (стагнация внутри компании, странное руководство, все вокруг старые и больные), и вам тяжело в ней. Вы всегда можете найти себе работу по душе, просто сменив направление на IT-шное. И вы будете находиться внутри IT, хотя и не будете писать код. Так что – заходите, смотрите на вакансии. Я думаю, вы всегда найдете для себя то, что вам интересно.
❒ По поводу того, что ожидает сферу в ближайшем будущем. Пандемия рынок не победила, и это самое главное. Это рынок победил пандемию. Ну, пока еще только побеждает, скажем так – но он эволюционировал, и это здорово. Мы с вами это видим сейчас, потому что мы не остались без работы и не умерли с голоду. Многие сферы, конечно, пострадали – те же самые рестораны. Смотрите, как там было: все было очень плохо, все закрывались, но потом люди поняли, что та же самая доставка посредством интернет-технологий решает проблему. Теперь можно заказать себе домой еду из ресторана и кайфануть по полной программе, как и в ресторане, но не подвергать при этом себя опасности. Поэтому, да, пандемия рынок не победила, и можно с уверенностью сказать, что бизнес будет продолжать переезжать в сеть. Он и сейчас это делает, и это хороший знак: это значит, что бизнес эволюционирует. И поэтому у нас будет все больше и больше работы. Вакансий с каждым днем становится больше, хорошие специалисты все более востребованы – это логично, потому что кому-то нужно решать эти задачи.
Но самое интересное – в том, что востребованы не только хорошие специалисты. Востребованы также и джуны, начинающие разработчики и любые из тех других профессий, о которых я упоминал. Рынок хочет людей, рынку нужны люди: рынку нужны деньги, а люди порождают деньги. Это обычный круговорот, и нужно этим пользоваться. Специалисты будут востребованы и дальше.
❒ По поводу пузыря – лопнет он или нет. Вопрос хороший, никто не может это знать, но можно судить по пандемии. Она очень сильно на нас подействовала, но бизнес все равно живет, и пузырь не лопнул. Мы продолжаем развиваться, продолжаем работать. Должно произойти что-то плохое на реально глобальном уровне, чтобы пузырь лопнул – пока такого не предвидится, и мы можем спокойно работать, учиться, искать работу, зарабатывать деньги и приносить пользу. Это мое личное мнение, но, опять же, я просто много кручусь в этих сферах и понимаю, как это все устроено. Я понимаю, что IT будет продолжать все новые и новые горизонты, становясь все более привлекательной сферой. То есть, в ближайшее время отката не предвидится, и бояться этого не нужно.
❒ Сделаем выводы из всего, о чем мы сегодня говорили. В 2021 году нужно быть в IT. Серьезно. Если вы работаете в какой-то компании, где нет IT, и ваше руководство или ваш бизнес всячески сопротивляется выходу на IT-рынок – я бы советовал вам сменить работу. Не сменить профессию, но работу — однозначно. IT-сфера будет расти и развиваться, и бизнес будет продолжать уходить в IT – мы сегодня об этом с вами много говорили, и мы все понимаем, что это правда. Интерес к сфере будет расти, рынок будет греться все сильнее, и у нас будет работа. Наш Петя сможет стать программистом, я в него верю — но только если действительно захочет. То есть, не только захочет, но и приложит усилия – поэтому, если он все это сделает, соберется с силами и сумеет, то у него все обязательно получится, и он найдет работу. Если Петя не захочет быть программистом, то он попадет в IT другим путем – благо, их сейчас много. Нужно верить в себя и не лениться, тогда у вас все получится.
То есть, мне кажется – это просто лень, вот и все. Вряд ли человек никогда не слышал о программировании: 2021 год на дворе, куда ни зайди – рекламируются курсы программирования, открываешь любой ролик на YouTube – видишь рекламу. Если он этим никогда не интересовался – ну, взял и заинтересовался. Посмотрел какой-нибудь бесплатный ролик – наш сегодняшний вебинар, хотя бы – и уже многое для себя узнал. Понял, что это классно, интересно. Или, наоборот, подумал: нет, фигня все. Поэтому мне кажется, что это вполне реально.
По поводу литературы – у меня есть 10-15 книг, которые я могу рекомендовать, но для новичков среди них нет ничего. Мне кажется, что лучше смотреть не книги, а курсы – ну, в моем случае это видео, например. Однако есть проект Джуность, который я упоминал вскользь сегодня – это тот проект, который мы с ребятами сделали, когда я еще в Mechanica/ANMEDIO работал; мы его сделали для того, чтобы распределять по грейдам (junior-middle-senior, и еще по три градации внутри каждой) наших сотрудников. Там есть материалы для обучения, в том числе. То есть, есть тег «что нужно знать, чтобы стать миддлом» — заходишь в этот тег, там есть материалы по обучению.
Единственное – я сейчас не являюсь прямым мейнтейнером проекта по ряду причин (в том числе, из-за нехватки времени), и некоторые материалы там уже подпротухли. Но там есть классные материалы, и, наверно, мы в ближайшем будущем обновим проект. Я как раз насобирал материалы; мы и внутри компании Voximplant занимаемся тем, что собираем материалы для какой-то подобной внутренней вещи, и на внешку (в Джуность) тоже стоит этими материалами поделиться. Так что, можно будет там посмотреть. А так – напишите мне, и я вам отвечу, покажу, расскажу.
Спасибо огромное всем, кто пришел. Еще раз повторю: этот путь вполне реален, и пройти его может каждый. Надо не лениться, прикладывать усилия и верить в себя. Никого не слушать, кроме себя самого. Если вы поставили себе цель – идите к ней, и все у вас будет хорошо.
На этой неделе в наших соцсетях выступил Николай Сладкий, один из создателей Николай, Senior Serverless JavaScript Developer в Voximplant – обладает восьмилетним опытом работы с бек- и фронтендом, влюблен *nix- подобные системы, vim, чистый код, архитектурные подходы и open source, как лучшее, что случилось с человечеством. Он — один из создателей SamaraITCommunity (сильно причастен к появлению GrindConf, VolgaHack, подкастов SITCast” и “SITalk”), а также он входит в команду авторов проекта Джуность.
Делимся с вами расшифровкой эфира и записью.
❒ Меня зовут Коля, фамилия моя – Сладкий. Мне 29 лет, я – разработчик, работаю сейчас на позиции Senior Serverless JavaScript Developer в компании Voximplant, занимаюсь движком Voxengine – это serverless-платформа. Я занимаюсь разработкой уже около 7.5 лет, почти 8; мои основные инструменты на данный момент – языки JavaScript и Go. То есть, на JavaScript мы делаем serverless, а на Go, когда нужно, докидываем перфоманса.
❒ Несколько слов о себе. Я занимался и backend, и frontend, то есть, я – full stack web developer, хотя больше backend-based. Как я уже говорил, это почти 8 лет опыта. Я являюсь devops culture addict-ом, то есть, я пропагандирую, что нужно везде докидывать operations, куда только можно, чтобы максимально автоматизировать процессы. Являюсь технологическим евангелистом, в частности, я очень сильно топлю за NodeJS – ну, тоже в каких-то разумных пределах. NodeJS это очень классная технология. Ещё я занимался архитектурой, построением web-приложений, работал тимлидом. Работал техническим директором в двух компаниях – в стартапе и в более крупной компании, которая называется Mechanica (раньше она называлась ANMEDIO).
Много занимаюсь разной общественно-полезной деятельностью – я думаю, это можно так назвать. Есть независимое сообщество разработчиков Самарской области – Samara IT Community, мы его когда-то сделали вместе с другими ребятами, теперь оно активно развивается без особого участия с нашей стороны (мы больше модерируем). В рамках нашего комьюнити мы делали интересные мероприятия, у нас была конференция GrindConf, несколько раз мы делали хакатон VolgaHack. Еще мы записываем подкасты SITalk и SITCast. Также я – стейкхолдер и один из создателей проекта “Джуность”.
Это проект для обучения, и он так называется потому, что его главная идея – в том, чтобы всегда как бы быть джуном и жить в погоне за новыми знаниями, за развитием. Еще я влюблен в *nix-подобные системы (так исторически сложилось), очень люблю vim, топлю за чистый код, чистую архитектуру, чтобы все было понятно, чтобы все легко читалось. Я топлю за open source, у меня есть много всего интересного по open source, я сам пишу open source — меня можно найти в GitHub. Вообще, я считаю, что open source – это одна из лучших вещей, что случились за все время существования IT-технологий.
❒ Почему я рассказываю про «войти в IT»? Наверно, должна быть какая-то подоплека. На самом деле, она есть: дело в том, что я два года своей жизни проработал в полиции, а именно в уголовном розыске. И в 2014 году я начал изучать программирование – это было сложно, странно, но я это сделал и поэтому могу вам что-то рассказать об этом. Через 7 месяцев после того, как я начал изучать программирование с нуля, я нашел свою первую IT-работу. Это не была работа супер-программистом: было что-то вроде вебмастера (поддержка сайта, SEO, контекст). С тех пор прошло уже почти 8 лет, я занимаюсь любимым делом, и всем советую. Я прошел тот самый путь, который предстоит пройти каждому человеку, который хочет войти в IT. Конечно, этот путь не будет 1 в 1, и конкретно мой опыт может быть нерелевантен для другого человека. Однако, скорее всего, я знаю многие из подводных камней, с которыми предстоит столкнуться, и на эту тему мы поговорим, порассуждаем и сделаем выводы. Возможно, я сегодня кому-то смогу помочь. Если хотя бы одному человеку это будет полезно – уже день не зря пройдет.
❒ Поговорим про сферу IT в целом – откуда у нее такая популярность? Мы не будем углубляться в детальную историю развития, а поговорим про то, что происходит сейчас в плане рынка, маркетинга, денежной составляющей популярности. Поговорим про то, как войти в IT и стать программистом – это будет самая длинная секция, на нее мы потратим больше всего времени; я буду рассказывать именно про программирование, потому что так исторически сложилось, что я – программист, и мне это ближе. Я расскажу немного про свой путь; возможно, кому-то это будет интересно или даже релевантно. У меня есть много знакомых, которые до сих пор работают там, где я работал, или в смежных структурах, и хотят изменить свою жизнь, но им чего-то не хватает для того, чтобы это сделать. Поэтому расскажу, как у меня это было.
❒ Можно ли попасть в IT без программирования? Мы все прекрасно понимаем, что IT – это огромная сфера, и даже уже не одна сфера, а очень обширное понятие. Поэтому не программистами едиными сыт рынок. Поговорим о том, что ожидает сферу в ближайшем будущем, и сделаем из этого всего выводы. Потом еще ответим на вопросы.
❒ Итак, поговорим немного про IT. Есть такая интересная фраза – даже не помню, где я ее слышал: «У вас должна быть очень серьезная причина, чтобы в 2021 году работать не в IT». Это шутка, конечно, но в ней есть большая доля правды. Уже в 2020 году – а сейчас уже 2021 год – IT было везде. То есть, IT проникает во все сферы. Уже нельзя сказать, что IT – это какие-то отдельные технологии, сейчас это – образ ведения бизнеса. Бизнес меняется до неузнаваемости. И для его правильно функционирования, роста и развития ему приходится уходить в сферу IT.
Мы прошли с вами через серьезное испытание, которое для нас еще даже не закончилось, а для многих стран оно вообще только начинается. Но, тем не менее, мы сейчас уже более комфортно чувствуем себя в этих условиях. Возьмите это же время год назад – март, апрель; помните, что происходило, когда объявляли локдауны и все уходили на удалёнку? Было сложно, но, в основном, все сферы побеждают это. Даже сейчас мы с вами сидим – я сижу в одном месте, вы смотрите меня, возможно, из другого города или страны – и делаем это с помощью интернета, с помощью той самой IT-сферы. И нам это удобно. Получается, что так же мы можем работать. Люди созваниваются через Vox, через другие сервисы – так можно коммуницировать друг с другом, общаться, работать, зарабатывать деньги. Сфера здоровья точно так же сейчас уходит в IT, и вообще весь госсектор, все госуслуги это делают. Есть тот же самый сайт госуслуг, где сейчас можно, зарегистрировавшись и подтвердив аккаунт, записываться к врачу, например, а с мая можно будет даже перерегистрировать автомобиль при продаже; то есть, кучу всего можно делать. Доставка – опять же, на локдауне мы все это очень здорово почувствовали, и сейчас продолжаем пользоваться. Это очень здорово, очень удобно, когда не нужно выходить из дома, чтобы купить еду, купить другие вещи, сделать что-то еще – мы можем полностью удаленно это делать. Эквайринг, удаленный эквайринг или обычный безналичный расчет – как часто мы с вами сейчас пользуемся обычными физическими деньгами? Они уже просто не имеют такого смысла, какой в них вкладывался раньше. Транспорт, вся e-commerce, все гаджеты, которые мы носим в кармане – это все тоже IT. То есть, все сферы сейчас завязаны на IT, а IT – на всех сферах. Мы с вами уже непосредственно работаем в сферах, которые не могут без IT – либо в сферах, без которых само IT не может обойтись. Это замыкается рекурсивно на том, что все сферы не могут без IT.
И все это произошло, в первую очередь, благодаря развитию интернета. Многие люди не задумываются о том, насколько интернет мощное оружие, насколько это классная и крутая вещь в современном мире. Это далеко не только Facebook, Instagram и TikTok; люди обычно просто не думают об этом, но, на самом деле, интернет сейчас — это в первую очередь работа. Все вышеперечисленные сферы, про которые мы с вами говорили, сводятся в итоге к рынку. А рынок существует для того, чтобы зарабатывать деньги. То есть, интернет – это наше главное оружие для того, чтобы зарабатывать деньги. И для того, чтобы делать вещи, нужен только ноутбук, выход в сеть и какие-то скиллы. Получается, что запросы бизнеса уходят в сеть: тот бизнес, которого раньше не было в интернете – ему там, допустим, нечего было делать – в 2021 году должен там быть. Если его нет в интернете, то, скорее всего, его самого уже нет, или не будет – он постепенно деградирует и умрет.
Из этого можно сделать простой вывод: если у нас все больше появляется сфер, все больше появляется работы в интернете и вообще в IT, то ее кто-то должен делать. И мы постоянно слышим о том – особенно в последние несколько лет – что миру нужны программисты. Иногда кто-то утверждает об обратном, но мы-то с вами знаем правду. Миру нужны программисты, миру нужны IT-шники. И если на фоне спроса рождается предложение, то на фоне потребности бизнеса рождаются рабочие места. И эту работу кто-то должен делать. И, если эту работу кто-то должен делать, то о ней постоянно говорят, мы слышим об этом из каждого утюга, и люди начинают интересоваться. То есть, сфера разогревается, молекулы этой сферы двигаются быстрее, и люди уже начинают интересоваться извне – им становится интересно. Многие люди хотят что-то изменить в своей жизни – в основном, в погоне за чем-то интересным, или за деньгами – но все равно этому способствует то, что мы постоянно об этом слышим, потому что сфера сильно прогрета. Люди хотят что-то изменить в своей жизни – и начинают хотеть в IT. Или, как минимум, узнать об этом побольше.
И эти люди – это мы с вами. Так же, как я интересовался в 2014 году, и как вы интересуетесь сейчас – скорее всего, если вы пришли на эту лекцию, то вам это интересно. Я сразу оговорюсь, что я никакой не коуч: я обычный программист, который пишет код. Я просто в свое время уже прошел этот путь, и мне хочется поделиться с людьми. Я не рассказываю, как надо; возможно, у вас будет не совсем так, или совсем по-другому. Но я стараюсь мыслить логически, и у меня много знакомых, которые уже прошли этот путь, или собираются его пройти. Я думаю, если мыслить логически, то можно сделать из этого какие-то выводы, и в этом состоит наша сегодняшняя цель. Потом вы сможете еще раз все обдумать и уже сделать какие-то выводы для себя.
Давайте представим абстрактного персонажа Петю, который хочет войти в IT. Пусть он будет примерно нашего с вами возраста. Важная оговорка: возраст не слишком важен, и, если вам 35-40-50 лет, я не думаю, что вас это остановит. Конечно, будет чуть сложнее по ряду причин, но это не будет невозможно. Итак, Петя – нашего с нами возраста, он так же пришел сюда, чтобы узнать для себя что-то новое, и, конечно, он хочет войти в IT. Он хочет стать программистом, потому что это популярно сейчас – и он будет обязательно программистом, это его путь, он его выбрал для себя. Что он знает о программировании? Он знает, что это популярно. Потому что работы действительно много, отрицать это глупо; у нас есть вакансии, есть Headhunter, где мы можем их посмотреть, мы постоянно слышим новости, мы приходим в бар и слышим, как программисты общаются друг с другом о странных вещах. То есть, это действительно популярно. И мы знаем, что это хорошо оплачивается. По крайней мере, про космические зарплаты сейчас, опять же, из каждого утюга вещают, мы не можем пройти мимо этого – об этом громко говорят громкими словами.
Еще Петя постоянно натыкается на рекламу курсов. Я думаю, так у всех сейчас — мы постоянно натыкаемся на рекламу курсов, где из нас обещают сделать программиста за 3 месяца (недели, дня, часа). И Петя задумывается о том, чтобы попробовать. А почему нет – он молод (ну, или не очень) и полон сил, он может совмещать текущую работу с обучением, если постараться, и он не совсем тупой. Тут без обид, но мы должны прекрасно понимать: тут нужно будет думать головой. Думать надо везде, конечно, но в IT – чуть-чуть побольше, наверно. У Пети есть какое-то образование; это необязательно, но, скорее всего, если у тебя есть образование, то оно научило тебя учиться, и ты знаешь, что это такое. То есть, ты готов дальше самостоятельно обучаться. И еще Петя умеет в компьютеры – ну, потому что это все-таки IT, а в 2021 году надо уметь в компьютеры хоть как-то. Хоть серфить Интернет. Есть еще нюансы; ну, Петя понимает, что он – не самый умный, хотя и не самый тупой (опять же, без обид), и у него нет профильного образования, хотя бы технического; с техническим образованием будет проще, конечно, а с профильным – вообще другая история. Но у Пети этого нет. И, самое главное, он боится, переживает; это довольно тяжело – взять и сменить профессию. Но он решает попробовать.
И сейчас Петя будет задавать вопросы, а мы будем стараться ответить (это те самые вопросы, которые были в анонсе):
Q: Когда стоит менять профессию?Очевидно – когда ты ненавидишь свою работу. Если ты каждый день ходишь на работу, которую ненавидишь – не будешь же ты туда ходить всю жизнь. Нужно что-то менять. Еще – если ты не готов всю жизнь заниматься тем, чем занимаешься сейчас. Потому что, опять же, сложно просто прожить всю жизнь; это что получается – родился, потерпел и умер? Это странно.
Если он готов к тому, что это будет очень трудно, и нужно будет потратить много времени. Будем честными – программистам платят деньги, но платят не за просто так. Это сложно. Это не невозможно; это не rocket science – мы не запускаем ракеты в космос (ну, большая часть из нас не запускает), но это потребует очень много усидчивости, времени и сил.
И — если ты готов рискнуть своим временем. Потому что, опять же, почему бы и нет. Ты просто принимаешь это решение для себя, это – твоя ставка.
Но не стоит этого делать, если ты просто устал, если тебе нужно отдохнуть, чтобы дальше заниматься своим делом. Если ты психуешь, что-то у тебя идет не так, но при этом ты любишь (или хотя бы не ненавидишь) свою работу и готов всю жизнь ею заниматься, то, наверно, лучше не рыпаться. Это будет более правильным решением. Не нужно менять профессию, просто поверив в сказку. Про 300 тысяч в месяц – конечно, это есть, это все правда, мы видим эти зарплатные вилки. Но для того, чтобы зарабатывать деньги, нужно делать дела. Легко не будет. Если ты не любишь трудности – лучше пройди мимо. Программисты всегда превозмогают что-то, это не так просто, как хотелось бы. Если тебе нравится решать сложные задачи – это профессия для тебя, а если нет – нужно еще подумать, стоит ли оно того.
Q: Стоит ли идти в IT?Стоит, если ты понимаешь, что это будет очень сложно. Поначалу будет сложно, потом – еще сложнее, потом – еще сложнее, потом начнет немного отпускать, когда ты уже начнешь понимать, как что-то делать, и разбираться, как что работает.
Тебе нужно идти в IT, если ты технически подкован и ты не боишься этой вашей математики. Про математику мы еще поговорим позже, но, в целом, нужно понимать, что математика здесь присутствует. Не очень сложная, но, тем не менее, без нее никак не получится.
Если ты готов тратить все свободное время на обучение. Если ты учился в университете, ты знаешь, как проходят эти 5 лет. А если ты учился на заочном, ты ещё и прекрасно понимаешь, что такое учиться самостоятельно, когда тебе дают только материалы и показывают роадмап для продвижения. Здесь будет то же самое: ты будешь тратить очень много времени на обучение. Если тебе хочется тусить, то, наверно, это – история не для тебя. Но если бы готов вкладывать свое время в обучение, то действуй.
Если ты любишь сложные задачи, потому что программирование – это сложные задачи. С каждой последующей задачей сложность будет возрастать, если ты хочешь прогрессировать, а не прокрастинировать. И если ты усидчив и морально устойчив; ты сидишь весь день, разбираешься, смотришь, как все работает, дебажишь что-то, у тебя не работает; спустя какое-то время все заработало, ты радуешься, здорово, задачу решил – а потом все заново. Нужна усидчивость.
Это не займет две недели. «Сделаем из вас программиста за две недели» — это все сказки. Если ты не хочешь разбираться в математике, если не любишь думать, если родился для того, чтобы отдыхать – это точно не для тебя. Если хочешь тусить – тоже; по крайней мере, первое время придется постоянно вкалывать, чтобы когда-нибудь потом тусить. И – если ты не любишь или не можешь долго сидеть за одной задачей, то это тоже не для тебя. Это такая история, где нужно долго сидеть и много думать.
Q: Хорошо. Ты решаешь стать программистом, тебя пока ничто не пугает. Какое направление выбрать?Вот здесь начинается интересное. Что мы знаем про направления в программировании? Есть web frontend – это HTML, CSS, JavaScript и иже с ними; построены популярные фреймворки – React, Vue, Angular. Это более простой путь; не сказать, что все совсем просто – бывают разные задачи по степени сложности и в рамках одной профессии.
Мы сейчас будем идти сверху вниз, и каждое следующее будет сложнее – по моему собственному мнению. После frontend у нас идет backend – именно web-based backend. Это NodeJS, PHP, Go, это всякие Express, Laravel и прочие фреймворки, построенные на этих технологиях. Также у нас есть enterprise backend – это Java, C#, то есть, то, про что все слышали. Здесь есть Spring, .NET – технологии, на которых строят большие корпоративные приложения, большие распределенные сложные системы. Это банковская сфера и так далее.
Дальше у нас есть mobile development – разработка под мобильные устройства. Она сейчас на пике популярности, потому что есть Kotlin, Swift, Dart – это три языка, которые больше всего под мобильную разработку заточены. Здесь прямо волна хайпа, однако это довольно сложно.
Также есть направление data science, machine learning — работа с данными, обучение нейросетей. Это Python как язык программирования, платформы на нем всякие – GPT3, TensorFlow и прочие интересные решения от серьезных игроков, мировых корпораций, которые делают машинное обучение. Это сложно, но очень интересно.
Направление геймдева – разработки компьютерных игр – считается самым классным и кайфовым, конечно. Я прямо по себе помню – когда-то я думал, что буду разрабатывать игры, и это будет классно. Была такая идея. Но, когда я начал этим заниматься, я понял, что это совсем не весело. Если ты сам любишь игры – скорее всего, тебе совсем не понравится, что «под капотом» в разработке компьютерных игр. Языки программирования – скорее всего, самые хайповые сейчас C# и C++, потому что на C# построен игровой движок Unity, а на C++ — Unreal Engine и множество разных физических «кишков», хотя используются не только эти языки и платформы.
Сложное направление, на которое нужно учиться и учиться, потому что здесь нужна хорошая математика – это алгоритмы и структуры данных. Именно разработка и оптимизация: всякие карты, геолоки и прочие штуки, где надо по графам считать кратчайшие пути, например.
Есть еще более сложные вещи – например, сферы, связанные со сложным перфомансом, со сложными расчетами. Какие-нибудь «кишки» крипты или просто блокчейнов, которые будут написаны на специализированных языках программирования, например, Solidity (высокий уровень) или Rusty (низкий уровень), но это уже сложно.
Я бы советовал думать больше про первые 3-4 направления. Может быть, ещё data science на Python. То есть, web-контент, web backend, enterprise backend, mobile development плюс data science / machine learning.
Q: Что там с зарплатами на рынке, деньги платят?Деньги платят, да. Зарплаты есть. Но я не буду приводить цифры. Во-первых, они просто гуглятся: реально, достаточно зайти на headhunter. Иногда работодатель скрывает зарплатную вилку, но среднюю температуру по больнице определить просто – из 150-200 вакансий будет 15-20 с открытой зарплатной вилкой, можно посчитать среднее и определить, сколько денег платят тому или иному специалисту в той или иной области. Во-вторых, они сильно разнятся по регионам – если я буду рассказывать про московские зарплаты, а вы сами из солнечного города-курорта Самары, то получится несоответствие. Но, опять же – пандемия, удаленка, все это вот. Можно и московскую зарплату найти удаленно, и работать удаленно же на заграничную фирму – это тоже не проблема. Все зависит от скиллов, от своих умений, от умения себя продавать, что тоже немаловажно. Умение проходить собеседования, подать себя и повысить где-то свою зарплатную вилку – это тоже очень здорово, нужно понимать это.
Еще нужно понимать одну важную вещь. Особенно когда наш Петя еще молод и горяч, он еще ничего особенно не умеет, но уже очень хочет денег и постоянно слышит о том, что программисты получают много денег. Никто никогда не будет платить тебе деньги за просто так. Нужно делать вещи. Когда ты умеешь делать вещи, и умеешь это делать хорошо, тогда ты будешь получать много денег. Просто так никто тебе не заплатит.
И нужно понимать, что, как сказал дядя Бен, большая сила – это большая ответственность. Чем больше тебе платят, тем больше ты должен делать, тем более сложные у тебя задачи. Или не «чем больше платят», а «чем более высокая позиция» — не обязательно все в деньгах представлять. Для кого-то деньги не первостепенны: может быть, кто-то просто хочет самоутвердиться, добиться чего-то для себя в жизни. Стать лидом, например, или руководить вообще большой компанией – быть CTO или solution architect. Многие люди работают именно ради этого, а не ради денег. Я сам знаю много людей, которые работают именно по такому принципу: для них деньги – это, конечно, хорошо (можно вкусно покушать, если они есть), но они – не самое главное, что есть на рынке.
Q: Где учиться?Наверно, в 2021 году это самый сложный вопрос. Казалось бы, все должно быть наоборот; когда я начинал учиться в 2014 году, не было такого большого количества информации, какое есть сейчас, ее приходилось где-то выискивать. Я даже не представляю, как в каком-нибудь 2010 году учились самоучки. Сейчас информация в избытке, но это и является главной проблемой. Ее слишком много. Как в этой информационной буре найти то, что нужно тебе, и что не просто потратит твоё время и высосет деньги на платные курсы, а будет иметь хорошее соотношение «цена/качество»? При этом цена здесь учитывается не только в деньгах (может быть и бесплатно), но и в затратах времени.
Я думаю, самый лучший совет, который здесь можно дать – это найти знакомых, которые уже есть в этой сфере. Если у вас есть такие знакомые – можно с ними пообщаться, попросить у них материалы и советы, хотя бы по тому, по чему мы уже сегодня прошлись, по тем же самым сферам и выбору будущей профессии в IT. То есть, чем вы хотите заниматься, каким программистом хотите быть – frontend, backend, data science. Лучше посоветоваться с кем-то, кто в этом реально шарит, кто в сфере уже хотя бы несколько лет – 3, 5, лучше больше. Вам дадут советы, дадут материалы.
В дальнейшем с этими людьми можно договориться о менторстве, или просто о code review; чтобы вы, что-то написав, показывали им, а они отвечали: чувак, здесь надо все переделать, а вот здесь хорошо, делай так, а тут чуть-чуть поправь. Тогда вы будете лучше, быстрее и качественнее обучаться. Но – внимание, это очень важно – не приставайте к этим людям слишком сильно. Не просите научить вас всему, не требуйте от них чего-то. Старайтесь как можно меньше тупить и не доставать их вопросами, особенно теми, которые сами чувствуете себя в состоянии нагуглить. Я знаю по себе – я был тем человеком, который доставал своими вопросами. Я был и тем, которого доставали, но я всегда говорил об этом: успокойся, я не твоя мама, я не буду сидеть с тобой за тетрадками и решать твои домашние задания; я могу тебе помочь, подсказать, но ты должен делать это все сам. Поэтому мой вам совет – не доставайте этих людей. Если вы не будете их доставать, если это ваш хороший товарищ и отзывчивый человек, то ему будет даже приятно с вами это обсуждать, разговаривать. Еще важный момент: когда программист, инженер кому-то что-то объясняет, он сам как бы заново это проходит и начинает в этом еще лучше разбираться. Поэтому, если вы не будете сильно доставать собеседника, он, скорее всего, сам будет хотеть общаться.
К сожалению, легко нарваться на ерунду в сети, если вам никто не помогает. Сейчас масса плохих платных предложений – менторов, курсов, некачественных книг, на которые можно наткнуться и потратить время впустую. Плохих материалов, наверно, даже больше, чем хороших, поэтому и хорошо спрашивать у того, кто в теме. Хотя я бы не сказал, что тут 90 процентов грязи и только 10 годноты; наверно, соотношение чуть похуже, чем 50 на 50. Старайтесь показывать тот материал, который вы находите, своему другу, который вас менторит или общается с вами – он вам даст свой фидбек на этот материал. Это будет здорово.
По поводу материалов в целом – книг, вебинаров, курсов, подкастов, скринкастов и так далее – нет правильного решения. Кому-то больше заходят книги, кому-то – видео. Я люблю смотреть видео, я кайфую от него, я не так хорошо воспринимаю текст, как видео и звуковую информацию. Я слушаю много подкастов, и до сих пор очень много полезной информации для себя получаю из них, каждую неделю. Но кому-то подкасты совсем не заходят, кто-то не может что-то делать и одновременно слушать подкаст, например. Все индивидуально. Главное – учиться фильтровать источники, а на каких они носителях – дело десятое.
Q: По поводу платного контента – стоит ли его юзать?Очень важный момент: откуда берется платный контент? Его делают люди, для того, чтобы зарабатывать деньги. Они тратят на это свое время. Если люди тратят на это свое время – это первый фильтр. Если человек квалифицированный, то, скорее всего, там есть какая-то компоновка, фильтрация информации. Это всегда хорошо. Допустим, как мы учимся в университете на заочке: мы получаем источники, те же самые книги, статьи, нам говорят, откуда мы можем получить информацию, и мы идем и получаем ее самостоятельно. Нам никто не читает лекций, но нам дают источники.
Здесь такая же история. На курсах нам могут дать источники – правильные, хорошие – и нам могут структурировать информацию, то есть, подача будет структурированная. У нас будет роадмап: идем отсюда сюда, сюда, сюда, и при этом знаем, что действительно идем по пути куда-то, а не топчемся на месте, что часто бывает.
Еще по поводу платного контента. Очень важно понимать, что, хотя есть много теории, нам нужны практические задания. В программировании теория без практики – это ничто. Поэтому, если вы берете платный источник, то хорошо, чтобы там были задания. Живое наставничество и менторство всегда стоит своих денег, если вы понимаете, что человек, который с вами занимается – адекватный и является реальным специалистом в своем деле. Если он просит какие-то очень большие деньги, то это неадекватно; если это адекватные деньги, то почему бы их не потратить. Вы получаете человека, который шарит, в шаговой доступности – это очень удобно.
Есть такой момент, что потраченные средства могут вас мотивировать на большую отдачу. То есть – я заплатил денег, теперь надо их отрабатывать по полной. Со мной это отлично работает.
И, как с любым контентом, его точно так же надо учиться фильтровать. Общаться с другими людьми, смотреть, что за курсы, читать отзывы, получать фидбеки какие-то. Понимать, какой курс плохой, какой хороший. Это – плохой источник, который стоит неадекватных денег, это – хороший, который стоит адекватных.
Q:По поводу математики, английского языка и профильного образования. Нужна ли математика программисту?Я как-то раз в начале своего пути общался со своим товарищем, очень хорошим программистом, и задал ему этот вопрос. Он сказал: а нужна ли продавцу математика? И, вы знаете, это очень глубокая мысль – такое маленькое семечко, из которого может вырасти огромное дерево. Математика нужна вообще всем – математика везде вокруг нас. Я это понял потом, когда начал заниматься, поднял заново и переосмыслил школьные знания. Получается, что, конечно, программисту нужна математика. Но она нужны и продавцу – иначе он не сможет работать, деньги считать. Она нужна всем без исключения, и надо понимать, какой именно уровень математики нужен. Я скажу так: если вы выберете какое-то из доступных направлений (web frontend/backend), то там не будет чего-то особенного. Вы не будете запускать ракету в космос, никто от вас этого не потребует, особенно в самом начале. Никто не будет сразу давать суперсложные задачи, они все подъемные. В общем, конечно, математика нужна – в определенной мере.
По поводу английского языка: английский язык – это круто не только для программиста или IT-шника, а для человека в целом. Я думаю, через несколько лет это будет вообще must have. Будем честны: английский – это язык мира, на нем весь мир разговаривает. Вся официальная документация, все спецификации языков, протоколов, решений, RFC, чего-то еще – написаны на английском языке. То есть, если вы хотите читать и получать четкие знания, то вам нужен именно английский язык. Без него будет сложно.
По поводу образования – в некоторых случаях, конечно, корочка нужна, но это тоже скорее исключение. Придете в какую-то компанию работать, вас там спросят – а есть ли у вас образование, вы скажете – нет, вам скажут – ну и уходи, вы скажете – ок, и уйдете. В другое место, где нужны люди, которые задачи решают, а не светят корочками. Но, если вы вдруг думаете о том, чтобы пойти на второе высшее, я бы советовал сначала постараться понять, ваше это или не ваше, попробовать позаниматься, может быть, даже найти уже первую работу. Это не так сложно сейчас, на самом деле; может быть, вам потребуется полгода поучиться или, как максимум, год своего времени потратить на это. Но это будет гораздо лучше, чем потратить еще 3-4 года в университете или вообще бросить его через 1-2 года из-за того, что – будем честны – в университете вы не будете получать тех знаний, которые вам будут нужны для непосредственного решения проблем прямо сейчас. Все-таки университетская база знаний устаревает. Я не говорю, что это происходит во всех университетах, но, наверно, в большинстве своем они учат именно базовым вещам, а не решению задач. А если вы сами начнете учиться на курсах, то вы сможете начать решать задачи и почувствовать профит от решения своих задач, и это будет очень полезно.
❒ По поводу кодинга: сколько уделять времени именно на код. Теория — это здорово, конечно, но нужно кодить. Кодить нужно столько, сколько сможете. Очень много. Если вы хотите научиться писать код – надо писать код. Если вы не будете этого делать, а будете прокачиваться в теории, вы будете отличным теоретиком, может быть, но теоретикам, скорее всего, не платят деньги. Или это бывает редко. Нужна практика. Это как в школе: чтобы научиться делить столбиком, надо делить столбиком.
Допустим, вы всему научились, и начинаете искать работу. Что нужно для того, чтобы начать это делать? Нужна база. Базовые знания – математика та же самая, базовая: то есть, базовая логика, чтобы уметь писать решения, алгоритмы, алгоритмы структур данных. Это самое главное, что нужно программисту. Алгоритмы и структуры данных – самые простые, чтобы научиться решать задачи, без этой базы вы никогда не будете разработчиком. Также надо знать конструкции и синтаксис целевого языка программирования, библиотеки, фреймворка: то есть, не зная JavaScript, вы не устроитесь во frontend, не зная HTML и CSS, вы не устроитесь верстальщиком, не зная PHP, вы не сможете делать сайты. Это естественно. Синтаксис и конструкции надо знать довольно хорошо. Кроме того, нужно умение решать поставленную задачу. Пусть неоптимально, но верно. Когда вы – начинающий разработчик, молодой специалист, джун, от вас требуют одного: чтобы вы учились быстро, решая задачи. То есть, вы берете и делаете задачу, ее дальше передают в работу, а вы, научившись, следующую сделаете лучше.
Получается, что вам нужно решать поставленную задачу. Я бы еще советовал не пытаться выучить все на свете – это невозможно; и не ждать у моря погоды («я еще не готов, еще рано искать первую работу»): скорее всего, искать работу не рано, вы, наверно, готовы. Вы это почувствуете, или вам это кто-то скажет. Если вы несколько лет сидите, учитесь, но боитесь искать работу – вы что-то делаете не так. И еще важно ходить по собеседованиям. Как только вы начинаете это делать, вы набираетесь опыта собеседований, подтягиваете слабые места – на них вам указывают. И вы не боитесь провалов. Вы перестанете бояться, что вы придете на собеседование, и вам там скажут – чувак, да ты не знаешь ничего. Бывают токсичные собеседования, но это уже редкость. Скорее всего, вам просто скажут: вам не хватает этого, этого и этого. Вы скажете: окей, придете домой, позанимаетесь еще месяцок, пойдете на следующее собеседование. Один раз откажут, второй раз откажут, а к третьему разу вы все выучите, скорее всего, и вас возьмут на первую работу.
И, когда вы получите первую работу, главное – не расслабляться. Потому что работать придется очень много, нужно будет быстро расти и прогрессировать – вы никогда не перестанете учиться. Это такая ловушка. Вы в нее попадаете, когда начинаете обращаться в программирование и устраиваетесь на первую работу. Знаний здесь – бездонная бездна, и знать нужно много – не для того, чтобы начать, а для того, чтобы развиваться. Нужно пытаться вылезти из джунов, вырасти в своих знаниях, стать уверенным специалистом. Тогда вы будете двигаться все дальше и дальше, и это – только начало. Вам будет все сложнее и сложнее, но так будет не всегда.
❒ Вам действительно будет сложно. Вы должны быть к этому готовы. Но когда вы пройдете этот путь, даже тогда, когда вы просто получите первую работу, вы осознаете, что это – невероятный кайф. Когда вы развиваетесь, это очень здорово. Нужно ставить достижимые цели и идти к ним. Вряд ли вы станете премьер-министром планеты – такую цель ставить не надо. Ставьте себе короткие майлстоуны, идите к ним, получайте внутренние ачивменты – так вы будете развиваться. Нужно научиться декомпозировать сложные задачи на более простые, декомпозиция – это вообще лучший друг программиста. Как только вы разбиваете большую задачу на маленькие, оказывается, что с ними гораздо проще справляться. И однажды вы заметите, что уже прошло несколько лет, и вы все сидите, кодите, обучаетесь, тратите на это все свободное время, и вам это нравится.
Вот он, в принципе, весь путь. Наверно, я рассказал про все, что нужно знать человеку, который хочет войти в IT.
❒ Расскажу кратко о том, как было у меня. Это был примерно тот же самый путь, как я описал выше, только все было не так структурировано, и все было очень размазано, потому что я не особенно понимал, что я делаю, и мне было довольно сложно. Вообще, с компами я дружил с самого детства, но это значит только, что я ковырялся в винде, в реестре, ставил линукс, любил железки, в BIOS залезал – мне это все нравилось. Но я никогда не был программистом. В детстве я учился в лицее информационных технологий, но «что-то пошло не так», как говорится: у родителей закончились деньги на лицей, а там такая история – ты или очень умный, или учишься за деньги. Я ушел из лицея после 7 класса, перевелся в обычную школу с направлением в юриспруденцию, а после 9 класса пошел получать среднее специальное юридическое образование. О чем я, на самом деле, не жалею. После среднего специального получил высшее юридическое, а потом пошел работать по специальности. Около 2 лет я работал в уголовном розыске. Это было весело, это было интересно, это был замечательный жизненный опыт. Я совсем не жалею, что моя жизнь так сложилась.
Но в 2014 году я пришел к осознанию того, что занимаюсь чем-то не тем, и мне нужно что-то менять, делать другие вещи. Я собрался увольняться. Последние несколько лет я много думал о программировании, о том, что когда-то я этим занимался, и меня всегда к этому тянуло. Мне так нравилось, что можно весь день проводить за компом – я очень любил компьютеры, любил играть, тратил много времени на MMORPG какие-то. И почему бы точно так же не тратить время на программирование – сидеть по многу часов, пытаться решить задачу, получать от этого удовольствие? Я тогда проводил у себя эту параллель с MMORPG. И я понял, что настало время для этого, уволился, начал учиться. Я понял, что у меня отсутствует школьная база знаний, что я в плане технической подкованности и грамотности – математики, геометрии, физики – сильно отупел. Понял, что мне нужно все это подтянуть, начал общаться с ребятами. Походил по знакомым, собрал у них учебники по математике за 7-8-9-10-11 классы. Перечитал это все для себя, порешал задачи. Нашел несколько знакомых программистов, пообщался с ними и понял, что нужно садиться учиться и писать код.
Начал обучения с Java – я до сих пор считаю, что это лучший первый язык программирования. По ряду причин, основная из которых – то, что язык включает в себя все самое лучшее и самое худшее (или хотя бы многое). Становится понятно, как вообще вещи работают, как устроены истории с Java под капотом. Думаю, JavaScript – слишком запутанный язык для роли первого, а C++ — слишком многословный.
Прошло несколько месяцев, я начал писать на Java за еду, что называется (на самом деле, за опыт). Знакомые мне начали подкидывать задачи, по которым надо было писать код, они мне даже какие-то символические деньги платили. То есть, я уже начал работать – почувствовал, что я могу себе этим хотя бы на что-то зарабатывать. Где-то через 7 месяцев после того, как я сел учиться, у друга на работе появилась вакансия: они искали не то чтобы программиста, а человека, который бы сайты поддерживал, что-то там дописывал и настраивал рекламу. Там были PHP и JavaScript – я с ними был вообще никак не знаком, но все равно решил попробовать. Сходил на собеседование, ответил там на все вопросы, которые они хотели услышать. Они поняли, что я могу решать какие-то проблемы, и наняли меня.
Так я устроился на первую официальную работу в IT, через 7 месяцев. Там я выучил PHP и JavaScript; параллельно пописывал на Java для знакомых, когда было свободное время, потом начал больше времени изучать JavaScript, уделять время NodeJS – тогда был 2014 год, эта платформа начала как раз активно развиваться, вокруг нее хайп пошел. Я и по сей день на ней пишу, классная штука. Дальше у меня началась череда работ, подработок; я учился, учился, получил много опыта. Тут, наверно, я как раз и стал миддлом – разработчиком, который уже начинает более рационально подходить к решению проблем. Миддл начинает решать задачи более правильно, он может решить задачу, даже если она сложная, и он изначально не знает, как ее решать – он все равно найдет решение. Так я для себя оцениваю этот уровень.
Дальше у меня было все, как у нашего гипотетического Пети. Я работал, учился, развивался – в принципе, по сей день этим и занимаюсь. Наверно, это вся моя история.
❒ Маленькая поправка.. Сегодня перед выступлением я смотрел комментарии на хабре, и там один человек написал такое: история успеха ничему не научит, гораздо полезнее истории неуспеха, на их основе можно понять, чего и как не надо делать. Такие истории у меня, на самом деле, тоже есть. К сожалению, время ограничено – иначе я мог бы часов 5 рассказывать интересные истории из своей жизни – но у меня есть знакомые (и знакомые знакомых), которые так и не стали разработчиками по разным причинам. В основном что происходит – люди не верят в себя, люди боятся, люди слушают своих родных, которые их «мотивируют» (да куда ты пошел, зачем, чего). Ребята, нужно верить только в себя, самому себе доверять. Если вы понимаете, что вы способны на это – вы точно на это способны. Сядьте и делайте, не ищите отговорки, не ищите отмазки. Но самое страшное – это не то, что нет веры в себя, а то, что есть лень. Люди просто не хотят напрягаться и думать, они хотят приходить с работы домой и играть, или садиться на диван с пивом. Это лень.
Есть несколько примеров. Один человек работает инженером, он кодит уже 10 лет, у него абсолютно нормальные мозги. Я с ним часто общаюсь. Но он инженер-то не особо успешный – по решениям он нормальный, технически грамотный, но по успеху – ну такое. Он кодит в свободное от работы время, кодит интересные вещи, но он так и не стал программистом. Ему лень, он не хочет тратить силы на то, чтобы уволиться, несколько месяцев потратить на обучение – вложить это время в себя, и найти себе первую работу. Еще один интересный случай – я познакомился с чуваком, который чинит велосипеды (я к нему свой велосипед на ТО отгонял). Он попробовал и устал. То есть, он мне рассказывал, что он занимается frontend, что начал изучать. А через три месяца мы встретились снова, и он сказал – нет, я бросил, там что-то сложно, думать надо. Ну, дам. Там надо думать.
❒ Есть еще отличный кейс: человек называет себя программистом, свято верит в это. При этом работает черт знает где, занимается черт знает чем и пять лет учит Java. Пять лет. Не знает ничего, зато пять лет учит Java. По-моему, самый классный антипример. Натуральнейшая прокрастинация. Так жить не надо. Если уж вы что-то взялись делать – делайте, это так везде работает.
❒ Еще несколько минут хотелось бы уделить тому, что делать Пете, если он не хочет быть программистом. Ну, IT большое, и не программированием единым. Мы можем много чем заниматься. Я вот работаю в компании Voximplant, и у нас здесь не только одни программисты. Voximplant – это платформа, это бизнес, это серьезное решение. Я, готовясь к этому выступлению, как раз решил посмотреть, кто нам нужен на работу. Почему бы и нет, это вполне релевантно. Я смотрю – и оказывается, что направлений очень много. И это все равно – IT: то есть, ты так или иначе будешь крутиться в этой сфере, даже не будучи программистом.
Например, user interface/experience (UI/UX) design – здесь надо делать интерфейсы, рисовать это все, делать качественным то, с чем потом конечный пользователь работает, продумывать это все. Технический писатель занимается написанием технической документации к решениям, которые пишут программисты. Есть Sales-менеджеры, которые занимаются продажами. Или Presales-менеджеры и инженеры – это те, кто еще до продажников общается с заказчиками и предлагает им какие-то решения; менеджеры здесь – ближе к бизнесу, а инженеры – ближе к технической стороне, и они могут на этапе предпродажи сказать клиенту, как сделать получится, а как – не получится. Есть business development-менеджеры, которые выясняют потребность клиента и то, чем мы непосредственно можем им помочь. Также есть, например, event and communications-менеджеры, которые организуют мероприятия любого уровня – все конференции, наша конференция Intercom, например, или другие конференции, которые проводит компания; тоже отличная профессия. Есть project-менеджеры, account-менеджеры, customer success-менеджеры, которые занимаются непосредственно ведением проектов, аккаунтов, продуктов внутри компании. Есть всевозможные юристы, HR или просто рекрутеры, которые занимаются поиском и наймом сотрудников. Контент-менеджеры, таргетологи, маркетологи.
Просто откройте Headhunter и посмотрите – нашу компанию, или какую-то другую. Профессий очень много, открытых вакансий очень много. Вам даже не обязательно менять свою профессию, если вы – хороший специалист в своем деле, но при этом работаете в компании, которая вам не нравится по каким-то причинам (стагнация внутри компании, странное руководство, все вокруг старые и больные), и вам тяжело в ней. Вы всегда можете найти себе работу по душе, просто сменив направление на IT-шное. И вы будете находиться внутри IT, хотя и не будете писать код. Так что – заходите, смотрите на вакансии. Я думаю, вы всегда найдете для себя то, что вам интересно.
❒ По поводу того, что ожидает сферу в ближайшем будущем. Пандемия рынок не победила, и это самое главное. Это рынок победил пандемию. Ну, пока еще только побеждает, скажем так – но он эволюционировал, и это здорово. Мы с вами это видим сейчас, потому что мы не остались без работы и не умерли с голоду. Многие сферы, конечно, пострадали – те же самые рестораны. Смотрите, как там было: все было очень плохо, все закрывались, но потом люди поняли, что та же самая доставка посредством интернет-технологий решает проблему. Теперь можно заказать себе домой еду из ресторана и кайфануть по полной программе, как и в ресторане, но не подвергать при этом себя опасности. Поэтому, да, пандемия рынок не победила, и можно с уверенностью сказать, что бизнес будет продолжать переезжать в сеть. Он и сейчас это делает, и это хороший знак: это значит, что бизнес эволюционирует. И поэтому у нас будет все больше и больше работы. Вакансий с каждым днем становится больше, хорошие специалисты все более востребованы – это логично, потому что кому-то нужно решать эти задачи.
Но самое интересное – в том, что востребованы не только хорошие специалисты. Востребованы также и джуны, начинающие разработчики и любые из тех других профессий, о которых я упоминал. Рынок хочет людей, рынку нужны люди: рынку нужны деньги, а люди порождают деньги. Это обычный круговорот, и нужно этим пользоваться. Специалисты будут востребованы и дальше.
❒ По поводу пузыря – лопнет он или нет. Вопрос хороший, никто не может это знать, но можно судить по пандемии. Она очень сильно на нас подействовала, но бизнес все равно живет, и пузырь не лопнул. Мы продолжаем развиваться, продолжаем работать. Должно произойти что-то плохое на реально глобальном уровне, чтобы пузырь лопнул – пока такого не предвидится, и мы можем спокойно работать, учиться, искать работу, зарабатывать деньги и приносить пользу. Это мое личное мнение, но, опять же, я просто много кручусь в этих сферах и понимаю, как это все устроено. Я понимаю, что IT будет продолжать все новые и новые горизонты, становясь все более привлекательной сферой. То есть, в ближайшее время отката не предвидится, и бояться этого не нужно.
❒ Сделаем выводы из всего, о чем мы сегодня говорили. В 2021 году нужно быть в IT. Серьезно. Если вы работаете в какой-то компании, где нет IT, и ваше руководство или ваш бизнес всячески сопротивляется выходу на IT-рынок – я бы советовал вам сменить работу. Не сменить профессию, но работу — однозначно. IT-сфера будет расти и развиваться, и бизнес будет продолжать уходить в IT – мы сегодня об этом с вами много говорили, и мы все понимаем, что это правда. Интерес к сфере будет расти, рынок будет греться все сильнее, и у нас будет работа. Наш Петя сможет стать программистом, я в него верю — но только если действительно захочет. То есть, не только захочет, но и приложит усилия – поэтому, если он все это сделает, соберется с силами и сумеет, то у него все обязательно получится, и он найдет работу. Если Петя не захочет быть программистом, то он попадет в IT другим путем – благо, их сейчас много. Нужно верить в себя и не лениться, тогда у вас все получится.
Q: У меня только один вопрос – насколько реально человеку с уже сформировавшимся мозгом, после 25 лет, не испытывавшим до этого интереса к программированию, взять и начать этим заниматься? А если был какой-то интерес – почему не углубился в тему самостоятельно, ведь IT-хайпу уже лет 10 точно? Можно было давно обратить внимание.Могу сказать по себе. Интерес у меня был всегда, но меня всегда что-то останавливало. Лень, скорее всего (сидишь на диване, смотришь сериал – все нормально) и страх (ничего не получится, работу не найду, время потрачу). Я не говорю, что это плохо – но, если ты постоянно этим занимаешься, то с твоей жизнью никаких изменений не произойдет. Мне тогда было 24 года, если я не ошибаюсь, и я считаю, что у меня мозг тоже был уже вполне сформировавшийся. Осознание, конечно, может приходить в разном возрасте.
То есть, мне кажется – это просто лень, вот и все. Вряд ли человек никогда не слышал о программировании: 2021 год на дворе, куда ни зайди – рекламируются курсы программирования, открываешь любой ролик на YouTube – видишь рекламу. Если он этим никогда не интересовался – ну, взял и заинтересовался. Посмотрел какой-нибудь бесплатный ролик – наш сегодняшний вебинар, хотя бы – и уже многое для себя узнал. Понял, что это классно, интересно. Или, наоборот, подумал: нет, фигня все. Поэтому мне кажется, что это вполне реально.
Q: какую литературу можешь посоветовать для новичков, где лучше ее искать, если спрашивать негде?Насчет «спрашивать негде» — я сейчас сделаю аттракцион невиданной щедрости и просто возьму и оставлю свой telegram. Собственно, у меня во всех соцсетях одинаковый никнейм nikolasmelui, я попрошу модераторов оставить ссылку. Можете мне написать напрямую, я точно смогу уделить 5 минут на то, чтобы с вами поболтать, ответить на вопросы и посоветовать, дать какие-то материалы для обучения, исходя из ваших потребностей.
По поводу литературы – у меня есть 10-15 книг, которые я могу рекомендовать, но для новичков среди них нет ничего. Мне кажется, что лучше смотреть не книги, а курсы – ну, в моем случае это видео, например. Однако есть проект Джуность, который я упоминал вскользь сегодня – это тот проект, который мы с ребятами сделали, когда я еще в Mechanica/ANMEDIO работал; мы его сделали для того, чтобы распределять по грейдам (junior-middle-senior, и еще по три градации внутри каждой) наших сотрудников. Там есть материалы для обучения, в том числе. То есть, есть тег «что нужно знать, чтобы стать миддлом» — заходишь в этот тег, там есть материалы по обучению.
Единственное – я сейчас не являюсь прямым мейнтейнером проекта по ряду причин (в том числе, из-за нехватки времени), и некоторые материалы там уже подпротухли. Но там есть классные материалы, и, наверно, мы в ближайшем будущем обновим проект. Я как раз насобирал материалы; мы и внутри компании Voximplant занимаемся тем, что собираем материалы для какой-то подобной внутренней вещи, и на внешку (в Джуность) тоже стоит этими материалами поделиться. Так что, можно будет там посмотреть. А так – напишите мне, и я вам отвечу, покажу, расскажу.
Спасибо огромное всем, кто пришел. Еще раз повторю: этот путь вполне реален, и пройти его может каждый. Надо не лениться, прикладывать усилия и верить в себя. Никого не слушать, кроме себя самого. Если вы поставили себе цель – идите к ней, и все у вас будет хорошо.