Найти тему
Войти в IT

Как я учил своего десятилетнего сына JavaScript

Оглавление

Мы продолжаем серию публикаций о том, как профессиональные разработчики учат своих детей программировать.

С одной стороны, здесь собраны краткие и практически пошаговые руководства по обучению детей программированию. С другой - обычные жизненные истории о взаимоотношениях детей и родителей, размышления об особенностях детского восприятия мира.

Мы в IT-Академии Алексея Сухорукова не занимаемся детским обучением, но у нас и наших преподавателей есть много интересного и познавательного на эту тему. Однако начать мы решили с западного опыта. В этой серии статей профессиональные разработчики и основатели стартапов рассказывают о том, как обучали своих маленьких (иногда совсем маленьких!) детей кодированию.

Как я учил своего десятилетнего сына JavaScript

Рич Клейн (Rich Klein), Full-stack web developer, автор детских книг.

Моему сыну было семь лет и он спросил меня, чем я зарабатываю на жизнь. Естественно, он сразу захотел понять, что такое “веб-разработчик”, и с этого все и началось… Родители любят учить своих детей - это инстинкты. Мы учим их говорить, пинать мяч, рассказываем о ценностях, но что насчет программирования? Это не так весело, как новые игрушки, как конструктор Lego, но это одна из полноценных форм творчества и самовыражения.

Начинаем с нуля

Scratch - это очень забавно и интуитивно понятно. И эта платформа как раз и похожа на то самое Lego. Мой сын активно пользовался ей больше двух лет и даже сейчас иногда туда заглядывает.

Настоящее кодирование

Перемещение из теплого и уютного мира визуального программирования в суровый и холодный мир обычного ввода текста в командной строке (и следующих за этим сообщениях об ошибке) - это большой и важный момент.

-2

Первый язык

Я прочитал рекомендации и выбрал Python. Сам я работаю HTML / Javascript, PHP / Laravel, Node / Express, опыта с Python у меня не было. Но я сразу понял, что это лучшее решение и заказал книгу “Python для детей”. Python - легко читаемый и элегантный язык. На нем не надо писать так много кода, как это происходит на Cи-подобных языках.

Я взял ноутбук своей матери и установил на нем Python и Sublime. Навыки в Scratch позволили ему быстро освоить переменные, условные обозначения, циклы и списки. Все началось довольно весело, но потом мой сын остановился и потерял мотивацию. Задания из второй части книги не могли конкурировать с тем же Scratch, не говоря уж о Xbox. Но я понимаю, что это был отличный опыт для нас обоих, и уверен, что в будущем мой сын еще вернется к Python, потому что у него так много применений.

JavaScript приходит на помощь

Я помню, как он был взволнован, когда понял, что может просматривать код на сайтах и менять содержимое с помощью Chrome DevTools. Добавление “poop” в заголовки веб-страниц очень веселит детей. Я решил, что ему надо осваивать HTML и JavaScript, и заказал книгу “JavaScript для детей”, где даются все основы. Он работал по книге чуть больше часа по выходным, но добился значительного прогресса.

CodeSchool

Веб-разработка - обширная тема, и мне нужна была помощь. В определенный момент через пару месяцев его обучение потеряло первоначальный импульс и снова замедлилось. Мы подписались на CodeSchool и это сработало. Их смесь из музыки, видео-тренировок и онлайн-упражнений отлично подошли моему сыну, хотя иногда он просто слушал и искал новые джинглы. Потом он перешел к Javascript Road Trip Part 1, а сейчас мы работаем над Javascript Road Trip Part 3, и упражнения там сложны для нас обоих. Я сам многому научился вместе с ним.

Как объяснять детям концепции программирования

Тут важно переводить абстрактные компьютерные концепции на вещи из реального мира. Вот несколько примеров, которые отлично сработали для моего сына и помогли ему во всем разобраться.

Переменные. Переменные в JavaScript - это как обычные ящики, в которых хранятся вещи. Вы даете им имена точно так же, как клеите стикеры на коробки. Надо давать понятные имена, чтобы потом любые вещи можно было легко найти.

Массивы. Массив JavaScript похож на вашу книжную полку - на ней много разных вещей (книги, игрушки, рисунки, фотографии, карандаши) и она облегчает доступ к ним. Если вы попросите меня взять книгу о Гарри Поттере с левой стороны самой нижней полки, то я ее легко найду.

Функции. Они похожи на кулинарные рецепты. Если вы выпекаете печенье с шоколадной стружкой, то вам надо пройти через все этапы - собрать и смешать ингредиенты, выложить их на противень, предварительно прогреть печь и затем уже приступить к выпечке. Запуск функции также проходит через все свои этапы, пока не достигнет завершения (это как позвать вас на ужин).

Замыкание. Замыкание похоже на окаменелость динозавра. Вы можете получить информацию о динозавре из ископаемого, хотя сам динозавр исчез миллионы лет назад.

Файлы cookie. Я прихожу в пекарню и пекарь спрашивает меня, какое печенье я хочу. Потом я начинаю каждый день бывать в этой пекарне, и он уже просто спрашивает меня: “Вам как обычно?”. Этот пример был все же недостаточно четким (потому что пекарь все же совершал повторяющийся запрос), и тогда мой сын сам предложил пример с нашим парикмахером. Мы приходим, и он просто начинает стричь нас, потому что знает, чего мы хотим.

Программирование - это длинное путешествие

Оно требует времени, практики, терпения и приверженности, а для детей это не самые легкие вещи. Мы с моим сыном все еще находимся в самом начале этого пути, но потихоньку продвигаемся вперед. Я стараюсь не ограничивать его интерес к новым вещам. Например, мы недавно посетили одно небольшое событие, связанное с инди-разработкой компьютерных игр. Ему стало интересно, и теперь он смотрит видеоролики о Unity. Думаю, что следующим важным шагом для него станет разработка собственной программы или приложения. Не знаю, когда и как это произойдет, но в любом случае, его первый минимально жизнеспособный продукт будет для нас новой точкой отсчета.

P.S К январю 2017 года он потерял интерес к JavaScript (ему стало скучно). На самом деле, веб-разработка - это бесконечно длинный и сложный процесс обучения.

Вы как-будто поднимаетесь в гору, но на ее вершине оказываетесь у подножья другой горы.

Я никогда не заставляю своих детей кодировать. Я могу выступать только в роли наставника и мотиватора. Мой сын бросил код и увлекся художественной литературой. Но в определенный момент его заинтересовал искусственный интеллект и машинное обучение. И тогда мы вернулись к Python!