Каждый когда-то был новичком в программировании: для кого-то оно начиналось с калькуляторов и перфокарт, для кого-то — с первой установки IDE и обманчиво простой программы «Hello, world!». У одних оно как будто в крови, другим даётся с большим трудом, и многие сдаются еще на первых порах. Попробуем разобраться, через какие тернии проходят новички и что именно мешает им стать-таки программистами.
Один первым делом лезет в Google с запросом «how to become a software developer», кто-то спрашивает совета у знакомого разработчика, ну, а кто-то тут же начинает штудировать учебники. И скоро новичок начинает вариться в компоте мнений, советов, туториалов, онлайн-симуляторов, курсов, pet- и, возможно, даже opensource-проектов. Рано или поздно наш без пяти минут программист захочет привести всё к общему знаменателю — либо с помощью ментора, которому он будет безоговорочно доверять, либо же записавшись на курсы, которые должны, по крайней мере, помочь ему систематизировать знания.
Сразу же опустим случаи, когда человек, эдакий самородок, самостоятельно прошел несколько онлайн-курсов по программированию, прочитал пару книг, забацал pet-проект и, о чудо, научился программировать и его взяли на работу. Такие люди, опьяненные успехом, как правило, не бросают своё IT-приключение на полпути. Поэтому дальше речь пойдет не о них, но о простых смертных, которые ищут поддержки во внешнем мире.
Курсы
На курсах преподаватель сможет уделять нашему новичку лишь ограниченное время, кратное количеству слушателей. И во столько же раз меньше преподаватель будет понимать особенности и потребности каждого ученика. По сути на курсах царит методологическая уравниловка, где с большой долей вероятности «побеждают» один-два латентных программиста, которые тянут всю группу, тогда как все остальные начинают думать, что им программировать «не дано». И, что ещё хуже, начинают от этого лениться больше, чем если бы они вообще не пришли на курсы.
Так что перед записью на обучение нужно быть морально готовым, что ничего не получится и что будут другие, которые соображают лучше тебя, которые, кажется, понимают лектора с полуслова, и у которых почти всё всегда компилируется с первого раза. Эта готовность позволит не сдаваться после первого провала. Ментальная заготовка под конец курса должна быть примерно такой: «Это не я глупый, но курсы никчемные, поищу-ка я для себя что-нибудь более подходящее». Может, и не пригодится, но пусть будет.
Миф о погружении в среду программистов
Раз в пятилетку бывает чудо, когда на курсах находится комрад (или комрады), с которыми интересно и которые друг другу помогают. По-идее, в такой среде проще. Но так как на курсах обычно все чужие, а доллары в глазах ещё и способствуют установке «человек человеку — волк», то вероятность этого события ничтожна. Да и учёба — это всё-таки занятие сугубо индивидуальное, — программированию нельзя научить, ему можно лишь научиться. И явно не у новичка. Поэтому присутствие в учебном процессе лишних людей может приносить лишь мотивационную пользу.
Если же на курсах обещают приз в виде работы подмастерьем на реальном проекте, но он достается не вам, то здесь снова достаточно легко впасть в хандру. Что ж это такое, после окончания курса меня даже в подмастерья не берут? Чтобы на этом моменте не опускались руки, следует четко зарубить себе на носу, что многие курсы — не более чем механизмы по выкачиванию денег из доверчивых студентов. Поэтому не стоит выбирать из них те, которые сулят выучить программирование за 1 месяц.
Выберите те, которые порекомендует разбирающийся в теме человек, либо найдите бесплатные (по крайней мере, вы ничего не теряете). В противном случае есть большой шанс разочароваться и раньше времени записать себя в неудачники, ещё и заплатив за это кровно заработанными.
Ментор
Всё чаще можно встретить людей, которые ищут себе в пасторы специалиста-учителя, который бы наставил их на путь истинный — указал, какие книги читать, в каком порядке технологии изучать, да помог бы с решением насущных тупиковых проблем (не обязательно даже связанных с кодингом). Ментор — это хороший выбор не только потому, что он будет уделять своему послушнику 100% времени и внимания (в отличие от лектора), и лучше поймет тонкости его характера и работы мозга, но и потому, что он один будет нести ответственность за одного человека. Тогда как на курсах лектору при виде неудачи одного из учениковт легко «съехать» на отговорке в стиле «У меня ведь кроме него ещё N-человек» или «Не могу же я один за всех отвечать!».
Для ментора неудача одного — трагедия, для лектора — статистика.
Но здесь есть тонкий момент: такие люди на дороге не валяются. Настоящий учитель — такая же редкость, как и способный ученик. Как не каждый чемпион может стать тренером, так и не каждый программист может стать ментором. Поэтому к выбору наставника следует подходить очень внимательно, иначе ментор может нанести такой же вред, как и неудачно выбранные курсы. Выбор этот должен быть взаимным. В этой связи самый надежный вариант — помощь друга. То есть человека, который хорошо вас знает и который сам хочет учить вас программированию. Разумеется, абсолютно бесплатно. Выбрав помощь друга, можно сразу же пропустить вопросы совместимости характеров и мотивированности. Кроме того, друг сможет оказать неоцененную моральную поддержку, когда ничего не получается и всё валится из рук. С этой точки зрения предпочтительнее выбрать менее опытного в программировании, но друга, чем более опытного, но чужака.
Как найти ментора, если нет друзей-программистов
Если же друзей-айтишников нет, стоит поискать технически подкованного человека, который любит обучать и с которым у вас схожее мировоззрение. Это может быть хорошим фундаментом для развития дружбы, которая поможет в отношениях ментор-ученик.
Проблема в том, что ментора проще всего найти уже на месте, то есть в компании. Получается замкнутый цикл — отсутствие знаний и навыков не позволяет ученику попасть в компанию, где есть ментор, который мог бы дать те самые знания и навыки. Менторы как будто спрятаны в компаниях посредством инкапсуляции. Чтобы с ними общаться, нужен public modifier в виде конференций, IT-тусовок, хакатонов и так далее. Каждой твари по паре и каждому ученику по учителю. Поэтому главное в этом вопросе не сдаваться. Ведь даже на собеседовании больше шансов встретить потенциального ментора, чем попивая сок у себя в квартале.
Если же человек каким-то чудом, при всех своих скудных познаниях, прошел собеседование и таки попал в компанию, то дело за малым: попробовать найти такого ментора (хоть на четверть ставки) в своей команде. Если учитель не обнаружен, тогда стоит обратить внимание на курсы или конференции, которые проводятся сотрудниками компании. Человек, который любит читать лекции, как правило, имеет преподавательскую жилку. Вот к нему-то и стоит обратиться.
Учитывая то, что у мужиков после определенного возраста появляется потребность делиться знаниями и опытом, ментора проще найти в среде тех, кому под- или за 30, чем среди
Оптимизм + наивность
Курсы и ментор, кроме знаний и навыков, могут компенсировать другую важнейшую проблему, с которой сталкиваются многие новички: неверие в свои силы. От этой беды никто не застрахован, даже КПИшники, учащиеся на «отлично» на прикладной математике и говорящие на трех европейских языках. Поэтому если рядом нет человека, который будет говорить тебе «ты можешь», «у тебя получится», остается надеяться только на себя. Как говорил главный герой фильма Kick-Ass:
It didn’t take a trauma, or cosmic rays or a power ring to make a superhero. Just the perfect combination of optimism and naivety.
То есть, если вы не являетесь гением-самородком, не ходите на курсы и не занимаетесь с ментором, выход один: стать наивным оптимистом. Наивность поможет поверить в то, что вы с вашими скудными навыками кому-то где-то да нужны. Тогда как оптимизм позволит проглотить неизбежную горечь первых тысяч ошибок и преодолеть крутизну кривой обучения. Незнание — сила!
Среди причин, по которым новички бросают программирование часто указываютследующие:
— Неподходящая учебная программа
— Неверная методология обучения
— Неправильный выбор языка программирования
— Слишком резкий рост сложности (Hello, world!)
и так далее
Плохому танцору всё мешает. Но если студент мотивирован, все эти нюансы имеют лишь второстепенное значение. У него может не быть ментора, он может записаться на бесполезнейшие курсы, выбрать слишком сложный язык или столкнуться со злополучной кривой обучения, но это всё — пустяки, если он и правда хочет научиться программировать. Вывод? Те, кто бросают — наверное, не так уж сильно хотели.
Бонус! Реально работающий, проверенный солюшн как освоить программирование за 21 день: