          
                                            
|
Чему не учат в школе
Недели три назад разместили несколько объявлений в местных компьютерных изданиях. Ищем программиста. Требования: ничего сверхъестественного. Знание Windows на уровне API, базы данных в архитектуре клиент/сервер, SQL, Delphi. Минимум на сегодняшний день. Ни тебе локальных и распределенных сетей, ни глубокого знания и умения программировать железо (модемы, джойстики и проч.), ни владения специфическими API (MAPI, TAPI и т.п.). Я уже не говорю про основательное знание объектно-ориентированной идеологии. Все эти RTTI, исключения и проч. Набралось чуть более полусотни звонков. Большинство кандидатов только-только закончили какое-нибудь высшее учебное заведение либо еще являются студентами и, что самое печальное, девять из десяти новоиспеченных выпускников ВУЗов не обладают и половиной необходимых знаний. Оставшийся же десятый, как правило, приобрел навыки работая в какой-нибудь фирме над конкретным проектом одновременно с учебой на стационаре. Вспоминая собственный опыт такого рода "совместительства" могу сказать, что в этом случае знания были получены скорее вопреки университету, нежели благодаря нему.
Выходит, что наша хваленая система высшего образования не способна подготовить тривиального программиста. Хорошо, если человек знает к чему стремится и в процессе учебы самостоятельно будет приобретать знания, которых ему не дадут. Другое дело, если при поступлении абитуриентом двигали иные мотивы: это мол модно, на этот факультет пошли мои друзья, там будут компьютеры... Конкурс на специальности, так или иначе связанные с программированием, уже лет десять один из самых высоких (8 (!) человек на место на ФПМ БГУ в этом году). Уверен, что большинство нынче испытывающих фортуну на вступительных экзаменах мыслят о компьютере в первую очередь, как о классном игральном автомате, и только потом, как о мощном инструменте, на котором можно делать что-либо иное, кроме как гонять бедных монстров по коридорам DOOM. Отучится такой студент пять лет, а что дальше? Вопрос риторический и ответа не требует. Ответ нужен на другой вопрос. Почему у нас не могут подготовить стоящего программиста?
Некому учить
Помните лозунг: "Кадры решают все". Причина первая на мой взгляд кроется в том, что этих самых кадров у нас нет. Программирование преподают все кто угодно, но только не программисты. Паскаль по книгам незабвенных Вальвачева-Крисевича-Бородича-кто-у-них-там-еще и умение составить программку сортировки массива методом пузырька уже достаточный уровень, чтобы читать курс лекций. Собственно, кто такой программист? Человек, умеющий составить и запрограммировать простенький алгоритм, или специалист, способный разработать, написать и отладить настоящую программу, на которую найдется хотя бы один покупатель? Мне больше импонирует вторая формулировка. Она из жизни. Именно такие специалисты подразумеваются, когда работодатели ищут программистов.
В национальной хоккейной лиге, что в северной Америке, есть одно золотое правило: тренером может стать только игрок, сам бывший звездой. Иначе чему он научит своих подопечных? Здесь у нас не Америка, к тому же далеко не хоккей и, тем не менее, как может обучать преподаватель, сам в своей жизни не написавший ни одной реальной программы? Да ни как...
Неначем учить
Всадник без лошади, автомобилист без машины... Попробуйте продолжить ряд... правильно: программист без компьютера. Укомплектованность учебных заведений компьютерами (язык не поворачивается называть их персональными) ниже всякой критики. Хорошо хоть, что отправили на покой вечно жужжащие, дрожащие и гремящие ЕСки. Эту машину нашей молодости, серо-коричневый кошмар моей памяти. Впрочем, если четверка с восемью мегами ОЗУ, этакое подобие на современный компьютер, стала достаточно обычным обитателем учебных лабораторий, то о периферии можно сказать достаточно емко и коротко: ее нет. Нет сканеров, плоттеров, модемов, струйных и лазерных принтеров. И если бы не сверхнадежность матричных принтеров фирмы Epson, переживших не одну волну компьютеризации и способных печатать кажется на чем угодно и чем угодно (до сих пор храню листинги программ буквально выбитых безо всякой там красящей ленты на тетрадных листках. Смотреть надо только под определенным углом к освещению, иначе ничего не видно. Что-то типа писем молоком дедушки Ленина). Так вот, если бы не Epson - вряд ли бы увидели нынешние студенты результаты своей работы на бумаге.
Но, даже если вдруг произойдет невозможное и системе высшего образования будет придан высокий приоритет, и будут выделяться деньги, и появится в лабораториях достойная техника - это не решит всей проблемы. Студенту мало слушать лекции и выполнять практические и лабораторные работы, необходимо еще и заниматься самостоятельно (если студент конечно хочет стать классным специалистом), а чтобы заниматься самостоятельно необходимо иметь компьютер дома. Вот с этим в стране, где на официальную минимальную зарплату не купишь и коробки дискет, туго. И, пока такое положение вещей сохранится, ждать волны качественных программистов не приходится. Пусть даже ВУЗЫ будут работать в две смены.
Нечему учить
Еще одна проблема заключается в том, что науки, изучающей компьютеры у нас нет как таковой. На западе есть, у нас нет. То, что у них называется Computer Science у нас долгие годы пытались подменить прикладной математикой, кибернетикой, информатикой. В результате чего стены ВУЗов покидали хорошие математики, кибернетики и информатики но, увы, посредственные программисты. Там, где нет науки, нет строго очерченных границ, не может идти речи о методике обучения. Нужна дисциплина в рамках которой изучалось бы устройство компьютера на уровне необходимом программисту. То есть, не так глубоко, как, скажем, изучается устройство интегральных схем в курсах электроники, но и не так поверхностно, как обучают этому нынешних программистов. Нужно изучение программного обеспечения. Принципов его построения. Приемов его создания. Изучение современных технологий и систем программирования.
Вот три причины, по которым, на мой взгляд, у нас не могут подготовить программиста, которого не надо было бы доучивать и переучивать, прежде чем он смог бы написать качественную программу. Иногда можно слышать еще и такой довод: учить программированию невозможно потому, что технология меняется слишком быстро. Постойте, но то, что новые версии программ появляются чуть ли не каждые полгода, еще не значит, что само программирование эволюционирует с той же быстротой. Истоки ООП лежат в далеких шестидесятых, C++ был разработан в 1982г., SQL в семидесятых... Согласитесь, фундаментальные изменения происходят не так уж и часто, чтобы не успевать разрабатывать методики и писать учебники.
Андрей КИРЕЕВ
|