Як навчити дитину програмувати, якщо ви не програміст
Мене звати Павло і я не є програмістом у чистому вигляді, але десь поряд. Я очолюю департамент у компанії «Viseven», який займається якраз тим, що допомагає клієнтам побудувати складні великі системи автоматизації маркетингових комунікацій. Працюємо саме з MarTech. Водночас я маю сина, якому на цей час виповнилось 11 років.
Приблизно
Я, звичайно, ознайомився до певної міри з деякими рекомендаціями, трохи вивчив тему навчання дітей, тому схожі думки ви можете знайти в різних онлайн-джерелах. Але разом з тим спробую додати якомога більше і від себе. Сподіваюсь, що комусь це стане у нагоді.
Особливо якщо ви не ставите собі за мету зробити з дитини програміста, самі не впевнені, який шлях у житті він обере, і чи не буде це все зайвим.
Навіщо це все
- Розвиток мислення. Тут, я гадаю, багато пояснювати не потрібно. Навіть ті, хто не є програмістами, розуміють, що всі ці алгоритми й послідовності дуже добре розвивають мислення. Так, це не всебічне мислення і в чомусь спеціалізоване, але дитина ж у вас буде займатися не тільки цим. Тому розглядайте це як дуже гарне доповнення до процесу навчання.
- Гарний привід проводити трохи більше часу разом. Ми всі постійно зайняті та кудись біжимо, тому мати «законну» нагоду регулярно проводити з дитиною
20-30 хвилин на день дуже корисно. - Це вчить дитину вчитися. Тут не треба багато зайвих слів. Всі ми розуміємо, наскільки важливо розвивати навички навчання та опанування чогось нового.
- Додаткове вивчення англійської мови. Не заміна базовому навчанню, але непоганий додаток.
- Це буде корисно і вам з усіх боків. Може певною мірою стати у пригоді на роботі, з колегами-програмістами буде легше спілкуватись і себе додатково будете розвивати.
- Дитина зрозуміє, що ноутбук існує не тільки для гри й веселих відео на YouTube. Одна справа це дитині говорити, інша — дати їй це відчути.
- Дасть дитині змогу зрозуміти, що навіть невеликі регулярні зусилля дають змогу досягти значних результатів.
Можна ще багато чого перелічити, але, сподіваюсь, достатньо обґрунтування на цьому етапі.
Ключовий фактор успіху — вам самим теж повинно бути цікаво. Тоді легше буде, дитина це відчує і буде підживлюватись вашим інтересом.
Коли і як починати
Це не таке просте питання, як може здаватися. Тут може виникнути думка: що раніше почнемо, то краще. Але старт у віці
Складно не тільки у площині сприйняття концепцій, але й у площині приділення уваги, концентрації, долання труднощів. Тому моя особиста думка, підкріплена практикою: вік
Маю глибоке переконання, що найкращим стартом є Scratch.
Якщо ви не чули про цю платформу, можете швидко прочитати декілька статей і подивитесь два-три відео у мережі, і все стане зрозуміло.
Безкоштовна платформа з великими можливостями. Графічний інтерфейс, де треба просто обрати потрібний функціональний блок, перетягнути його, доєднати до інших і ввести одну-дві цифри (на кшталт напрямку руху об’єкту).
У Scratch можна легко провести
На середньому етапі ми доєднались до платного онлайн-навчання. Спочатку курс для початківців, а потім окремі практичні навчання, де за 1,5 години діти робили невелику гру від початку до кінця. Не можу сказати, що я був дуже задоволений цим навчанням, але свій внесок це зробило, і користь від цього була.
Через п’ять-шість місяців мій син сам створив складну логіку лабіринту із загадками та графічним кодом на чотири екрани. А пізніше видав гру-платформер, де екрани змінювались і персонаж рухався рівнями, долаючи ворогів і перешкоди. При цьому юний програміст з моєю невеликою допомогою час від часу сам шукав рішення в мережі, дивився навчальні відео і перевикористовував окремі напрацювання інших. Я навіть купив для нього набір моделей (скінчики), щоб все виглядало більш тематично і додатково мотивувало його на звершення.
Платформа дуже органічно і невимушено дає первинне розуміння деяких ключових концепцій: послідовність виконання коду, змінні, умови if-else і навіть цикли.
Як все має проходити
Головна наша мета на цьому етапі — це сформувати інтерес і втягнутись у регулярні заняття. Зареєструйте дитину і покажіть, як все працює.
Вашими завданнями буде:
- Контролювати регулярність. Паузи будуть, це нормально. Намагайтесь, щоб вони не були більше ніж один місяць. Якщо дитині трохи набридло, не тисніть дуже сильно, дайте змогу відпочити декілька днів або навіть тижнів. Але допоможіть повернутись після цього. Я на будь-яких етапах навчання намагаюсь погодити короткий план: «Давай зараз 30 хвилин Scratch, потім годину можеш погратись, а потім разом вигуляємо собаку».
- Мотивувати. Особливо, якщо щось не виходить, або коли інтерес трохи згасає.
Тут я хотів би виділити три важливих принципи:
- Що менша дитина, то більше зусиль ви повинні спрямовувати саме на мотивацію, а не на передачу інформації.
- Не намагайтесь мотивувати чимось матеріальним. Це пастка, через яку багато батьків пройшли. Так, треба періодично винагороджувати дитину чимось смачненьким, або дати їй змогу погратись більше звичайного після цього. Але підхід «Зроби цю вправу і дам тобі 50 гривень» — це шлях в нікуди. Це буде підміняти бажання вчитись бажанням отримати бонус. Дитина ж не працює на вас.
- Сварити, звичайно, ніколи не треба. А от хвалити треба саме за зусилля. За приділений час та увагу. Саме це ключове, а конкретні досягнення це вже додатковий стимул.
Ознакою, що все іде досить успішно, буде те, що дитина сама періодично сідає за роботу без усіляких нагадувань і проводить за нею більше часу, ніж ви домовились. Таке буде далеко не завжди, але повинно відбуватись час від часу.
Що далі
Після того, як відчули, що інтерес до Scratch активно згасає, і ви обидва готові рухатись далі, переходьте на наступний етап. Тут можуть бути два варіанти:
- книга;
- спеціалізована платформа.
Ми спочатку спробували перший варіант і обрали:
Це може спрацювати непогано. Написано для підлітків, читати неважко, матеріал побудований логічно. Але у нас не дуже гарно пішло:
- Такий процес вимагає, щоб дитина була дуже мотивована.
- У книзі є ціла низка ігор, які підживлюють інтерес, але все-таки результату на багатьох етапах одразу не видно. Теорія, яку важко одразу застосувати, погано мотивує юних програмістів. «Вчись, і потім будеш розумним і заробиш багато грошей» для вас може спрацювати, а для дитини це далеко та примарно.
- Без вашої постійної активної участі таке навчання дитини у віці
10-12 років скоріше за все швидко припиниться. - Важко втримати мотивацію на довгому проміжку часу. Два місяці у нас якось все рухалось, далі інтерес почав сильно просідати.
Тому ми переключились на вибір спеціалізованої платформи. Їх досить багато у мережі. Побудовані вони трохи за іншим принципом, ніж Scratch. У ігровій формі даються завдання, в яких треба щось зробити: пройти з однією точки в іншу, дістати щось, оминути небезпеку у вигляді крокодила чи ще щось таке. У всіх них теж є графічне відображення, як працює створений код. І ви по суті рухаєтесь з рівня на рівень з поступовим ускладненням задач і додаванням все нових і нових понять, але без детальної теорії.
Я перебрав близько десятка платформ і зупинився на CodeMonkey. Там до речі теж є простий графічний конструктор на зразок Scratch, без написання будь-якого коду. Хоча останній, на моє переконання, все ж краще для початку.
На платформі є низка модулів для написання загальної логіки коду й окремі модулі, які спрямовані на вивчення Python. Вони по суті дуже схожі. Їх всі я і пропоную проходити. І не бійтеся повторень, це тільки плюс. Якщо ви у першій групі модулів вже пройшли умови if-else, їх повторення у модулях Python буде корисним.
Додатково по підходу
- Регулярність важлива, як завжди. І тут це навіть легше зробити. «Давай пройдемо 4 завдання разом, а потім вже будеш щось інше робити».
20-50 хвилин, 3-5 разів на тиждень буде якраз. - Пам’ятайте, що це все ж марафон, тому не потрапляйте у пастку «все так гарно йде, давай потроїмо наші зусилля і час». Дитина може погодитись, тому що ви для неї авторитет, і вона хоче догодити вам. Це можна робити лише до певної міри, інакше ви просто не втримаєте такий темп і «випалите» весь інтерес і завзяття.
- Перш за все вчиться дитина, а не ви. Тому якщо вам зрозуміло, як все зробити, не треба виривати ноутбук з рук зі словами: «дай я сам напишу вже». Зрозуміли самі, поясніть, потім поясніть ще раз, наведіть приклади, дайте підказку, поставте питання, які наштовхнуть на правильну думку.
- Іноді ваш учень може сам посидіти попрацювати над завданнями або періодично кликати вас на допомогу. Але краще за все працює, коли ви разом сідаєте, він все робить, ви допомагаєте, обговорюєте. Перехоплюєте ініціативу трохи, де треба, і розумієте, коли варто закінчити. Можливо, вам пощастить, і ваша дитина буде максимально мотивована та завзята все робити самотужки, але мені це здається скоріше виключенням і подарунком, ніж тим, на що варто розраховувати.
- Абстракті концепції дитині завжди важче розуміти, ніж вам. Вони часто швидко схоплюють, але діють швидше за прикладом і аналогією. Моєму сину, наприклад, досить швидко стала зрозумілою загальна концепція циклів. Але як працює масив і як за індексом обираються значення в ньому, я дуже довго не міг пояснити. І чому взагалі перший елемент має індекс нуль, а не один. Довелось прямо на папері писати приклад за прикладом. Тренуйте терпіння! Мені з цим дуже важко, тому з собою доводиться працювати й стримуватись.
- Не поспішайте вперед. Краще п’ять разів пересвідчіться, що дитина зрозуміла ключову концепцію. Платформа по суті охоплює все потрібне, включно з функціями та класами. Тому зупиняйтесь час від часу й обговорюйте ці абстракції. Групуйте вивчене в пов’язані блоки інформації.
- Допомагайте, коли є блокер у розв’язанні задачі, та не зрозуміло, як саме правильно написати код. Платформа дає підказки, але на просунутих етапах навіть з ними ви самі можете мати певні труднощі час від часу. Проговорюйте ваші думки вголос і намагайтесь разом знайти рішення. Також пам’ятайте, що дитині складно сидіти й «дебажити» неробочий код цілу годину. Якщо не виходить, знайдіть рішення самотужки, а далі через підказки та питання, що наводять на думку, проведіть до рішення вашого учня.
- Стимулюйте не копіювати цілі рядки, менше використовувати вирази через графічні блоки. В початкових модулях є така можливість. Нехай дитина сама пише всі рядки коду з усім базовим синтаксисом. Так ліпше буде сприйматись і запам’ятовуватись.
Так а що з теорією
І от якраз на цьому етапі ми повернулись до книги, з якою не склалося одразу. Почали перечитувати окремі розділи, піддивлятись, як там пояснюються ті чи інші поняття. Такий собі довідник-посібник вийшов. Бо платформа у формі гри й на прикладах все показує, але пояснень теорії повноцінно не дає. Тому додавати теорію з книги дуже корисно як доповнення до практики.
Тут вже будувати процес варто по ситуації: поєднувати те, в чому потрібно підсилити розуміння, а також дивитись, що дитині самій цікаво прояснити. Зауважу, що книга дає багато адаптованих термінів, які на мою думку, варто все ж дублювати англійського, щоб дитина розуміла, що масив = array, змінна = variable і так далі.
Next level
На просунутому рівні платформа дає можливість попрацювати над невеликим проєктом — власним чат-ботом на Python. Робота над проєктами різного рівня складності, використання книг час від часу і пошук інформації у мережі і є логічним продовженням.
На цьому етапі обговоріть, які проєкти можна створити. Головне не перебрати з амбіціями та рухатись поступово до складніших і об’ємніших речей. Більшою мірою перемикатись на проєкти варто, коли:
- База більш-менш пройдена.
- Нових модулів на платформі вже практично не залишилось.
- Дитина накопичила запал робити щось цілісне.
- Та сприймає ідею проєкту як свою, а не нав’язану.
Непоганою ідеєю може бути прив’язка проєкту до того, що дитина і так робить як хобі чи у школі. Наприклад, у нашій школі багато активності по географії з низкою презентацій, проєктів та ігор. І зараз ми саме раз обговорюємо, як можна щось з цього автоматизувати, використовуючи отримані знання з початкового програмування.
Чи варто використовувати ChatGPT і подібні рішення
Моя практика і бачення, що використовувати ШІ для навчання дитини програмуванню треба дуже обмежено й обачно, або взагалі не відкривати його. Якщо просто показати, що майже весь код можна генерувати там, дуже важко буде рухатись.
Copy-Paste мало чому дозволить навчитися. Код дитина так не зрозуміє і швидко втратить інтерес. Це може більше стати у пригоді на просунутих етапах, коли база вже сформована, і треба десь в чомусь допомогти, прискорити окремі моменти в рамках проєкту.
Діліться у коментарях вашим власним досвідом, буду радий обговорити.
Найкращі коментарі пропустити