Специальность 231000 Программная инженерия (Software engineering)
Мой сын этим летом поступает в высшее учебное заведение. И естественно программная инженерия у нас в списке приоритетов. Я тем временем сижу вычитываю учебные планы по данной специальности различных вузов, а их только в Москве 31 штука. Честно говоря, мне очень нравится, что такая дисциплина у нас вообще появилась. Однако присутствует у меня ощущение, что чего-то в большинстве учебных планах все же не хватает. Что-то уважаемые профессора своим студентам не договаривают. Попробовал сформулировать что именно:
- Прежде всего, не хватает java. Не java в смысле языка программирования или же виртуальной машины, а java в смысле JavaEE (она же J2EE). Как язык программирования Java, безусловно, полезна, но самое интересное начинается, когда речь заходит о серверах приложений (application server). Я не знаю, какое будущее ожидает Java Enterprise Edition, но не сомневаюсь в том, что это самое ощутимое настоящее современной нам программной инженерии.
- Интернет и сети передачи данных присутствуют практически во всех программах и это хорошо. Знание ADSL и PPP еще никого не испортило. Но что-то подсказывает мне, что учить будущих специалистов надо не семиуровневой модели и не протоколам ниже IP, а протоколам выше TCP. С проводами и радиоинженеры разберутся, а программный инженер должен представлять что такое ietf.org и чем stateless протокол отличается от stateful. В деле интеграции приложений пригодится. Туда же SOAP, WSDL и прочие творения OASIS и W3C. Даже как-то обидно, что ВУЗы забыли про интеграцию приложений. Вот CORBA-у уже, наверное, можно не читать, они бы еще COBOL вспомнили, а без протоколов взаимодействия приложений инженеру никак нельзя. Он же не какой-нибудь там программер
- Еще про старину. Что-то я lex-ов и yacc-ов ни у кого в учебных программах не обнаружил (почти ни у кого). Наверное, созданием компиляторов программные инженеры заниматься не будут, но интерпретатор хотя бы раз в жизни им наверняка разработать придется. Ну и как же это сделать без синтаксических и лексических анализаторов. А еще, не вижу Дональда Кнута, хотя бы третьего тома «сортировка и поиск». Но ведь должен же быть, наверняка я что-то невнимательно прочитал. Вот про юзабилити практически у всех что-то написано, а Кнута не видно.
- Про методологию разработки ПО – отдельный вопрос. Что-то мне подсказывает, что управления требованиями и навыки аттестации ПО не заменят будущему специалисту опыта работы в опенсорсном проекте в стиле agile.
- И в завершении, конечно архитектура информационных систем. Причем архитектура не в смысле красивых картинок, а архитектура в смысле проектирования ИС: API для plugin-ов и extension-ов, конфигурации и т.п. На работе такому не научат по экономическим соображениям, т.к. чем больше хардкода, тем больше новых требований по доработке. Потому строка Макаревича: “Нас всех обучили секрету созданья гармонии в мире…» как раз и обращена к ВУЗу
Ну а вообще, это здорово, что в ВУЗах появилась такая специальность
Рубрики:Software architecture

Думаю, что для этой специальности крайне полезно было бы изучать Personal Software Process как инструмент собственной эффективности…
Маским, здорово что вы проверяете программу специальности перед тем как сына направить туда.
Но немного не согласен с вашим анализом:
1) Java
1a) нужен язык для оттачивания алгоритмов и структур данных, раньше был бейсик, потом паскаль, местами перешли потом на C, местами на java – это нормально и удобно. Альтернативные языки (Phyton, Lisp) факультативны, как доп нагрузку можно давать.
1б) J2EE – сервера приложений ничто, важна концепция построения решений в которых происходит разделение задач между клиентами/серверам/процессами/событиями и т.п. Я бы сказал, из j2ee интересны только шаблоны проектирования, и то только в сравнении с другими архитектурами.
2) семиуровневый OSI знать нужно. не ожидал, но в свое время потребовалось знание и UDP и TCP, как минимум как основу построения своих протоколов. Интеграция приложения это скорее не к протоколам, а к идеи и концепции построения продуктов. Не важно, что последние 5-10 лет SOAP и WSDL удобен для интеграции, через 5 лет все может измениться. А вот идея сервисной модели, разделения функций и интеграция компонентов для достижений бизнес целей – еще долго будет актуальной.
3) согласен полностью.
4) методологию надо преподавать причем не только Agile, а скорее RUP, а уже после показать чем (для чего) Agile удобнее/хуже.
5) согласен, частично пересекается с моим текстом в 1б.
Максим, случайно забрел на твой сайт.
А почему такой большой список? Исходя из моего опыта преподавания я бы его сократил до трех: МГУ, МИФИ, ФИЗТЕХ…
Из личного опыта: студенты факультета бизнес информатики ВШЭ существенно “проще”, чем студенты МГУ. А в МАИ вообще бардак…
Алексей С.
Список ВУЗов с специальностью программная инженерия я смотрел здесь http://vuz.edunetwork.ru/
http://www.cs.msu.ru/studies/study_plans/uplan_08_13_asvk_sp_al.pdf – неужели не нравится?:) Это правда только с 3 по 5 курс.
А Кнут у нас был в 1 семестре.
Спасибо за комментарии. Обязательно вернусь к этой теме
Думаю, лучше ВМК МГУ, который я когда-то закончил, нет – несмотря на явную деградацию и вуза и факультета за последние годы – студенческий театр, где все поют и танцуют, развился на ВМК не в пример больше, чем ИТ-проекты. Конкретные предметы не важны, важен фундаментальный подход к ИТ, который там все еще преподается. А любых конкретных предметов, о диалектов JAVA до реализаций фракталов, можно набрать на спец. и доп.курсах.
+1
Мы поступили в ГУ-ВШЭ на отделение программной инженерии факультета бизнес-информатики