Несколько дней назад в посте об учебниках для начинающих внезапно было озвучено вполне справедливое мнение о том, что школьникам слишком рано изучать паттерны проектирования. Сначала «насыщенная практика», а затем паттерны. Поскольку в двух словах я свое мнение на этот счет описать не могу – вместо комментариев пишу этот текст.
Ключевой момент – да, возможно эта тема слишком сложна для начинающих и требуется сначала получить фундаментальные основы. Но есть оговорки, на которых собственно и хочется чуть-чуть задержаться.
Во-первых, с точки зрения своего возраста – я не делаю различий между школьником старших классов и студентом младших курсов. Следовательно – школьником могу назвать и студента-первокура, а тут уже понятие «слишком рано» звучит гораздо более спорно.
Во-вторых, если я возьму любую книжку по языку ООП-парадигмы – я не заглядывая в текст могу сказать что там написано. «Вот это классы», «а это интерфейсы», «классы наследуют интерфейсы». С точки зрения современного образования, который разделен на школьные классы и курсы высшего и среднего образования – такое описание, как правило, подходит уровню азбуки. Да, может, я преувеличиваю, но я не знаю ни одной книги по языку, которая помимо синтаксиса - говорила бы про практики применения данных инструкций. Если сейчас вы проведете десятка три собеседований и спросите у каждого «что такое полиморфизм?» или «назовите 3 принципа ООП-программирования» - вы как раз получите определение из книги, которую прочел ваш собеседник. Однако понимания когда и как это применять – скорее всего, нет ни у одного.
В-третьих, возьмем саму книжку. Напомню – «Head First. Паттерны проектирования». Мне эта книга действительно нравится. Но я под страхом смерти не смогу сказать, что это мощная литература для подготовки специалистов. Для меня это великолепный способ познакомить именно с методиками применения языков ООП-парадигмы.
Ну и напоследок, пара слов про образование. Предположим, ребенок хочет собирать роботов. Или строить дома. С самого детства он может заниматься на примитивном уровне сборкой подобных конструкций и понимать базовые вещи. Когда ребенок захочет стать программистом – ему что делать чтобы освоить на примитивном уровне процесс? Играть утилитами, объясняющими принцип суперпозиции и ветвления? Ну, для программирования это даже не азбука. Это умение писать в горшок, а не подгузник.
Вроде добавить больше нечего. Если кто-то из горстки читателей знает где найти нормальный систематизированный план подготовки по специальности «инженер-программист» - пришлите пожалуйста. С удовольствием ознакомлюсь и буду использовать в своей деятельности