Примерно тридцать лет назад, когда я впервые начал работать в нашей области, все программисты были математиками и сам предмет называли прикладной математикой. В то время технологический подход к программированию только начал формироваться, поэтому главной доблестью специалиста считалось умение грамотно написать алгоритм. С тех пор утекло много воды, подход к предмету сильно изменился. Появилось достаточно людей, совершенно серьезно полагающих, что все алгоритмы уже написаны и единственно, что требуется современному программисту - это владение технологией сборки алгоритма из уже готовых: процедур, функций, объектов и т.д. В какой-то степени это справедливо. Действительно сделано много. И мне известны вполне успешные программисты, успешные в том смысле, что они работают над задачами, за которые им хорошо платят и решаемые задачи интересны и полезны, но эти специалисты при том очень плохие математики, скажем так – они математики не знают. Сегодня быть успешным программистом, означает нечто иное. Может быть это и правильно но давайте подумаем о вот о чем. Технология это такая вещь, которую могут освоить многие. А технологии программирования для того, собственно и разрабатывались, чтобы программирование стало массовой профессией, чтобы стало возможно промышленное программирование. Умение разрабатывать алгоритмы – умение более тонкое. Здесь, во-первых, требуются более глубокие знания, а во-вторых, в этом деле есть серьезный элемент творчества. И лично я из своей и программисткой и педагогической практики заметил, что человек, владеющий уверенными навыками алгоритмизации способен освоить любую технологию и при этом вполне самостоятельно. А вот обратное не верно. Хорошее понимание технологических моментов ничего не дает для развития умений алгоритмизации. Поэтому ключевой момент моей школы – это алгоритмизация и хорошее знание математики. Второе основание – это многоязычие. Сегодня в объявлениях часто можно встретить – требует программист, пишущий на Питоне, Си или каком-либо ином языке. Деление программистов по признаку языка самое примитивное деление, которое только можно придумать. Не язык составляет суть программиста. Но конечно, совсем уйти от языковой проблемы нельзя и здесь мое мнение такое. Настоящий специалист должен свободно владеть двумя, тремя языками и уметь быстро осваивать новый язык или систему программирования. Более того, языковое образование, безусловно, не должно ограничиваться императивными языками. Необходимо быть знакомым со всеми основными идеями в области построения языков программирования. Третье основание моего метода, это опора на прикладные задачи. Весь курс – это последовательность задач от самых простых, и через задачи с хорошей сложной логикой до профессиональных. Поэтому я имею смелость утверждать, что могу подготовить специалиста в области программирования с нулевого уровня. Конечно, надо понимать, что сегодня под специалистом понимается человек, имеющий высшее образование и набор специальных знаний, умений и навыков не составляет всего высшего образования. Я полагаю, что такое уточнение вполне естественно. Очень важен вопрос, для кого возможно стать программистом. Здесь я думаю, дело обстоит следующим образом. В любой профессии есть уровень творчества и уровень технаря, просто хорошо решающего точно поставленную задачу. Творчеству вас никто не обучит. Думаю, мы сегодня очень плохо понимаем, что такое творчество тем более как ему учить. А вот научить техническим навыкам решения задач даже сложных вполне возможно и мой большой и педагогический и программисткий опыт говорит о том, что это возможно если не для всех, то для очень многих. Никакого особенного таланта для этого не нужно. А если вы имеете способности к предмету, то вполне возможен и выход на уровень творчества. А что для этого необходимо? Очень много терпения и очень много личного труда. Если вы на это готовы, то я смогу вам помочь.
С уважением, Виталий Валерьевич Потопахин. Учитель программирования.
E-mail: lotos-khv@yandex.ru
|