Смекни!
smekni.com

Как готовить системных программистов (стр. 1 из 6)

Терехов Андрей Николаевич, профессор, заведующий кафедрой системного программирования математико-механического факультета СПбГУ

Профессиональным преподавателем Университета я стал почти случайно. В принципе, я читал спецкурсы, будучи еще студентом мат-меха, руководил дипломными работами, 9 человек защитило кандидатские диссертации под моим руководством, но все это было скорее фоновой работой, чем основной. Еще в молодые годы я начал руководить лабораторией системного программирования НИИ математики и механики мат-меха, и был вполне удовлетворен этой работой. Но вопрос о том, чтобы обеспечить приток новых молодых специалистов, у меня не возникал. Мы занимаемся наукой, немного помогаем в подготовке студентов, получаем молодых специалистов, и все. Когда уехал работать во Францию зав. кафедрой мат. обеспечения ЭВМ А.О. Слисенко (сейчас он заведует кафедрой в университете Париж-12), наш декан решил, что я буду хорошей кандидатурой на этот пост. Организовали собрание кафедры, попросили меня рассказать о своей программе. Она была очень короткая, всего из двух пунктов. Первый тезис: каждый преподаватель должен быть сначала исследователем, а уж потом преподавателем. Я готов простить некоторые недоработки, но не готов простить начетничества, когда преподаватель сегодня почитает книжку, а завтра расскажет. Надо, чтобы преподаватели в основном рассказывали о своих работах или о тех, в которых они принимали участие. И второй тезис был в том, что надо соответствовать международным программам. Каждые два года печатаются стандарты, мы отслеживали эти стандарты с 1992 года.

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

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

На меня это произвело оглушающее впечатление, потому что я привык думать, что мы, по крайней мере в области программирования, "впереди планеты всей". В некоторых областях это действительно так. В области техники трансляции, в области теоретических вопросов программирования, теории оптимизации. Но оказалось, что программирование за это время разрослось, и мы в своих работах, в основном на оборону, очень многие аспекты просто упустили. И в 1992 году, по моим подсчетам, мы не накрывали даже 40% международного стандарта по специальности computer science and software engineering. Поэтому я и сказал сотрудникам кафедры, что нечего почивать на лаврах, засучивайте рукава и занимайтесь, будем догонять мировую цивилизацию. На что получил совершенно негативную реакцию: не надо сгущать краски, наша кафедра подготовила таких хороших специалистов, да и ты закончил эту кафедру, что тебе еще надо?

Наш декан, Г.А. Леонов, молодой, энергичный человек, решил, что он это так не оставит, и решил создать еще одну кафедру. Была масса проблем, были дискуссии на Ученом Совете, что мат-мех и так сокращается, а тут вводят новую кафедру... Короче, были неприятные и даже болезненные ситуации, но большой дипломат Леонов все преодолел, заставил меня написать ворох бумаг, и в результате сформировалась новая кафедра. Моей заслуги в этом почти что и нет. Я всего лишь предложил несколько идей.

Так 6 лет назад я стал заведующим кафедрой системного программирования. Я начал честно воплощать собственную же программу, развивать исследования, которых у нас раньше не было. Думаю, что сейчас мы накрываем процентов 80 международного стандарта, но не могу обещать, что скоро мы накроем все 100%. Действительно, мировая наука развивается стремительными темпами, и в очень разнообразных направлениях. Исходно мне дали 3,5 ставки, но в первый же год на кафедре работал 21 человек. То есть работали сотрудники нашего предприятия, практически всегда бесплатно, и аргумент мой был только один: если вам нужны молодые сотрудники, если вам нужна обратная связь - вперед, в аудитории!

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

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

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

Начну я, как ни странно это, возможно, со стороны покажется, с практики. Студенты должны иметь практику. Программирование - это такая специальность, которой не научишь у доски с мелом в руках. Для того, чтобы лучше понять возможные пути организации практики, мысленно перенесемся в Оксфордский университет, где мне доводилось читать лекции, и я специально изучал местную постановку образования. Конечно, там иногда отдает некоторой "замшелостью", но, тем не менее, сотрудники университета свято блюдут традиции и с большой неохотой расстаются с чем-то старым. Иногда им это можно поставить в минус. Например, сейчас Оксфордский университет несколько отстал в области естественных наук от Кембриджа, и специалисты говорят, что одна из причин этого в том, что в Оксфорде на 60 лет позже отменили обязательное обучение латыни. В Кембридже отменили в 20-х годах, а в Оксфорде только в 80-х. И эти 60 лет многих молодых людей отпугивала необходимость учить мертвый язык только потому, что так делали 800 лет назад.

Но обычно верность традициям достойна уважения. Например, в Оксфорде для каждого предмета есть теоретический курс, то есть лекции, практический курс, когда преподаватель со студентами решает задачи в аудитории, у доски, у компьютера, но при этом стоит рядом, и практикум - по каждому курсу студент должен выполнить некоторую работу самостоятельно. Причем не раз в полгода, как наша курсовая работа, одна на весь семестр, а по каждому предмету каждые две недели. Есть огромные аудитории, сотни свободных вычислительных машин. Приходишь, садишься, решаешь, и затем свой результат показываешь тьютору. Это еще одна особенность - персональное обучение. По каждому предмету час в неделю студент работает со своим тьютором - таким преподавателем, который за него отвечает. Было пять предметов в неделю - значит, пять часов студент с преподавателями проведет один на один. Причем тьютор составляет основу преподавания. Именно тьютор ведет вступительные экзамены, именно тьютор отбирает себе студентов, а не колледж или университет в целом. Именно тьютор может сказать своему коллеге: "Знаешь, я уже набрал себе нужное количество студентов, есть еще такой-то студент, возьми его себе в другой колледж".

Если читают, например, операционную систему реального времени, то каждый студент должен написать программу: управление памятью, управление процессорами, управление временем. Преподаватель смотрит не только на результат, но и на то, как написана программа. По всем предметам есть лекции, практика и практикум.

У нас с этим слабее. Курсовые работы - раз в семестр, и часто превращаются в фикцию. И трудно изменить эту ситуацию к лучшему, потому что нет соответствующих материальных ресурсов. Как обязать всех студентов по каждому предмету сделать самостоятельную работу, если мы не можем им обеспечить полноценный доступ к вычислительным машинам? Классы всегда перегружены. Так, чтобы студент, занимался без преподавателя, у нас не принято. Обязательно подумают, что и вирус занесут, и что-нибудь украдут, и что-нибудь сломают. Самостоятельную работу очень трудно наладить. О тьюторстве я просто не мечтаю. Это прежде всего вопрос денег. У нас наверняка нашлось бы много хороших преподавателей, но для того, чтобы обеспечить индивидуальное обучение - сколько надо преподавателей и какое потребуется финансирование? Хотя еще со средних веков известно, что обучение - это всегда работа мастера с подмастерьем с непосредственной передачей опыта. Так что единственная "живая" практика у нас - на пятом курсе, полугодовая преддипломная практика. И здесь тоже есть свои проблемы. Хорошо, если практика была, если мы говорим о программировании, в известной фирме, которая успешно и продуктивно на современном технологическом уровне занимается программированием. Но так бывает не всегда.

Первый тезис - сегодня надо практику реально совместить с теорией. Формально говоря, все у нас есть. Пятый курс полгода проходит преддипломную практику. И чем это кончается? Вот у меня толстая пачка отчетов по практике (шелест бумаги). Люди просто пристраиваются работать (например, программистами) в какую-нибудь малоизвестную контору, чаще всего я даже названия такого не знаю. Они работают. С одной стороны, какие могут быть претензии? Человек полгода проработал, получал деньги, кому-то был полезен. Спрашиваю, я, завкафедрой: "Чему ты там научился?". "Вот, получил практический опыт программирования на Java или C++". "Как была организована работа?". "Никак. Начальник дал задание, я написал программу". "Как был организован коллектив? Какие были взаимоотношения? Как велось планирование, отчетность? Были ли еженедельные собрания? Была ли регулярная проверка качества? Были ли перекрестные чтения?". "Не было". "Так чему ты, милый, там научился?". "Программированию". "Почему тогда надо говорить, что ты заканчиваешь мат-мех факультет старейшего университета России?". Здесь явное несоответствие теории и практики.