14 января 2010

Статья Страуструпа об обучении программистов в университетах

В январском номере Communication of the ACM Бьярн Страуструп рассуждает о том, что выпускаемые университетами "программисты" программировать-то на самом деле не умеют, и о причинах такого явления. Статья совсем небесспорная и в немалой степени ориентированная на американскую систему образования, но и российским студентам (да и преподавателям, и руководителям предприятий) есть что в ней почитать. Перевод на русский язык читайте на хабрахабре.

Вообще этот номер CACM удался, там кроме Страуструпа показывают ещё очередной раунд битвы титанов по поводу Map-Reduce.

10 комментариев:

  1. Хорошая статья =)
    Но, по-моему, в нашем образовании все еще хуже...совсем недавно (да и сейчас тоже) я был недоволен тем огромным объемом математики (+ далекие от "промышленного программирования" предметы), который есть на матобесе.
    А тут на днях меня посетили совсем другие мысли. Теперь на 4-м курсе необходимо выбирать специализацию, от которой зависят спецкурсы\спецсеминары. Так вот, есть на кафедре информатики специализации: "информационные системы", "технологии ПО", "мат. основы информатики".
    И со всего 4-го курса кафедры на эти самые "мат. основы" хочет 1(!) человек. И это ведь мат-мех, в других университетах наверняка упор в сторону "промышленности" в программировании еще сильнее стал. Кто же теперь будет заниматься именно теоретической информатикой у нас в России?
    Сначала я успокоил себя мыслью о том, что наверняка все специалисты по теоретической информатике - математики по образованию (например, с нашего чисмата). Может быть, так оно и есть, но ведь и у математиков свои заботы, и не думаю, что так уж много студентов с чисмата пойдут заниматься теоретической информатикой...
    С другой стороны, мне не оценить, конечно, сколько процентов среди конкретного выпуска мат-меха должны пойти заниматься теоретической информатикой, чтобы удовлетворять конкретные нужды науки на сегодняшний день, но что-то мне подсказывает, что все же побольше, чем 1 =/
    И ведь до сих пор жалуемся, что такой разрыв с промышленностью, надо больше стажировок для студентов, надо работать студентам.
    Я вот работаю 32 часа в неделю, посещаю всего где-то 10 пар за семестр, понимаю, что никаких конкретных знаний, кроме того, что сам изучал, я не получил, и не получу уже видимо.
    Как-то от всего этого становится грустно...
    Остается надежда только на таких молодых и адекватных преподавателей, как Вы (кстати, САКОД, который Вы вели у меня 2 года тому назад, я считаю самым полезным курсом за все свое обучение на мат-меха=)
    Очень бы хотелось, чтобы такие преподаватели вели побольше спецкурсов\семинаров, с новыми и, главное, интересными темами (мне-то осталось учится год с небольшим, вряд ли я застану какие-то радикальные перемены в образовании, но будущим студентам наверняка бы пригодилось)
    Да, что-то я отвлекся от темы немного...
    Но буду рад услышать какие-нибудь комментарии ;)

    ОтветитьУдалить
  2. Сумбурненько получилось, да :)
    Но на матмехе действительно очень много кормят суровой математикой на первых курсах и недокармливают приближенными к реальности блюдами, типа тех же алгоритмов или шаблонов проектирования, не говоря уж о практических заданиях по написанию кода в команде. Небось Романовский на первых двух курсах так и остался наиболее ценным (жаль что первокурсники этого ещё не понимают).

    Охотно верю что к четвёртому курсу заниматься теорией уже ну совсем не хочется, а практические знания все кому надо уже худо-бедно получили на работе. Ну и что получили то получили, кому уж как повезло: несколько человек ворошат терабайты в гугле или яндексе, а большинство быдлокодит потихоньку где придётся.

    Это конечно же невесело, но надо уже осознать что помощи-то ждать неоткуда. Это в ваших, Владимир, рассуждениях, самый большой промах. Никто кроме вас самих не решит ваши проблемы, надеяться надо не на меня или кого-то ещё из молодых преподавателей, а на себя.

    Дальше долгая нотация, ахтунг :)

    Нужно сказать себе "Я не хочу быть посредственностью. Мне повезло, я учусь на одном из лучших факультетов в стране, я могу общаться, пусть и с небольшим количеством, но всё ж таки с одними из лучших инженеров в стране, к нам захаживают в гости всемирно известные личности и корпорации, то Google, то Sun, то Microsoft. Мои однокурсники, в большинстве своём, умные люди, с интеллектом намного выше среднего. У меня есть интернет с доступом ко всему миру и к ACM digital library в частности. Меня вовсе не гнобят учёбой и у меня есть свободное время". Используйте по максимуму все эти блага (10 лет назад от них было только последнее -- не гнобили учёбой -- и первое -- желание стать богом). Будьте активнее, не стесняйтесь задавать вопросы или как-то ещё общаться с интересующими вас преподавателями на лекциях, на перерывах, в интернете, etc. Объединяйтесь с однокурсниками, начинайте вместе какие-нибудь совершенно безумные проекты just for fun (из одного такого вырос Google), просите какого-нибудь совета у всё тех же преподавателей, осознавайте, что вам всем интересно было бы узнать и спрашивайте, можно ли это как-нибудь узнать. Участвуйте в хороших открытых проектах -- это вовсе не так страшно и может оказаться очень полезно. Сделайте хотя бы для начала нормальное online расписание своему факультету, в wiki-стиле, сколько ж можно фотографии то разглядывать? Я уж не говорю о приличном сайте вместо того убожества которое есть у нас сейчас.

    Взрослейте в общем, становитесь самостоятельнее, привыкайте к тому что вы сами строите себе будущее.

    ОтветитьУдалить
  3. Однокурсники 10 лет назад конечно же тоже были умными и замечательными, несправедливо я их пропустил :)

    ОтветитьУдалить
  4. Да я-то со всем согласен:
    "Никто кроме вас самих не решит ваши проблемы, надеяться надо не на меня или кого-то ещё из молодых преподавателей, а на себя."
    Просто статья Страуструпа неким образом касалась проблем образования, я поэтому и написал, что надо много чего менять в самой системе нашего образования.
    Все-таки я считаю, что самообразование должно быть добавкой к образованию, а не наоборот.

    "Сделайте хотя бы для начала нормальное online расписание своему факультету, в wiki-стиле, сколько ж можно фотографии то разглядывать? Я уж не говорю о приличном сайте вместо того убожества которое есть у нас сейчас."
    Да, это верно сказано. У нас с однокурсниками некоторые мысли уже были по этому поводу. Может быть, что-нибудь и сделаем ;)

    ОтветитьУдалить
  5. Дело в том что наше высшее образование -- оно не такое как американское и хотя симптомы, с которыми воюет Страуструп, примерно такие же ("не умеют программировать"), их причины немного в другом, и другим должно быть лекарство.

    ОтветитьУдалить
  6. хм... я про американское образование, к сожалению, ничего сказать не могу.
    И было бы здорово, если бы Вы написали про него и про 'причины' и 'лекарство'

    ОтветитьУдалить
  7. Ну оговорюсь что я тоже в Стенфорде не преподавал и даже не учился. Но тем не менее, помимо организационных отличий (типа структуры под названием "школа" -- нечто примерно соответствующее нашему "факультету") и всякой технической мелочи, типа согласования практики (labs) и лекций и раздачи на лекциях практических заданий, есть достаточно концептуальное отличие: у американцев нет обязательной программы. С самого первого курса ты сам выбираешь, какие лекции посещать а какие не надо. За каждый прослушанный и сданный курс получаешь какое-то количество баллов, и диплом выдаётся если набралось достаточно баллов. В принципе, можно получать баллы совсем не по профильным предметам (подозреваю правда что сделано так, что получить диплом по Computer Science слушая только философию всё же невозможно). Не получилось сдать курс -- можешь сделать это в следующем семестре. Оплачивается конкретный курс, а не просто "учёба".

    Да простят и поправят меня знатоки американской системы, если я где наврал. Надеюсь что не сильно.

    Ну так вот, из этого следует что на курс ходят только те, кому этот курс нужен. Если уж ты пришёл на матфизику, значит это тебе во-первых зачем-то надо, а во-вторых ты за это заплатил, и стало быть ты напрямую заинтересован в том чтобы хорошо курс изучить.

    Надо ли рассказывать в чём отличие от посещения лекций у нас в университетах?

    Дядя Страуструп жалуется на то, что те, кто заинтересован в изучении CS, получают неприменимые на практике знания (или просто не понимают, как их применить). Это верно и для нас тоже. Но у нас значительно большей проблемой является то, что студентам в аудитории не нужно то, о чём рассказывает лектор, они его слушают потому что они должны сдать экзамен, который они не выбирали. Соответственно и преподавателям невелика радость общаться с целой аудиторией живых диктофонов.

    Казалось бы, надо преподавать то, что студентам интересно, так? Но, во-первых, существует учебный план, утверждаемый министерством образования: на специальности такой-то должно быть прочитано столько то часов матфизики и столько то СУБД. Отступить от него и что-то убрать непросто, а добавить особо не добавишь, потому что надо что-то убрать.

    А во-вторых вы, студенты, сами не знаете, что вам надо. Вам надо диплом "попрестижнее" и от армии откосить, а будет это на матмехе, ПМПУ или в ЛЭТИ -- не так уж и важно.

    Я, разумеется, не говорю ни о ком конкретно, и более того, я до сих пор катаюсь в Петергоф только потому что мне кажется, что матмеховцы при поступлении всё же в основном шли туда, куда хотели поступить, а не просто мимо проходили.

    Для того, чтобы в нашем нынешнем положении вам начали интересные преподаватели читать интересные лекции, вам нужно самим громко кричать "мы тут! мы есть! мы не болото, нам, сука, интересно, мы за этим пришли на матмех, чтобы стать хорошими программистами или там финансовыми математиками! мы сами умеем проявлять инициативу, вот посмотрите, какое у нас здоровское online расписание -- это мы его сделали, там даже online консультации некоторые преподы дают -- код открыт, лежит на github, но в код не смотрите, там ужоз-ужоз, но если расскажете как сделать лучше, будет круто! а ещё мы в SIGMOD contest'е участвовали, не выиграли, но это потому что времени у нас не хватило всё это изучить, лекций то нам не читают... но в следующем году тоже хотим поучаствовать!"

    Я в общем-то об этом и говорил в предыдущей проповеди ;) а не о чистом самообразовании конечно. Только вы сможете привлечь к себе хороших адекватных преподавателей, вся надежда -- на вас :)

    ОтветитьУдалить
  8. Да, это верно сказано. У нас с однокурсниками некоторые мысли уже были по этому поводу. Может быть, что-нибудь и сделаем ;)

    Что же вам до сих пор мешало начать?

    ОтветитьУдалить
  9. Скажу как обстоит дело с выбором курсов в Швеции.
    Нельзя говорить о "полной свободе выбора курсов"
    Цитата: "Study programs usually contain a mix of compulsory, recommended and optional courses. This system allows institutions to combine courses into full programs, offering varying levels of individual choice."
    http://www.studyinsweden.se/Study-options/Basic-information/Programs-and-courses/

    ОтветитьУдалить
  10. Спасибо, Юрец, за поправки, хоть и не про Штаты :) Разумеется где-то можно ввести обязательные курсы, а где-то баллами можно манипулировать так, что какой-то курс станет обязательным (сомневаюсь правда что на факультете CS им станет матфизика).

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

    ОтветитьУдалить