Санкт-Петербургский государственный университет
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 3472 / 1138 | Оценка: 4.27 / 4.03 | Длительность: 07:12:00
ISBN: 978-5-9556-0104-5
Дополнительный материал 1:

Как готовить системных программистов

< Лекция 7 || Дополнительный материал 1: 123456 || Дополнительный материал 2 >

У меня защищалось в этом году 19 человек. Приходит студент V курса, проведший полгода где-то на практике. Показывает свою программу. Я говорю: "Хорошо, давай посмотрим, насколько научна твоя работа. Что здесь самое главное? Во-первых, насколько это новый результат? Писал ли кто-нибудь об этом раньше?" "Не знаю" "Ты делал обзор литературы?". "Нет"... Чем отличается исследователь от практика в худшем понимании этого слова? Исследователь поймет, что не надо изобретать велосипед. В наше время, когда есть Интернет и другие каналы получения информации, имеет смысл посмотреть, что сделали другие. С этого надо начинать. Далеко не всем это приходит в голову. Нашел, что такого результата нет, и ты его сам получаешь. Но есть похожие результаты. Проведи сравнительную характеристику. Мне не нравится такая ситуация: люди работали, писали дипломы, писали диссертации. Спрашиваешь: "Чем ваша технология лучше, чем остальные?" И следуют аргументы: "С одной стороны, нельзя не признать, с другой стороны, нельзя не согласиться..." Спрашиваю: "Ребята, вы потратили на эту работу столько сил и времени. Мы интуитивно понимаем, что это хорошо. Но разве так трудно все это четко сформулировать? У многих программ есть демо-версии, и сравнение их с вашим вариантом входит в работу". Нынешняя молодежь с трудом понимает, что просто сделать что-то, что работает, – это меньше половины дела. Настоящий исследователь должен смотреть, как работают другие, скачивать демо-версии, читать инструкции – как у них запускается программа, научиться запускать, посмотреть, поработать, понять, что хорошо, что плохо, может быть, заимствовать какие-то идеи. Необходимо четко сформулировать, в чем твоя заслуга. Что ты такого сделал, чего у других нет? Сейчас этим занимаются только бедные диссертанты, и то, к сожалению, есть такая десятилетиями сложившаяся практика, что они занимаются этим в последний момент, когда уже "кирпич" пишут. Положено иметь обзор литературы по теме – они и сидят в библиотеке по 3 месяца в самом конце. Между прочим, на моих глазах была ситуация, когда аспирант защищается по отладке, а его на Совете спрашивают: "Как это соотносится с такими-то методами отладки?" Оказалось, что он в библиотеке Академии Наук сравнивал свой метод с американскими работами, а то, что в СССР есть такие работы, и не знал...

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

Итак, важно умение сформулировать задачу, умение посмотреть на нее со стороны "что есть в мире" и умение четко объяснить, что у тебя нового.

Я в очередной раз отвлекся, но все-таки закончу. Приходит студент из мелкой фирмы с программой. Никакого анализа не сделано, сравнительных характеристик не сделано, никаких моделей не построено, ничему новому он не научился, то есть просто сидел и работал на зарплату. Что теперь делать? Я уверяю, что это не может быть дипломной работой. Дипломная работа обязательно должна нести элемент научного творчества.

Преддипломная практика – на первом семестре пятого курса. И когда человек нормально практику прошел, чему-то научился и пришел с результатом, у него еще есть время на то, чтобы превратить эту работу в дипломную. Бывают смешные случаи. Два студента сделали транслятор с Java. Никаких ссылок – будто они в безвоздушном пространстве. "Сколько вы знаете трансляторов с Java?" "Один или два". Поискали в Интернете – оказалось, 20–30. "Дайте сравнительные характеристики". Выяснилось, что проигрывают в 500 раз одному из трансляторов. Говорю: "Ребята, я читал про унтер-офицерскую вдову, которая сама себя высекла, но не думал, что это может быть среди студентов мат-меха". Посмотрели программу – это оптимизирующий транслятор с языка С. Java – это интерпретатор по определению, поэтому их и сравнивать по эффективности нельзя – это задачи с совершенно разными целями. Умение грамотно сформулировать задачу здесь было необходимо. Хорошо, что я успел увидеть эту дипломную работу, иначе над нами бы еще долго смеялись.

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

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

Но кто сказал, что только такие люди нужны? Мы переходим к следующему вопросу. Вот передо мной лежит проект программы "Федеральная целевая программа электронной России на 2002 – 2010 годы". Мне очень понравилась фраза: "В настоящее время наблюдается определенное перепроизводство "массовых" специалистов с высшим образованием, в частности, в области создания программного обеспечения и технической поддержки информационно-вычислительных и коммуникационных систем, которые часто вынуждены выполнять функции, не требующие широкой теоретической подготовки, которые могут и должны замещаться специалистами со средним образованием". Еще год назад, в связи с конференцией по Наукограду, я изучал материалы про аналогичные зоны в Индии, в Ирландии. В Индии готовится в год 5000 master of science (аналог нашего высшего образования) и 27000 бакалавров. Мы пытались прикинуть, сколько у нас готовится. Получилось несколько тысяч программистов с высшим образованием очень разного профиля. У нас и железнодорожный институт, и институт водного транспорта готовит программистов, но все равно получается всего несколько тысяч. А бакалавров нет вообще. У меня, как видите, вся стена увешана досками с именами наших сотрудников, которые готовят команды на международные олимпиады по программированию. Пять лет подряд в десятке из 2500 команд, два года подряд – чемпионы. Это приятно. Но только за 5 лет ни один из них не стал профессиональным программистом. Они математики. Сейчас Андрей Лопатин перешел на нашу кафедру и переучивается. Нельзя сказать, что у него все так бравурно идет – он тратит силы, время, и надеюсь, что из него мы сделаем профессионала. Это первый такой пример за 5 лет. Я и раньше пытался сказать, что мы слишком сильно сконцентрировались на результатах олимпиад. Действительно, важно побеждать на олимпиадах, важно иметь исследователей. У меня на предприятии есть несколько человек, таких, что, если хотя бы один из них уйдет, мое предприятие лопнет. Есть люди, на которых держится предприятие, потому что они придумывают новые идеи, они все цементируют. У меня на предприятии больше – 200 человек, а таких, без которых все остановится – 2–3, может быть, 5, если молодых прибавить. Если уйдут другие, можно найти им замену. Но именно остальные 200 человек выполняют основной объем работы. Бакалавриат у нас как-то не прижился, но нужно найти какие-то упрощенные формы подготовки программистов.

Иногда говорят: "У нас такой отсев, у нас уезжают на Запад". У нас на кафедре немногие уезжают – за все годы человек 15 из 250–300 выпускников уехали за рубеж. Многие из этих 15 не просто так уехали, а по согласованию со мной перешли в компании в США, которые со мной же сотрудничают. То есть можно сказать, что эти выпускники со мной же и работают, только с другой стороны. Кстати, это очень помогает. Всегда приятно, когда там свои люди, говорящие по-русски, с нашим менталитетом. Дело не в английском языке, у нас по-английски все говорят, но, когда там сидит человек и может поговорить на "ты" с кем-то из наших это всегда сильно помогает. Так что это даже нельзя назвать потерей. Бывает отсев, когда уходят в другие компании. Бывает так, что выпускник нашей кафедры уходит за зарплатой в 1000 долларов. Я столько платить не могу. А они уходят и часто страдают. Вот сейчас Artificial Life объявила, что закрывается, другие компании сокращают количество сотрудников. Я не то что мстительный, просто я слежу за своими учениками. Этот был вынужден уйти сюда, этот туда. Не все у них плохо, слава Богу, но за длинным рублем гнаться не стоит, особенно в молодые годы.

Еще немного отвлекусь, уж больно пример для меня интересный. Когда уезжали хоккеисты уровня Ларионова и Фетисова, это было одно. Люди, сделавшие имя, они за рубежом уже были хорошо известны. Когда уезжают 19-20-летние ребята, чтобы годами играть в фарм-клубе, то потом, даже когда пытаются вернуться, уже здесь не могут играть на хорошем уровне, потому что там они не играли у таких великих тренеров, как Тихонов, Тарасов, и имели мало игровой практики. Аналогия абсолютная. Одно дело – человек закончил математико-механический факультет, еще лучше – аспирантуру, защитился, получил 5-10 лет стажа, поработал, принес пользу своему предприятию, своему родному университету, научил молодых специалистов и поехал. Вперед, я даже помогу. Это профессиональный рост, это интересная работа. Я вовсе не к тому, что нельзя ездить. Он там получит новые знания, новые силы, новую информацию для себя и, возможно, для нас. Может нам принести заказы, интересные научные исследования. Все это понятно. Я считаю, что это нормально. Совсем другое дело, когда уезжает совсем молодой человек. У меня был случай, когда студент полгода недоучился, диплом не защитил и уехал. Ведь диплом Ленинградского – Петербургского университета во всем мире признается. "Вы извините, может быть, мне перейти на другую кафедру, чтобы вашу кафедру не позорить?" "Да, – говорю, – и так уезжай!" Но я считаю, что это уже перебор. Кому он там нужен? Сейчас там перепроизводство программистов, массовые сокращения. Опять-таки не подумайте, что я злорадствую. Хотя, конечно, тех, кто меня бросил, тем более "на полуслове", не передав материалы, не передав информацию, я тоже запоминаю. Были разные неприятные случаи, но мне не хотелось бы о них подробно рассказывать.

< Лекция 7 || Дополнительный материал 1: 123456 || Дополнительный материал 2 >