Чем Software Engineering отличается от Computer Science

Привет!
Программа, по которой я сейчас обучаюсь, называется MSIT-SE (Master of Science in Information Technology – Software Engineering)*. Основная идея всей программы выражается в принципе “Learn by doing” (“Учись, делая”).
Хочу рассказать, в чем разница между SE и CS и чем программа, которую я прохожу, отличается от всего остального. Без всякого сомнения этот вопрос обсуждаем, но ниже представлено мое личное мнение

Знаете, это какая-то слабая программа для Computer Science

До того, как я приехал на программу SE, во всех комментариях читал именно такое утверждение.

Человек переходит по [вот этой] ссылке и читает:
• 17-651 Models of Software Systems
• 17-652 Methods: Deciding What to Design
• 17-653 Managing Software Development
• 17-602 Introduction to Personal Software Process
• 17-654 Analysis of Software Artifacts
• 17-655 Architectures for Software Systems
• 17-677 MSIT Project I
• 17-678 MSIT Project II
И начинаются разговоры: хм, простите, но где здесь хотя бы один классический курс по алгоритмам и структурам данных? Ну или хотя бы один годный курс по ООП, или по C++, или по основам распределенных систем или может быть базы данных, где всё это?
Ну, что я могу сказать, всего этого нет. Точнее, этого нет среди указанных выше основных курсов, зато каждый семестр можно брать 1-2 электива, я вот, например, брал Distributed systems и Data structures for application programmers. Подробнее про элективы [читать тут] и [здесь]. Причина подобного отношения – изначально неверная реклама этой программы в России, а также невнятное определение того, что такое software engineering (оно у всех очень разное).
Чем Software Engineering отличается от Computer Science
Выше короткая вырезка с официального сайта. Можно увидеть, что пересечения есть, но фокус принципиально другой. Есть некоторые вещи, которым не учат на Computer Science программах. Я не знаю как иначе объяснить разницу между SE и CS, кроме как сравнить создание IT системы с чем-нибудь из реальной жизни. Например, с постройкой моста. Вот список вещей, которым не учат на CS:
• как выбрать форму моста
• как решить, где именно этот мост должен стоять
• как скоординировать это с финансовыми или правовыми вопросами
• как именно должен выглядеть мост с точки зрения заказчика
• как скоординировать 100500 рабочих, которые будут строить этот мост
• как ответить руководству (спонсорам, инвесторам, etc), на каком этапе строительства сейчас мост и когда он будет завершен
• как ДО того, как мост построен, оценить его качества: грузоподъемность, производительность
• как задокументировать построенный мост так, чтобы в будущем его можно было починить
• какие действия должны быть выполнены, кем и когда, чтобы мост не упал через 2 года
… ну, в общем, идея понятна, продолжать можно долго. С одной стороны, это менеджмент (17-653 Managing Software Development). От него никуда не денешься, потому что с людьми надо общаться, и это почти самое сложное, а еще является причиной провала большинства проектов. После чего – умение собирать требования (17-652 Methods: Deciding What to Design). Как только требования собраны, мост нужно нарисовать на бумаге (17-655 Architectures for Software Systems), по возможности используя формальные методы расчета моста (17-651 Models of Software Systems). На протяжении всего процесса желательно проверять качество собранных требований, процесса постройки, итогового результата и т.д. (17-654 Analysis of Software Artifacts)

Я считаю, что все вышеописанные курсы должны предваряться мощным бакалавриатом по Computer Science, а затем 3-5 годами работы в индустрии. Лишь после этого имеет смысл говорить о менеджменте или архитектуре.

И вот мы плавно переходим к вишенке на торте. Практикум, он же MSIT Project, это то, что склеивает всю программу воедино. Я уже писал краткий обзор нашего проекта [тут]. Следующим постом расскажу о практикуме более подробно.

По материалам студента магистратуры первого потока (2013/2014) совместной программы Университета Иннополис

*MSIT-SE (Master of Science in Information Technology) – программа магистратуры Университета Иннополис, разрабатываемая на базе одноименной программы одного из лучших ИТ-вузов мира Carnegie Mellon University (№3,QS World University Rankings by Subject 2014 — Computer Science & Information Systems), с учетом лучших практик МФТИ, ИТМО, National University of Singapoor и других партнеров в области образования. Университет Иннополис планирует осуществить набор группы магистров на своей базе для обучения в 2014/15 годах.

Автор: ilena

Источник

Оставить комментарий