Что не так с программированием в школе
easy

Почему школьники не любят уроки программирования

Почему обучение основам программирования в школах такое ужасное и что с этим можно сделать.

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

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

Вот в чём проблема и как тут быть.

Старые компьютеры

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

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

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

Древние языки программирования

Если спросить детей, какой язык они проходят на информатике, рейтинг ответов будет таким:

  • Паскаль.
  • Бейсик.
  • Алгоритмический язык.
  • Вы имеете в виду английский?

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

С точки зрения кадров это, наверное, правильно, потому что не нужно переучивать учителей и переписывать учебники. Но ни Паскаль, ни Бейсик, ни блок-схемы сейчас не нужны в профессиональном программировании — разработческая мысль давно шагнула вперёд.

Ещё это тесно связано с возрастом школьных компьютеров, о которых мы говорили. Современная среда разработки для какого-нибудь модного Go или даже классического языка C# на них просто не запустится. Вот и приходится использовать Паскаль, который работает на чём угодно, но который полностью устарел для практического применения.

Паскаль прекрасно помогает преподавать алгоритмику, но писать современные программы на нём крайне сложно, и вот почему:

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

Что делать: предлагать ребёнку самостоятельно изучать более современные языки — C, JavaScript, Swift, Go, Python и другие.

Нет единой методической базы

Каждый учитель сам решает, как рассказывать о своём предмете. Один подойдёт к вопросу творчески и заинтересует детей, другой отнесётся формально и прочитает материал по учебнику. Но и здесь есть подвох: учебников по информатике много, все они одобрены Минобром, и все дают разные представления о программировании. Книга авторства Семашко для 10 класса рассказывает про блок-схемы и абстрактный язык, Угринович предлагает изучать Visual Basic, а Босова и Поляков вообще ничего не говорят про программирование в 10 классе.

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

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

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

Непонятно, как применять знания в жизни

Когда выпускник начинает изучать программирование глубже, чем в школе, то понимает, что между его знаниями и современными языками — пропасть. Проще начать всё заново или вообще не заниматься этим, чем опираться на старые сведения.

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

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

Program SortMas;
var
i, j, k: integer;
 mas: array[1..20] of integer;
Begin
 randomize;
 for i := 1 to 20 do mas[i] := random(100);
 writeln;
 writeln('массив до сортировки');
 for i := 1 to 20 do write(mas[ i], ' ');
 for i := 1 to 19 do
   for j := i + 1 to 20 do
     if mas[i] < mas[j] then
     begin
       k := mas[i];
       mas[i] := mas[j];
       mas[j] := k;
     end;
 writeln('массив после сортировки');
 for i := 1 to 20 do write(mas[ i], ' ');
End.

А теперь посмотрим на код JavaScript, который делает то же самое:

var arr = [];
for (var i = 0; i < 20; i++) {
  arr.push(Math.round(Math.random() * 100));
}
for (i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}
arr.sort((a, b) => a - b);
console.log('Массив после сортировки');
for (i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

Как видите, код стал компактнее и проще. Это благодаря тому, что современные языки уже умеют сами сортировать массивы, работать с переменными, размер которых заранее неизвестен, и объявлять их в том месте, где они понадобились.

Что делать: стимулировать в детях самостоятельное изучение программирования. На десятке примеров со Stack Overflow можно иной раз узнать больше, чем в целом предлагает школа.

Как разжечь в ребёнке интерес к программированию

Лучший способ привлечь детей к любому занятию, в том числе программированию, — личный пример. Когда в семье мама и папа увлекаются кодом, пусть даже и непрофессионально, ребёнку тоже будет интересно попробовать. Робототехника, программируемые контроллеры, Arduino и Raspberry Pi, программы на Scratch и робоконструкторы — всё это помогает разжечь интерес.

Если просто заставлять ребёнка заниматься, в то время как в семье никто не интересуется кодом, эта затея скорее провальная. Личный пример — лучший путь.

Курсы по программированию с нуля
Приходите к нам в ИТ. У нас есть удаленная работа, высокие зарплаты и удобное обучение в «Яндекс Практикуме». Старт бесплатно.
Начать бесплатно
Курсы по программированию с нуля Курсы по программированию с нуля Курсы по программированию с нуля Курсы по программированию с нуля
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy