Здравствуйте, господа читатели.
Хотел бы обратиться к вашему опыту и спросить совета по изъезженной теме обучения программированию новичков, но с несколько специфической позиции. Поэтому сначала дам небольшую вводную.
У моей подруги есть племянница, 15-летняя девятиклассница. Ребёнок сообразительный, могущий быть старательным, но несколько несобранный и недисциплинированный. Полтора года назад увидела написанную мной на коленке для собственного развлечения маленькую приблуду — утилитку для автоматизации прицеливания в одной простой флеш-игрушке — и у неё загорелись глаза, «это круто, хочу тоже так уметь». Начал с ней заниматься, давать ей какие-то азы, как когда-то учили на информатике нас: схематическая архитектура компьютера, системы счисления, базовые синтаксические элементы языков программирования на примере С. Но с таким подходом, когда вместо «делать прикольное и интересное» пришлось на бумажке учиться конвертировать числа из десятичной в двоичную систему, мотивация у ребёнка быстро угасла и занятия пришлось прекратить.
Прошёл год, она пошла в 9-й класс, их начали учить паскалю, полученные годом ранее знания по системам счисления пригодились и добавили воодушевления, и вроде как процесс программирования нравится. Плюс вдохновилась ещё одной поделкой моего исполнения — ботом для накручивания голосов, которого я для какого-то конкурса сделал. Снова обращается ко мне, «не мог бы ты снова позаниматься со мной программированием». Ребёнок стал взрослее, умнее, и главное — на данный момент у него есть желание. На этот раз хочется всё сделать правильно.
А теперь, собственно, к сути вопроса.
На Хабре уже множество раз обсуждались темы типа того, на каком языке учиться программированию или какой язык преподавать в школе. И чаще всего наиболее популярными ответами являются советы учить не языку, а алгоритмам.
Это всё замечательно, но подойдёт такой подход далеко не всем. В первую очередь тем, чья мотивация на обучение сильна и кто уже худо-бедно представляет себе конечную цель. А для людей, чей интерес к программированию вызван скорее любопытством и вау-эффектом от чьих-то наработок, такой подход скорее убьёт запал и вселит ощущение скуки: «я просто хотел научиться делать видеоигры».
Поэтому что я хочу сделать — и в чём мне нужна ваша помощь — так это показать начинающему мир программирования во всём многообразии. Чтобы он знал, что бывают десктопные приложения с красивыми интерфейсами, серверный софт без интерфейсов вообще, программирование микроконтроллеров, баз данных, мобильных устройств, веб-приложений и т.д., и что все эти разные прикладные области программирования требуют различного подхода. Чтобы человек не просто научился отличать язык программирования от компилятора, а встроенные возможности языка — от библиотек, но ещё и узнал, что далеко не всегда программы в принципе компилируются, и в чём плюсы и минусы этого факта. А заодно ощутил внутри себя, какой подход ему ближе и интереснее и к какой цели ему хочется стремиться.
То есть, хочется дать взгляд не вглубь процесса разработки, а вширь — на всю индустрию программирования в целом — и конечно с хорошими и доступными примерами того, чем каждый сегмент этой индустрии специфичен. Например, для программирования микроконтроллеров — небольшой кусок кода с пояснениями «а вот это специальная команда для конкретно данной железки, делающая то-то и то-то», а для веба — схожий по размеру кусок с пояснениями типа «вот этой функцией мы запрашиваем веб-страницу по такому-то адресу». И с какими-нибудь рабочими примерами — чтобы можно было пощупать, в какого сорта и масштаба вещи превращаются примерно аналогичные по объёму порции кода. Как-то так.
Если вы когда-нибудь наталкивались на ресурсы с поданной подобным образом информацией — пожалуйста, поделитесь вашими находками. Или даже вашим рецептом действий — если вы когда-то решали похожую задачу. Отзывы о любом положительном опыте вовлечения в программирование разумных, но не слишком мотивированных людей очень и очень приветствуются — даже если выбранный вами метод отличается от того что пришёл в голову мне. Ведь может так быть, что описанная мной схема хороша только на бумаге, а чей-то опыт уже показал, что для начинающих хорошо работает какая-то совершенно иная метода.
Если вдруг у вас есть успешный опыт прививания любви к программированию уже взрослым людям, никогда ранее им не занимавшимся — тоже прошу вас им делиться. Потому что в данном случае главная проблема — не юный возраст обучаемых, ибо на мой взгляд в 15 ты уже в состоянии понять почти что любую концепцию, а именно что создание мотивации на дальнейшее самостоятельное развитие.
Спасибо!