» » Як стати хорошим програмістом?

Як стати хорошим програмістом?

Фото - Як стати хорошим програмістом?

На даний момент, я ось вже сім років навчаю дітей програмуванню в системі додаткової освіти. Істотно, що не в загальноосвітній школі. Так що діти приходять до мене, в основному, за власним бажанням і вчаться, в основному, добровільно.

Добре програмувати мені вдається навчити приблизно однієї дитини з десяти. У цій статті я не збираюся пускати комусь пил в очі (для цього офіційні органи є), а спробую поділитися своїми спостереженнями.

Якщо подивитися по всяких навчальними планами, то програмування у нас вивчали і мають з цього предмету знання, ну ніяк не менше, ніж півкраїни. У реальності такого не спостерігається. Так у чому ж справа? А справа в нашій традиційній показухи. Одна справа - списати пару прикладів і здати їх викладачеві, і зовсім інша справа - реально, а не на папері, вміти складати програми.

Для початку проведемо деякий поділ: є користувальницький рівень використання вже готових програм - комп'ютерна грамотність і власне програмування - створення нових програм.

Комп'ютерна грамотність, при нинішній поширеності обчислювальної техніки, необхідна практично всім нормальним людям. Навчати їй необхідно всіх школярів. До речі, при навчанні комп'ютерної грамотності мені вдавалося навчити практично всіх. Цей предмет іменується інформатика і в школах нормально викладається за принципом: «А це, діточки, підкреслений шрифт, і, щоб його отримати, треба натиснути ось на цю кнопочку». Для вивчення інформатики досить мати середній інтелект і середню пам'ять.

З програмуванням не все так просто. На початку моєї викладацької діяльності мене здивувало різкий поділ школярів на тих, хто відразу схоплюють програмування, і тих, у кого воно «не йшла» і, зрештою, «не пішла». В першу чергу, було незрозуміло, чому цей поділ було дуже різким. Або - або.

Надалі з'ясувалося, схоплювали «нальоту» ті, хто протягом кількох років до цього займалися в математичному гуртку. І чим довше я працював, тим більше переконувався у правоті того, що:

великих успіхів у вивченні програмування досягає той, у кого вищий рівень математичного мислення.

Пізніше, коли я спілкувався з викладачами університету, виявилося, що америки я не відкрив. Їм це давно було відомо. Але ось в батьківській середовищі цього, схоже, не знають.

Для того, щоб у дитини в старших класах були успіхи у вивченні програмування, в молодших класах необхідно стимулювати його інтерес до математики. Звичайні заняття в школі не в рахунок, треба щоб він отримував поглиблені знання в математичному гуртку або в іншому вигляді додаткової освіти.

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

З якого класу треба вчити програмувати?

В основному, з 8 класу. Спроби навчати семикласників в моєму випадку не увінчалися помітним успіхом. Правда, відразу обмовлюся, окремі школярі, які займалися математикою або мають великий інтерес до програмування, займалися у мене з 7 класу і досягли великих успіхів (є призерами рівня російської олімпіади).

А більшість слід вчити тоді, коли вони вже знайомі з алгеброю. Адже програма - це текст, а вміння оперувати символами розвивається саме при вивченні алгебри. Написав з 8-го, а потім подумав, що це в тому випадку, якщо ставити завдання брати участь в олімпіадах, а якщо не брати участь, то і з 9-го цілком можна.

Загальні зауваження: Мови програмування розрізняються синтаксисом, тобто способом вираження думки програміста. Головне не синтаксис, а алгоритмічне мислення. Якщо його немає, то немає і навички програмування. Якщо вироблено алгоритмічне мислення, то перехід з однієї мови програмування на іншу не настільки вже й проблематичний. У багатьох школах викладання ведеться BASIC-е просто тому, що інших мов викладачі не знають, а ті, хто знають, працюють програмістами і нісенітницею (на кшталт викладацької діяльності) не займаються.

Скільки часу потрібно на вивчення програмування?

Залежно від тієї мети, яку ми собі ставимо. Елементарні навички осягаються за рік. Підвищений рівень - за два роки, після чого слід продовжити навчання в ЛКШ (Літня Комп'ютерна Школа). Особисто я вважаю своїм завданням підготувати школярів до навчання в ЛКШ. З тими, хто відучився там в групі С, я програмування більше не вивчаю, а даю їм елементи дискретної математики, після чого вони вже доучуються в старших групах ЛКШ.

Ті терміни, які я вказую, ставляться до навчання в невеликих групах. Якщо ж брати звичайні класи (навіть математичні), то ці терміни слід помножити приблизно на два. Звідси виходить: якщо почати вивчення програмування в 9 класі, то за два роки можна вивчити початковий рівень, а 11 клас ми викидаємо на ЄДІ, тут вже не до програмування.

«Мучити програмуванням» всіх підряд немає особливої необхідності. Тобто я категорично проти загальної асунізаціі (в радянські часи впроваджувалося АСУ - автоматизовані системи управління - крику і гасел було багато, а толку мало). Отже, вчити програмуванню треба тих, хто цього дійсно хоче. Вчити треба в невеликих групах. Вчити повинні професіонали. Ось тоді і буде результат, а інакше - по-черномирдінскі, як зараз.