Главная проблема движений по массовому обучению программированию
Дело в том, что общаясь с нашими потенциальными клиентами - родителями, мы слишком часто сталкиваемся с непониманием вроде «А что если мой ребенок не захочет быть следующим Марком Цукербергом? Вообще. Никогда.» Компьютер нередко ассоциируется со Всемирным злом, ну а идея о том что код может быть таким же инструментом самовыражения для ребенка, как карандаши, пластилин или конструктор Лего, кажется многим мамам и папам уж совсем далекой от реальности.
Но мы, на своем опыте убедившись в возможности кодинга превратить идею «на салфетке» в самый настоящий продукт, убеждены, что за этой идеей — будущее. Осталось только донести её до всех остальных, правильно выстроив методологию и маркетинг.
И ведь это проблема не только для нас, но и для всех остальных компаний, продвигающих программирование в массы. Очень элегантное и логичное решение проблеме предложили Евгений Брикман в своем блоге (http://www.ybrikman.com/writing/2014/05/19/dont-learn-to-code-learn-to-think/) и Симон Пейтон Джонс в выступлении TED(https://youtu.be/Ia55clAtdMs). Оба они говорят о разнице между навыком — тем, что можно применить здесь и сейчас, и дисциплиной — тем, что дает глубокое понимание мира вокруг. Очевидно, умение пользоваться микроскопом — навык, биология — дисциплина; решение квадратных уравнений — навык, математика — дисциплина. И, да, программирование — навык, а компьютерные науки — дисциплина. Никто не сомневается, что ребенку нужно учить физику не затем, чтобы стать физиком, а затем, чтобы понимать явления природы вокруг — точно так и компьютерные науки помогут объяснить явления «цифрового мира», который нас окружает. Евгений привел замечательную аналогию. Мы все, говорит он, летаем на самолетах, но получение прав на управление им никогда не входило в школьную программу. Однако на уроках физики мы узнаем, что такое гравитация, сила притяжения и давление, биология объясняет, что происходит с нашим телом на больших высотах, а история рассказывает, как и когда были созданы самолеты. И все это позволяет по окончанию школы иметь довольно неплохое представление о том, что такое самолет, как он работает, и как пользоваться им безопасно. Школа, как собрание дисциплин, учит, в первую очередь, думать.
Так чему же на самом деле стоит учиться, чтобы стать полноправной частью мира, где так много зависит от компьютеров и программного обеспечения и начать «думать, как программист»? Евгений рассматривает несколько концепций, которые, по его мнению, должны входить в школьный курс: умение решать поставленные задачи, логика, информатика, системное мышление и мышление в целом — понимание того, как устроен наш мозг, с целью его искусственного воссоздания. Многое из этого действительно затрагивается на уроках, однако слишком часто гораздо большая часть времени уделяется, например, работе с MS Office.
Программирование, на самом деле, поможет прокачать и problem solving, и логику, и понимание того, как устроены данные. Но возможны и другие, менее очевидные способы сделать овладение этими навыками более интересным и простым для детей младшего возраста. Ведь если они начнут изучать языки программирования уже обладая неким уровнем подготовки, вероятность успеха будет в разы выше.
Возьмём, к примеру, умение решать задачи так, как это делают программисты - для них алгоритм моделирования, декомпозиции и собственно решения задачи доведён до автоматизма. Детям же можно предложить осваивать этот алгоритм постепенно, в процессе игры. Именно так и действуют обучающие игры с "обратной" механикой, которые уже используются для изучения программирования. Так, перед ребёнком ставится привычная задача, с которой он мог бы столкнуться в любой другой игре: дойти до определённой точки, нарисовать фигуру, выполнить любую другую последовательность действий. Но если обычно каждое действие последовательности происходит сразу после его выбора - нажал - шаг, нажал - прыжок, то здесь нужно выстроить алгоритм ещё до того, как что-либо придёт в движение. Такая простая механика учит находить цель задачи - ставить вопрос - и моделировать ее решение в голове.
Конечно, в подобной методике нет ничего нового, но она работает, и поэтому в своей первой игре мы решили начать с неё. Но гораздо более интересная задача и для нас, и для всех, кто связан с преподаванием компьютерных наук - это поиск новых, интересных и креативных способов обучения "програмисткому мышлению", которое способно открыть перед следующими поколениями массу дверей.
А что вы думаете по поводу текущего положения системы обучения компьютерным наукам/программированию? Чему вас учили в школе?