- PVSM.RU - https://www.pvsm.ru -
Меня зовут Ростислав, вот уже семь лет я веду кружки по программированию для школьников 7-10 классов. Последние несколько лет я вел курсы по С++ в лаборатории робототехники Политехнического музея и ЦМИТе «Геккон клуб», а основная моя основная работа — это веб-разработка и разработка мобильных приложений. Интересней всего мне работать с медицинскими сервисами.
В этой статье я хочу порассуждать, как люди становятся крутыми специалистами в той или иной области, и каким образом на это влияет дополнительное внешкольное образование. Как строить учебные программы и какой язык выбрать для обучения? Что такое нужно делать с детьми, чтобы из них вырастали крутые мотивированные специалисты?
В ИТ эта проблема особенно актуальна — хороших программистов на рынке не хватает, зато очень много недоквалифицированных людей, которые никогда спецами не станут — просто потому, что у них нет к этому страсти.
Для начала стоит вспомнить, как я сам до этого дошел. Например, я точно помню, что выбор школы в пятом классе был отчасти обусловлен вкусной ромовой бабой в буфете, а в этой самой школе перед уроком английского, в далеком 2006-ом, в класс вбегает мой достаточно маргинальный одноклассник с криком «ребята, я сделал сайт нашего класса на MyLivePage! Записывайте адрес!». Это было настоящим открытием — оказывается, так можно, и это совершенно бесплатно. Тогда я решил сделать свой сайт и, конечно, про компьютеры. Я покупал компьютерные журналы и переписывал из них интересные новости, загружал интересный софт. На сайт заходили мои одноклассники, кто-то что-то комментил. Это было восхитительно! А затем нужно было разместить информер от яндекса, оказалось что это вообще не тривиально — нужно копаться в куче непонятного кода. Я покопавшись, конечно, ткнул его на нужное место, но решил, что с кодом надо бы разобраться. Сказано — сделано! Солнечным зимним вечером я зашел в книжный и купил на накопленные деньги свой первый учебник по HTML.
Спустя пару недель обучения стало понятно, что HTML — это круто, но вот чем обрабатывать формы — совершенно непонятно, но все говорят про какой-то PHP. Базовые вещи получалось делать по книжке, но вот ООП мне тогда не поддался и я решил пойти на курсы.
Я выбрал курс по С++ в “Школе программирования” в ДНТТМ. И вот это был по настоящему поворотный момент. Я оказался в кругу людей со схожими интересами, у меня сразу появилось много новых друзей. Во-первых, стало понятно, что я реально что-то могу, а во-вторых, куда стремиться дальше. Немалую роль сыграла система командных проектов, когда надо было сначала описать ТЗ, разделить работу, а затем регулярно отчитываться о работе. Мы были словно небольшая ИТ компания. А еще мне очень понравилась стажерская программа — благодаря ей я сам в итоге стал преподавателем.
Я поговорил с некоторыми своими знакомыми и учениками и услышал очень похожие истории. Например, такую мне рассказал Леван Квирквелия, сейчас ещё школьник, разработчик популярного мобильного приложения «МРКО — независимый электронный дневник», стабильно удерживающего первую строчку рейтинга AppStore и Play Market:
Во втором классе, когда я спросил учительницу информатики «как сделать сайт?», она сказала: HTML. С этим странным словом я пошел домой, а совсем скоро принял ужасное решение — пошел в книжный магазин. Книги я не любил, да и сейчас не люблю, поэтому выбрал самую тонкую книгу, на обложке которой было это слово, — «HTML и CSS для создания Web-страниц» Э. Кастро. Круто звучит да? Дома я скачал нужные программы, попробовал, поигрался. Свой первый сайт, который был выпущен в «продакшн», я сделал на прекрасном Narod.ru, («Яндекс», без тебя не было бы меня).
Дальше пошло развитие. Я постоянно хотел изучить все больше, хотел сделать свой сайт круче, хотел быть нужным, хотел зарабатывать на этом, я хотел быть молодцом. Дальше я развивался как программист: два года искал себя, изучал Java, C++. Еще за два года было много чего создано. Я сделал огромное количество проектов, которые не «выстрелили» (ничего тогда не раскручивал, не было денег), заработал первые 100 тысяч на заказе сайта от родственника. В итоге я нашел себя. Я понял, что больше всего на свете мне нравится:
- делать крутые проекты, связанные с ИТ;
- делать полезное людям;
- быть молодцом (расшифрую: мой продукт лучший, все должны офигевать от него).
А Сева Жидков, девятиклассник, победитель олимпиады НТИ, хакатона Вконтакте 2016 и сотрудник Mail.ru (а еще создатель стартапов LeonardBot и Sheldon.ai) рассказывает:
Во втором классе я пошел на компьютерный кружок в местном университете, там были лого-миры или что-то такое. Потом, через пару лет, я хотел зарабатывать деньги и пытался научиться верстке и всему такому, так что деньги тоже были одной из изначальных мотиваций. Я загуглил “Как создать сайт” и выучил HTML. Первый сайт был для своего класса, хотелось тогда как-то выделиться, «стать крутым»
Прослушав множество таких историй, можно сделать определенные выводы по поводу того, как строить успешный образовательный процесс для школьников в ИТ:
Как же исходя из всего этого оптимально строить учебную программу? Чтобы с одной стороны не утратить естественную мотивацию ребенка, а с другой стороны попытаться дать как можно больше фундаментальной подготовки? А главное — на чем учить?
При выборе технологии я обычно руководствуюсь следующими критериями:
Большинство современных преподавателей сходится во мнении, что идеальный первый «настоящий язык» (если не брать в рассмотрение «игрушечные» Scratch или школьный лого) — это Python. И Python правда крут! С одной стороны читаемый синтаксис, а с другой можно делать реальные проекты — хоть веб-сервисы, хоть телеграмм-ботов. Но лично с моей точки зрения Python — это далеко не идеальный выбор именно первого языка. Чтобы рисовать скорее всего понадобится PyGame, а подключение сторонних библиотек приводит к появлению в коде сложно объяснимых на этом этапе конструкций — объектов и модулей. Python — это очень мощный и удобный язык, он прекрасно соответствует первому и третьему критерию, но, кажется, не соответствует второму.
В свое время я прошел годовой курс по С++, и считаю, что это было очень правильным решением. Настолько правильным, что теперь я сам веду такой курс (программа курса на GitHub — первая [1] и вторая [2] часть). Плюсы — это почти латынь в программировании, зная плюсы, можно очень быстро понять любой си-подобный язык (а значит — вообще почти любой). К тому же плюсы выстраивают очень четкое понимание программирования от низкоуровневых аспектов до ООП. Причем каждый алгоритм и структуру данных можно сначала “изобрести” самому, реализовать, а только потом уже узнать о реализации из STL и использовать. Методически это очень правильно. Однако многие преподаватели считают (и они совершенно правы), что давать плюсы как первый язык — это садизм. Плюсы — это по-настоящему «взрослая технология», при изучении очень легко последовательно давать материал так, чтобы в коде отсутствовали неизвестные конструкции, но вот с рисованием (да и вообще с красивыми задачами) тут явные проблемы, как ни старайся сделать задачи веселыми. Либо надо использовать сторонние учебные библиотеки (а это не соответствует третьему критерию), либо ждать Qt — а это, извините, 36ое занятие в спокойном темпе работы. Выживают только самые стойкие. Значит плюсы на первом этапе отпадают, надо давать их позже.
Есть еще более классические варианты — Basic, Pascal — но все это в наши дни уже не используется на практике. А значит тоже отпадает по третьему критерию.

Так что же выбрать? На первом этапе нужно с одной стороны что-то яркое и несложное, а с другой стороны похожее на «взрослые языки» и со «взрослыми» возможностями. И по моему опыту — это Microsoft SmallBasic [3] (программа курса на GitHub [4]). Почему именно он?
А главное — этот язык просто ужасен! Все переменные — глобальные, весь код в одном файле, из за чего в определенный момент работы над проектом код становится совершенно неуправляемым и продолжать разработку невозможно… И в этот момент мы мягко намекаем, что пора переходить на питон или плюсы. Алгоритмическая база дана, цели дальнейшего обучения теперь понятны, а значит есть мотивация идти вперед!
Как выстроить курс наиболее оптимально? Как можно быстрее переходить к процессу построения игры. Обычно на первом занятии я даю поиграться с консолью и черепахой, чтобы усвоится с переменными и понятием алгоритма в принципе. Уже на третьем занятии можно давать рисование “абстрактных картин”, а на четвертом — переходить к циклам, которыми можно рисовать более сложные изображения. А дальше уже анимации, GUI, файлы и проектная работа — продумывание и реализация собственной игры. За 12 занятий собственная игра будет готова!
Под конец станет ясно, что для реализации всех планов уже не хватает Smallbasic’а, и в этот момент рассказываем про более сложные и «правильные» языки, мотивируем ребят развиваться дальше, чтобы продолжить разработку.

В каком возрасте можно давать SmallBasic? По моему опыту — с шестого класса. Возможно, можно и раньше, но тогда страдает непрерывность обучения — больше, чем на год SmallBasic’а не хватит, а C++ по-моему опыту точно не стоит рассказывать раньше седьмого класса. Есть успешные шестиклассники, но в среднем идет очень туго.

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

Кстати, именно по такой схеме я действую на курсах по программированию [5] для начинающих ЦМИТ “Геккон клуб”. Этим летом мы запускаем насыщенный интенсив по SmallBasic для ребят, окончивших шестой класс.
Автор: roctbb
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/obrazovanie/253190
Ссылки в тексте:
[1] первая: https://github.com/roctbb/Polymus-CPP1/
[2] вторая: https://github.com/roctbb/Polymus-CPP2/
[3] Microsoft SmallBasic: http://smallbasic.com
[4] программа курса на GitHub: https://github.com/roctbb/Gekkon-Programming-Intro
[5] курсах по программированию: http://gekkon-club.ru/smallbasic
[6] Источник: https://habrahabr.ru/post/326926/
Нажмите здесь для печати.