Три сотрудника CSSSR — начинающий специалист, наставник и опытный тимлид — рассказали о том, какой по их мнению формат обучения программированию работает лучше всего. Программисты поговорили о пользе онлайн-курсов и интенсивов, об обучении по книгам и о том, куда пойти работать новичку.
HTML и CSS – не программирование. Совсем.
---
Интенсивы и вебинары для новичка - это зло. А кто говорит обратное, тот или не понимает педагогического процесса, или специально вводит в заблуждение, чтобы заработать денег.
Интенсивы дают только информацию, которуб без подкрепления практикой вы через пару дней забудете. Такие объемы и для профессионалов даются тяжело. Для новичков - это ад. Мозг просто не может работать в таком режиме.
Вебинары - это перенос всех недостатков классно-урочной системы в интернет:
1. У учеников разная скорость усвоения материала. Для новичков это критично.
2. Скучные непрофессиональные преподаватели. Они может и крутые программисты, но педагоги слабые.
3. Нужно подстраиваться под график удобный преподавателю.
Хотите научиться программировать - не выбирайте вебинары и интенсивы - это самые неэффективные способы.
---
Книги. Книги нужно уметь подбирать. Очевидно, что не стоит начинать путь в CCS с "Секреты CSS. Идеальные решения ежедневных задач". Нужно начинать с лайтовых книг. С азов. Как подключить стили, как изменить цвет бокса, как вывести данные в таблицу.
Есть хорошие авторы, есть хреновые. Как и везде. Читал книгу Харви Дейтела по программированию на C++. Очень толковая. В процессе авторы предлагают создать проект симулятора лифта. Главное когда книги читаете - повторяйте весь код за авторами.
Скопировали, запустили, разобрались как работает, поменяли пару параметров, сломали программу, починили, разорались. Только так. Каждый пример повторяйте. Иначе всё в пустую. Так работает мозг. Повторенье - мать ученья. Это не просто пословица, в ней науки много.
Хотите учиться - книги обязательны. Лучше печатные, с ними проще раскладывать информацию по полочкам. Да и будет неудобно постоянно переключаться между электронной книгой и редактором кода.
---
Ютюб-уроки. Основная проблема - нет хорошей программы обучения. Есть набор роликов без связанной с ними практики. Без практики научиться программировать невозможно. Посмотрел 10 лайтовых уроков и тебе кажется, что ты умеешь программировать. Нихрена ты не умеешь.
Если ролики подкреплены практикой - отлично. Это один из самых эффективных способов обучения.
Смотришь как пишет код учитель. Не больше 10 минут. За это время можно объяснить/понять 1-2 понятия и мозг не устанет.
Повторяешь за учителем (как с книгами, только видео). Повторил, понял, поиграл с кодом, сломал программу, починил, разобрался, знания закрепились. Решил пару задач на эту тему. Перешел к следующему уроку.
Это важно. Ученики ленятся и начинают смотреть всё подряд. Без практики и повторения. Что сводит на нет всё обучение. Поэтому изучайте дозировано. Урок-повторение-задача-урок-повторение-задача.
Плюс можно отмотать и посмотреть урок еще раз, если не понял. Или ускорить видео, если схватываешь налету.
Совсем не разобрался в теме - пиши автору курса или на форуме.
Не успел на вебинаре - сам дурак, вебинар для среднего ученика, как вся школьная и вузовская программа.
Короткие уроки с последующей практикой - это один из самых эффективных способов обучения. Не верите? Посмотрите как учатся дети - смотрят за взрослыми, повторяют, привносят что-то своё, закрепляют. Природа же.
---
Наставник. Это высший пилотаж. Наставника нужно подключать когда зашел в тупик, для ревизии и для сложных тем. Не стоит тратить драгоценное время хорошего человека. Наставник - не учитель. Грамотный спец может многократно ускорить развитие.
---
Учитель. Хороший учитель лучше книги и лучше видео. Но только когда у него один-два ученика. Даже с двумя уже будут проблемы в скорости восприятия.
Если вы совсем новичок, то можете смело учиться паскалю. Учителей паскаля много, учителей js мало. Перескочить с паскаля на другой язык - без проблем. Замыкания и прочее освоите позже. Возможно с наставником.
---
Свой проект. Можно решать небольшие задачи, а можно сразу взяться за большой проект. Сайт школы сделать. Вирус написать (я написал, запустил, словил проблем, больше не писал). В большом проекте учишься быстрее, особенно всему современному, архитектуре, последним новинкам, библиотеке языка.
Я когда HTML и CSS учил - верстал уголовный кодекс. На фреймах. Динозавр.
Когда PHP учил - делал автопортал. 2 месяца программировал через боль. Потом фирму открыл и начали деньги зарабатывать. 2006 год был. Интернет - 3 рубля за мегабайт.
Потом Python и Django - снова свои проекты. Лучший способ научиться.
---
Небольшие задачи. Если свои большие проекты - это хорошо для понимания всей картины в целом. То мелкие задачи - это чтобы набить руку. В программировании, в математике, в алгоритмах.
Я брал справочники и решал их вдоль и поперек. Все задания. Графы, деревья, комбинаторику, численные методы. Начинал конечно с лайтовых задач на арифметику. Но попробуй остановись.
---
Еще немного педагогики. Есть три составляющих обучения - знания, умения, навыки.
Знания - это то, что вы получаете на уроках (видео или офлайн) и то, что у вас остается в мозгу. Самая ненадежная структура. Если не подкреплять, то через пару дней от знаний ничего не останется.
Умения - это когда вы с помощью знаний можете что-то сделать. Можете применить знания. Поэтому практика очень важна.
Навык - это умение, доведенное до автоматизма. На этом этапе вы становитесь программистом. Требует много практики. Очень много.
Пройдете весь путь ЗУН - будет счастье.
Есть еще 4 составляющая обучения - информация. Она стоит до знаний. Информацию вы получаете на ютюбе и в прочих злачных местах. Информация не задерживается в голове. Совсем. Но вам кажется, что задержалась. Это такой большой обман мозга.
Не нужно его обманывать, а нужно учиться и практиковаться. Тогда станете программистом или кем угодно. Это универсальные советы для любого дела.
В вашем комменте одно плохо - далеко мотать наверх, чтобы поставиь палец вверх :)
Хорошо, что хоть кто-то вслух говорит о том, что все эти курсы, вебенары, хтмлакадеми и пр. - говно. И научиться там чему-нибудь не получится. Только зря потратишь деньги и время.
Этот коммент достоин отдельной статьи
Такое громкое название, куда пойти учиться программисту. А на деле спросили верстальщика и двух мужиков с front-end'а. Очень показательно! В общей сумме они даже не покрывают полный стек веб разработки. А распинаетесь о программировании. Куда более наглядным было бы название "куда пойти, если твой максимум - это верстка и фронтенд"
Спасибо, посмеялся
Крупные компании, наоборот, пишут хороший код, но он подчинен тысяче внутренних правил.
Очень-очень хороший код.
Тонко :D
очень скучаю по временам, когда программист был строго инженером.
ментор - бывший манагер с 2 годами ЖСа.. ок
опытный тимлид - клепает видео-уроки.. ок
последняя работа в портфолио - август 15го года (оО)
у вас там, кстати, скролл в некоторых работах отваливается =)
новичкам и интересующимся (я 15 лет в разработке, последние года три углубился в архитекторы):
1. начинайте с фундаментальщины: алгоритмика, структуры данных, базы данных, матана немного(теория множеств да булева алгебра) и так далее. а уже потом можно лезть в практику, выбирать более конкретное направление и двигаться по нему, причем выбор того же языка, при достаточной базе, дело десятое, хоть по настроению.
2. единственное полезное в статье, под чем подпишусь - обратная связь крайне полезная штука - когда доберётесь от фундамента к практике - не бойтесь критики, публикуйте свой код на том же гитхабе, делитесь им в профильных сообществах - да, вас скорее всего будут буквально смешивать с грязью - терпите и выуживайте полезное в критике.
3. никогда, т.е. вообще никогда не останавливайте собственное обучение. ИТ развивается очень стремительно, иной раз даже за месяц расслабления можно отстать очень сильно.
4. если вы идёте в профессию за деньгами, то в большинстве случаев дальше среднего не прыгнуть. те баснословные деньги, которые привлекают входящих в профессию - их получают только фанатики, для которых решение задач всегда стоит на первом месте, а денежный вопрос некоторым даже в голову не приходит.
5. в обучении программированию (в принципе как и любой другой точной науке) просто не бывает лёгких путей и шорткатов - не ищите их, это тупик.
6. писать код не значит программировать. всегда нужно начинать с анализа и декомпозиции задачи. записать кодом своё решение - самая простая и скучная часть работы программиста.
7. про ВУЗы - с одной стороны это опционально, с другой ВУЗы учат учиться и систематизировать знания, что тоже полезный навык для будущего программиста.
извиняюсь за некоторый сумбур, припекло у меня от статьи немного =)
Не всем нужно становиться программистами-инженерами. Отрасль IT выросла, внутри профессий пошла специализация. Но ещё важнее, что появилась куча, огромная куча, типовых задач, которые могут решать и программисты не такой высокой квалификации, как вы описали. И за эти вещи ещё и платят прилично (по сравнению с другими областями).
Бомбит многих, видимо, от слова "программист", в которое теперь помещаются и простые смертные кодеры и суровые инженеры/архитекторы. И отдельно напрягает то, что до уровня достаточно хорошо оплачиваемого кодера можно дорасти сравнительно быстро (полгода-год), да ещё и без зубрёжки фундаментальных вещей.
Слава яйцам времена компьютеров с комнату 10кв/м прошли, и усатые дядьки в белых халатах вышли из моды. То что есть сейчас, кто бы как ни хотел, последствие развития и расширения IT в целом.
Для того, чтобы выложить app в appStore не обязательно быть кандидатом наук физиком-ядерщиком, в этом и вся прелесть.
Почему все статьи про то как стать "программистом" описывают людей которые пришли в профессию из-за денег? Где же вот те самые люди, которые под Спектрум писали на Бейсике по методичке откопанной у родителей на работе?
Я видимо упустил, не подскажете где в этой статье упоминание денег?
Ну и на дворе 2016 год, какой Спектрум, какой Бейсик.
де же вот те самые люди, которые под Спектрум писали на Бейсике по методичке откопанной у родителей на работе
Эти люди уже десяток-другой лет в индустрии и у них все хорошо.
Как отметили выше, видимо проходят эти времена "программистов от сердца" :) Тем не менее, пару недель назад в Минске проходил DataTalks и я видел много молодых (и не очень) ребят, которые действительно с нуля, с душей идут в программирование. При том, выбрали не самое простое направление: анализ данных, data science, open data.
Я и сам, честно говоря, пришел к этому не из-за денег, а от интереса. И это хобби по чуть-чуть стало работой.
Так что не всё потеряно и будут новые герои :)
Спасибо за ваш правильный вопрос :)
Я здесь! :) ещё на кассеты сохранял программки. :)
Какое же огромное спасибо хочется сказать за статью! Мне 19 лет, хочу начать верстать и кодить (не хипстер, а реально еще в 14 клепал на пхп с бесконечными гуглами и копипастой). Решил, что идти в вуз не имеет смысла, и проще и дешевле обучаться самому, расти до джуниора, а дальше сразу в любую компанию, которая возьмет за еду и проезд, и учиться и учиться на опыте.
Собственно, я к чему. Вот сижу на codecademy, прохожу курсы, но чувствую, что реально есть проблемы в прогрессе. Совет про друга-ментора и ревью кода от него действительно очень заинтересовал и придал свежего интереса. Буду искать. Книжечки тоже возьму на учет, но я пока вообще ни бэ ни мэ, еще даже бесплатный курс по HTML & CSS не завершил.
Попробуйте системно подойти к обучению. Не надо бросаться из стороны в сторону. Определите минимально необходимый навык для джунов и двигайтесь к нему. При желании пары месяцев действительно достаточно для попадания в компанию на позицию младшего разработчика.
http://javarush.ru/cs50.html
Вот, ознакомься, не html конечно, но для развития очень хорошо)))
"...пошёл в крупную контору человек на 50..."
Дальше можно не читать? Да?
Спасибо, полезная статья. В особенности из-за советов активного джуниора)
Где найти ментора?
Я беру менторов на mkdev.me, сначала брал по фронтэнду, теперь с ментором по бэкэнд/фулстак (Rails+React).
Инструктор Кекс одобряет эту статью!
По содержанию прокомментирую, что лучше всего сочетать практические интерактивные задания и работу над личным проектом под присмотром наставника. Практические упражнения позволяют получить и потренировать основы вёрстки, а на личном проекте эти основы закрепляются.
По моим ощущениям, самым плохим форматом остаётся видео, его нужно применять только тогда, когда без него никак. Текст — лучше всего (неважно в каком виде, учебник, курсы, лишь бы была хорошая структура).
Что касается вебинаров — это неплохой инструмент, особенно когда вся теория из вебинаров дублируется и в другом виде (доступна в виде презентаций, пошаговых демок, интерактивных курсов, подборок статей). Тогда вебинар можно использовать и с воспитательной целью, как классическую лекцию.
Для совсем новичков, как вариант, Unity и миллиарды туториалов к нему вполне успешно заменят начальные курсы по js, шарпу и мб джаве :thumbsup_tone1:
Статья веселая.
Считаю самым разумным стартом - устроится куда-то на полставки почти за еду, с условием что тебе будут рассказывать что к чему - т.е. менторство. Лучшие друзья на первом этапе Ctrl+C Ctrl+V кода более опытных людей, заточенный под решение твоей собственной задачи. Ну и дальше саморазвитие. Читать книги - трата времени, может 1-2 для общего развития. А так - только выполнение задач и изучение текстов строго по теме, а не про абстрактных слоников в вакууме.
"За 70 тысяч, потраченных на курс, можно сэкономить три месяца."
- далеко не каждый на старте профессии и за пол года столько получает, а чтобы начать работать за еду, достаточно просто проявить свой интерес и инициативу, даже с 0 знаниями можно пролезть на стажировку.
Сколько раз сталкивался с какими либо курсами, для себя решил, что более менее действенные для меня оказались - только интерактивные с консолью.
Больше всего всего улыбнуло: "...., активный джуниор"! Это как? Бывают еще и "пассивные"?
Даже немного пугающе звучит, из разряда ЛГБТ
Очень тяжело изучать будучи взрослым и образованным.
Думаешь такой изучить программирование, для этого нужно:
- подтянуть математику
- подтянуть логику (математика опять)
- подтянуть английский
- изучить синтаксис первого языка
- изучить железо
- изучить инструменты (IDE, SSH)
- изучить LINUX
В итоге кирпич несъедобным становится. Лучше всю картину не рисовать, а решать по мере поступления проблем.
Только когда сам начал потихоньку свое пилить, стал разбираться и ползти от уровня к уровню. Начал с установки Джумлы, потом что такое css, потом что такое php, потом др ЦМСки, потом js, потом свои парсеры, потом уже к ООП прикоснулся (и убежал от него, от Битрикса тоже убежал), потом Бутстрап и ЛЕСС, сейчас приблизился к фронтенду ;)
в 37 лет делать свистелки - перделки, мне кажется это провал.