• Мнения
  • |
  • Обсуждения
Вячеслав Чермных Дебютант

Как стать хорошим программистом?

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

Фото: Depositphotos

Хорошо программировать мне удается научить примерно одного ребенка из десяти. В этой статье я не собираюсь пускать кому-то пыль в глаза (для этого официальные органы имеются), а попытаюсь поделиться своими наблюдениями.

Если посмотреть по всяким учебным планам, то программирование у нас изучали и имеют по этому предмету знания… ну никак не меньше, чем полстраны. В реальности такого не наблюдается. Так в чем же дело? А дело в нашей традиционной показухе. Одно дело — списать пару примеров и сдать их преподавателю, и совсем другое дело — реально, а не на бумаге, уметь составлять программы.

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

Компьютерная грамотность, при нынешней распространенности вычислительной техники, необходима практически всем нормальным людям. Обучать ей необходимо всех школьников. Кстати, при обучении компьютерной грамотности мне удавалось обучить практически всех. Этот предмет именуется информатика и в школах нормально преподается по принципу: «А это, деточки, подчеркнутый шрифт, и, чтобы его получить, надо нажать вот на эту кнопочку». Для изучения информатики достаточно иметь средний интеллект и среднюю память.

С программированием не все так просто. В начале моей преподавательской деятельности меня удивило резкое разделение школьников на тех, кто сразу схватывают программирование, и тех, у кого оно «не шло» и, в конечном итоге, «не пошло». В первую очередь, было непонятно, почему это разделение было очень резким. Или — или.

Как стать хорошим программистом?
Фото: Depositphotos

В дальнейшем выяснилось: схватывали «налету» те, кто в течение нескольких лет до этого занимались в математическом кружке. И чем дольше я работал, тем больше убеждался в правоте того, что:

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

Позже, когда я общался с преподавателями университета, оказалось, что Америки я не открыл. Им это давно было известно. Но вот в родительской среде этого, похоже, не знают.

  • Для того, чтобы у ребенка в старших классах были успехи в изучении программирования, в младших классах необходимо стимулировать его интерес к математике. Обычные занятия в школе не в счет, надо чтобы он получал углубленные знания в математическом кружке или в другом виде дополнительного образования.

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

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

Как стать хорошим программистом?
Фото: Depositphotos

А большинство следует учить тогда, когда они уже знакомы с алгеброй. Ведь программа — это текст, а умение оперировать символами развивается именно при изучении алгебры. Написал с 8-го, а затем подумал, что это в том случае, если ставить задачу участвовать в олимпиадах, а если не участвовать, то и с 9-го вполне можно.

Общие замечания: языки программирования различаются синтаксисом, то есть способом выражения мысли программиста. Главное — не синтаксис, а алгоритмическое мышление. Если его нет, то нет и навыка программирования. Если выработано алгоритмическое мышление, то переход с одного языка программирования на другой не столь уж и проблематичен. Во многих школах преподавание ведется на BASIC-е просто потому, что других языков преподаватели не знают, а те, кто знают, работают программистами и ерундой (вроде преподавательской деятельности) не занимаются.

Сколько времени требуется на изучение программирования? В зависимости от той цели, которую мы себе ставим. Элементарные навыки постигаются за год. Повышенный уровень — за два года, после чего следует продолжить обучение программированию в ЛКШ (Летняя Компьютерная Школа).

Лично я считаю своей задачей подготовить школьников к обучению в ЛКШ. С теми, кто отучился там в группе С, я программирование больше не изучаю, а даю им элементы дискретной математики, после чего они уже доучиваются в старших группах ЛКШ.

Как стать хорошим программистом?
Фото: Depositphotos

Те сроки, которые я указываю, относятся к обучению в небольших группах. Если же брать обычные классы (даже математические), то эти сроки следует умножить примерно на два.

  • Отсюда получается: если начать изучение программирования в 9 классе, то за два года можно изучить начальный уровень, а 11 класс мы выбрасываем на ЕГЭ, тут уж не до программирования.

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

Статья опубликована в выпуске 17.10.2008
Обновлено 11.08.2021

Комментарии (31):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • С 7ого класса забил на учёбу, математикой не интересовался.
    Пол года назад поступил в колледж на программиста, знание английского на нуле, по математике с горем пополам на тройку) Но спец предметы вроде "Операционные системы" и "Алгоритмизации" одни пятёрки. Получается хорошо, первый раз увидел паскаль, в отличии от своих одногрупников (В школе на его не преподавали, как и бейзик). Сейчас лучший в группе. Но знания математики, как и английского уже начинают сказываться. Недавно, буквально месяц назад серьёзно увлёкся написания различного простейшего кода) Но самому далеко уйти не получатся. В городе спец.школ программирования нету. Да и средств на это тоже нету... Хочу попросить помочь в изучении математики и не много объяснить в коде если что будет не понятно...

  • Александр Селедин Читатель 17 сентября 2014 в 19:15 отредактирован 26 мая 2018 в 19:06 Сообщить модератору

    Советую начать с простого языка программирования как можно раньше. Например, Pascal, Delphi.

  • Андрей Зайкин Читатель 15 мая 2010 в 09:49 отредактирован 24 мая 2018 в 08:09 Сообщить модератору

    Хмм... Програмирование мы начнем учить только в следующем классе а точнее в 11. Так значит теперь из-за ***вой программы я не стану хорошим програмистом?? Ну спасибо автору за статью прям вселил в меня оптимизм.

    Оценка статьи: 1

    • Вячеслав Чермных Вячеслав Чермных Дебютант 15 мая 2010 в 20:26 отредактирован 15 мая 2010 в 21:19 Сообщить модератору
      Бездельникам в программировании нет места

      Андрей Зайкин, ну надо-же, обидился. 10 лет дурака валять да в трубочку плеваться - не обидно, а тут реальную информацию прочёл, и сразу обиделся.
      Там, где информатику начинают учить в 11 классе, не ставится задача подготовки будущих программистов, тем более хороших. В таких школах, просто немного знакомят, с тем, что такое программирование, скажем для будущих экономистов и т.д., т.е с теми, кто сталкивается с программами, но сам их не пишет.
      Если два раза в неделю, по 2 часа изучать программирование, то можно неплохо преуспеть. Если меньше-увы.
      С хорошим репетитором по 2 раза в неделю и ЕГЭ можно сдать.
      А если раз в неделю по часу, в преполненном классе, вряд-ли.
      Так что чудеса бывают, но не сразу и не вдруг, а в результате систематической настойчивой работы.
      А лентяям в программирование и вовсе соваться не рекомендуется. Программирование-это труд, и даже голова от него болит порй.

      • Вячеслав Чермных,
        1 было бы желание, можно обойтись и без регулярного репетитора
        2 программист обязан быть ленивым, ибо иначе это не будет программист, компьютеры изобрели из лени ) и многие программы пишутся так же
        3 голова болит - да, более чем

        • Вячеслав Чермных Вячеслав Чермных Дебютант 15 мая 2010 в 21:41 отредактирован 15 мая 2010 в 21:43 Сообщить модератору

          Владимир Кузнецов,
          1 бывает, у нас в Краснодаре есть учительница специализированной школы с уклоном в математику-программирование, выпускники которой сдают без репетиторов. Но я знаю лишь одну такую (не исключаю других грамотных - работающих подпольно), и это на город практически миллионник. Квантор существования к вашему высказыванию применим. А вот квантор всеобщности я бы ставить не стал.
          2 сам грешен, спорить не буду. Но при этом без труда не обойтись, что и проявляется в нашем единстве мнений по пункту 3.
          а вот у бездельников она болит как правило с перепоя.

  • Еще анекдот

    Ты чего сегодня сам не свой после вчерашнего?

    - Пива препил?
    - Нет

    - Жена ушла?
    - Не помню

    - Так в чем причина?
    - Понимаешь, вчера уснул ...
    - Ну?
    - На Бекспейсе
    - А-а-аааа!!!

  • Анекдот:

    Однажды программист не пришёл на работу. Ему звонят домой - никто не отвечает. День нет, два нет, неделю нет... Забеспокоились, приехали к нему домой, звонят - никто не открывает. Выломали дверь - в доме никого нет. однако прислушались, и услышали в ванной шум воды. Открывают ванную, а там программист весь лысы, посиневший, исхудавший лежит в холодной воде, дрожит и сжимает в руках пустой флакон от шампуня...

    ... а на нём - инструкция:

    1. Намылить голову
    2. Хорошенько промыть водой
    3. повторить

  • учить программированию надо тех, кто этого действительно хочет

    Учить **************** надо тех, кто этого действительно хочет.

    Вместо звездочек подставьте любые буквы.

    Позабавило стремление придать чуток элитарности новомодной професии.
    А рисовать, петь и музицировать можно научить дубинкой.

    Оценка статьи: 4

  • Интересно, а что господин Аникейчев, программист с 1970 года, на этот раз помалкивает? Просим, просим - на выход, господин Аникейчев!

  • "больших успехов в изучении программирования достигает тот, у кого выше уровень математического мышления"
    я бы сказал логическое/алгоритмическое мышление, частным случаем которого является склонность к математическим операциям

    "языки программирования различаются синтаксисом"
    неточность, порочащая вас как специалиста в этой области: не только синтаксисом, но и логикой, вспомните про разделение языков программирования на процедурные, функциональные, ооп и тд
    но я согласен с вами с тем, что кто умеет логически мыслить, и имеет опыт программирования хотя бы на одном языке, тому будет проще изучать новый

    "Итак, учить программированию надо тех, кто этого действительно хочет. Учить надо в небольших группах."
    у меня в школе стандартный минимум информатики был для всех, а для желающих преподаватель вел дополнительные курсы. на них вначале ходило человек 10, потом уменьшилось до двух человек, а периодически я занимался с преподавателем программированию тет-а-тет, за что большое спасибо ему, ибо он с интересом и желанием делился своими знаниями


    ps: статья вроде и правильная, но как-то она недоработана, местами скудновата чтоли или поверностна, или плохо систематизирована, в итоге после прочтения что-то не понравилось, но оценивать не стал

    • В добавок к комментарию Владимира - в институте на самом первом занятии по программированию (IBM360/370 assembler) преподаватель сказала, казалось бы, противоречивую вещь - типа: то, что она будет рассказывать, мы все равно сейчас не поймем, по-этому задача первых лекций - привыкнуть к терминам и попытаться представлять их (объекты, названные этими терминами) взаимодействие. Т.е. делается попытка объяснить непонятные вещи на непонятном языке. Может остюда и растут ноги - кто-то лучше усваивает абстракции (что, вообще-то, не свойственно для мозга) , а кому-то нужны образы, а без образов мозгу не за что зацепиться (представьте кота на наклонной стеклянной поверхности), чтоб дальше строить цепочку знаний - идет элементарная пробуксовка. Ведь изучаются проще те вещи, на которые у человека есть ассоциации.

      Оценка статьи: 5

      • "то, что она будет рассказывать, мы все равно сейчас не поймем"
        Таким приемом, тем более для школьников, я никогда не пользуюсь.
        Весь мой курс построен на том, что на каждом этапе я стараюсь добиваться полного понимания того, что я рассказываю.
        Основной принцип: "от простого к сложному".
        Даже детям я говорю: "если вы не понимаете чего-то сложного, значит раньше было непонято что-то простое".
        "а без образов мозгу не за что зацепиться"
        Есть два способа мышления:
        1 образное
        2 вербальное (словесное)
        Если школьник знаком с алгеброй, то ему можно преподавать программирование на вербальном уровне, ведь в конечном итоге, программа это некий текст.
        Но на начальном этапе можно давать и графические диаграммы. Лет 30 назад они активно использовались и даже в официальных описаниях программ, сейчас это как то ушло.
        Развитию образного мышления очень сильно помагает геометрия (математика однако) которую в настоящее время гуманитарии, которые мыслят вербальными категориями, активно изгоняют из школьных программ.

        • слово "вербальный" - слишком неоднозначно, например:
          "Вербальный интеллект определяет успешность учения по всем предметам и, в первую очередь гуманитарным (язык, литература, история и т.п.)". (http://www.effecton.ru/384.html).

          "Программа - некий текст" вспомните "МАТРИЦУ" - там на экране тоже бежал некий текст, но из совершенно непонятных символов - за что там можно было зацепиться ? А тут пошли языковые конструкции - синтаксис, семантика. Кстати - полностью Вас поддерживаю, что в связи с переходом на объектный подход (ООП, ООД), к формальному описанию алгоритмов внимание уменьшилось. Считается, что лучшее описание - сама программа на каком-нибудь ЯВУ.

          Оценка статьи: 5

          • Не считается, а называется "прозрачный как слеза КОД" на любом языке. Вспомните с чего начиналось ООП: "программирование без GO TO".
            У хорошего программиста перед написание программы на бумаге в голове должна родиться идея, а в случае ее отсутсвия, т.е. подневольного труда - грамотное ТЗ.
            Нельзя называть программистом человека знаниющего пару операторов, с большим самомнением и компьютерным сленгом - это подрывает авторитет профессии.

  • Вот здесь - симпатичная онлайн-игрушка, развивающая алгоритмическое мышление.

    • да-да-да, игра замечательная, одна из лучших в этом роде, затягивает и алгоритмику тренирует, прошел её в конце сентября ещё.. правда немного не в том направлении оптимизировать пытался: на последнем уровне обошелся без одной дополнительной подфункции, а зря.. если бы воспользовался двумя подфункциями, то можно было бы сократить общее количество команд, но второй раз переигрывать с другим подходом было лень..

      • верю/не верю! :)

        да лано.. хотите сказать, что там можно обходиться только таким ограниченным объёмом "тела программы" и при этом применять только одну функцию!! Хм.. чёт не верится.. Имхо, логично предположить, что разработчик так учёл все возможные оптимальные алгоритмы, что обойтись лишь одной функцией не получится!. Или.. или вполне допустимо что найдётся пользователь, чей уровень алг.мышления будет выше, чем у разработчика этой игрушки!.. хто ж знает!!

        • в последнем уровне и в нескольких первых можно обойтись только одной функцией, в остальных двух хватало порой впритык
          на многие уровни возможно несколько вариантов решений, отличающиеся количеством команд, для этого в игре и ведется общий подсчет команд, чем он меньше к прохождению игры - тем лучше

    • Поиграл, очень увлекательно!! :)

      усё!! не могу больше! дощёл до лэвэла 10 кажется! там с двух концов пирамиды две кнопки, и надо так ухитрится запихнуть все ходы, чтобы.. ну, вобщем, ясно.. тем, кто попробовал поиграть, ясно! вобщем, у меня это ника не выходит! один раз не хватило объёма "исходника" всего лишь на пару ходов! абидно! там какой-то секрет.. в этом уровне.. я не догнал..

      P.S: Меня оправдывает лишь то, что я сегодня встал в 6 утра, весь день работал и только к 9ти вечера приехал домой!

      P.S2: А так.. приятно было вспомнить свои навыки прогр-я.. как-никак, а учился я на профиль именно программиста.., хотя сам больше гуманитарий.. но так сложилось!

      P.S3: Спасибо автору статьи.. нахлынули воспоминания.. .., и Марии за линк на замечательную логическую игрушку!