Привет, Хабр!

image На кого учиться? Пойти изучать компьютерные науки или постигать навык софт-инженера? Данные вопросы являются очень актуальными в наше время.

А что же выберете вы?

Люди, которые только начинают свой путь в IT-сфере и собираются поступать в какой-то технический ВУЗ или же просто ищут обучающие программы по программированию, чаще всего, натыкаются на огромное количество направлений. Смысл заключается в том, что на каждом из этих направлений предметы похожи, особенно на 1 и 2 курсе.

Для наглядности разделим все направления на два лагеря — это Computer Science и Software Engineering. Принципиальная разница заключается в том, что первое направление более гибкое и там лучше изучают фундаментальные вещи, а второе направлено на более практические навыки создания программ для рынка. Какое бы из этих направлений вы не выбрали, в конечном итоге вы станете программистом. Скорее всего, вы пойдёте куда-нибудь работать после или во время учёбы и вот именно на какой сектор разработки вас пустят и на что сможете претендовать определит то, какое направление вы выберете.

В обоих лагерях на первых 2-4 семестрах изучают похожие предметы, такие как линейная алгебра, математический анализ, дискретная математика и дифференциальные уравнения. Всю эту математику как правило изучают в обоих лагерях, но в Computer Science добавляется ещё по одному курсу дискретной математики и дифференциальных уравнений. Также общим для всех направлений является введение в общий Computer Science, а вот здесь уже и начинаются различия. В направлении Computer Science рассказывают об архитектуре ЭВМ, теории вычисления алгоритмов, структуре данных и их анализе, о том, как работают программы и как их можно писать, пользуясь классическими конструкциями, операционных системах, компиляторах и так далее. То есть идёт охват большего фундамента. В свою очередь, в Software Engineering рассказывают о ООП дизайне, тестировании софта, основах операционных систем и так далее. Другими словами, идёт охват изучения техник, чтобы студент мог учиться пользоваться уже готовыми решениями и с помощью них решать иной спектр бизнес задач. Все это обычно изучают в первый год обучения.

Далее, уже на 2 курсе оба лагеря начинают изучать такие предметы, как архитектура ЭВМ и устройство операционных систем, но Software Engineering изучает данные предметы более поверхностно. Это связано с тем, что там готовят людей, которые будут мало связаны с данными предметами. Начиная со 2 года обучения, на Computer Science начинают больше давить на устройство микроархитектуры и ядер ОС, а на разработке ПО больше делают упор на пользовательские интерфейсы, тестирование, анализ ПО, всякие методики менеджмента и т. д. В частности, ООП изучают в обоих направлениях достаточно углублено, так как данная парадигма программирования очень популярна в наше время и о ней просто нужно знать.

На 3 курсе обучения в Computer Science посвящается изучению комбинаторики, криптографии, ИИ, основам разработки ПО, 3D- графике и теории компиляторов. А на Software Engineering изучают системную безопасность, сети и интернет, менеджмент ПО и менеджмент в общем. Но в зависимости от ВУЗа данные предметы и углубление в них могут варьироваться.

Пожалуй, главным вопросом данной статьи остаётся вопрос о том, куда же лучше пойти. Тут уже все зависит от ваших предпочтений. Если же вы хотите быть очень гибким и универсальным инженером, то вам стоит идти в Computer Science. А если хотите связать свою жизнь с разработкой ПО и быть способным создавать какие-то полезные программы для конечных пользователей, то Software Engineering именно для вас.

image

Подводя итоги, хотелось сказать, что в Computer Science вас научат решать задачи и придумывать элегантные способы решения этих задач, а в Software Engineering из вас сделают бизнес программиста, который сможет управлять проектами, людьми и создавать актуальный софт.

Комментарии (3)


  1. Sazonov
    08.11.2019 10:08
    +2

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


  1. gregor58
    08.11.2019 11:04

    Прямо как выбор между «теоретиком» и «практиком» ;)


  1. easimonenko
    08.11.2019 17:51

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


    А вот в магистратуре вполне можно сосредоточиться на каком-то определённом разделе информатики и программирования (что мы с удовольствием и сделали в своих планах).


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