• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Программная инженерия: говорит подрастающее поколение специалистов

Студенты и выпускники

Выпускники и студенты «Программной инженерии» делятся личным опытом выбора направления, рассказывают о трансформации учебного плана, легендарных курсах и связи теории с практикой.

 

— Вы выбрали «Программную инженерию», а не «Прикладную математику» или «Компьютерные науки и анализ данных». Почему?

Даниил Бураков, выпускник программы

— В 2019 году, когда я выбирал программу, на ФКН бакалавриат фактически делился на три направления: «Программная инженерия», «Прикладной анализ данных» и «Прикладная математика и информатика». «Прикладной анализ данных» я почти сразу исключил: программа была платной, а акцент на данных в экономике мне тогда был не так интересен.

Дальше я подошел к выбору максимально прагматично: сравнил учебные планы ПИ и ПМИ, посмотрел набор обязательных и элективных курсов. На ПИ меня особенно привлекло большое количество дисциплин по выбору — от нейросетевых технологий до информационной безопасности — и то, что в обязательной части было программирование на C#, с которым я уже был знаком. Еще один важный фактор: люди из моего окружения, с кем я обсуждал поступление, учились именно на ПИ ФКН. Смотря на них в 11-м классе, я понимал, что хочу попасть в эту среду. В итоге решающей стала совокупность: содержание программы, гибкость траектории и ощущение «моего» направления.

Людмила Резуник, выпускница программы

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

 

— Какая область программной инженерии сейчас, на ваш взгляд, наиболее актуальна с точки зрения прорывных исследований?

Людмила Резуник

— По моему мнению, одно из таких направлений, которое сейчас меняет представление о программной инженерии, — искусственный интеллект для разработки ПО. Инструменты для генерации кода не только ускоряют работу разработчика, но и освобождают от простых задач, позволяют сконцентрировать внимание на чем-то более сложном. Эффект от внедрения таких инструментов заметен в индустрии уже сейчас: происходит трансформация профессии в сторону решения задач более высокого уровня (в частности, бытует мнение, что junior-разработчики больше не нужны).

Даниил Бураков

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

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

 

— За время вашей учебы программа уже менялась? Чувствовали ли вы на себе смену эпох — обновление ключевых курсов, приход новых звездных преподавателей, изменение акцентов? Это было скорее болезненно или вдохновляюще?

Людмила Резуник

— На время моей учебы выпало много перемен: на первом курсе — переезд на Покровку (тогда она еще не была так населена и атмосфера была ламповой), затем полный переход в онлайн. Было печально, что из-за этого не удалось побывать на лекциях и занятиях некоторых преподавателей вживую.

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

Даниил Бураков

— Да, программа заметно менялась. Сейчас на ПИ сильнее продвигается низкоуровневая разработка: на первых курсах студенты изучают ассемблер и C. Это непросто: чем ближе к «железу» и управлению памятью, тем больше деталей и ответственности. Насколько я знаю, эти дисциплины ведут преподаватели из Института системного программирования РАН, и это выглядит логичным шагом.

Рынок действительно переполнен специалистами, которые стартуют с Python или C# — там ниже порог входа. А вот C/C++ остаются критически важными в областях, где нужна максимальная производительность и контроль над ресурсами. Плюс понимание архитектуры компьютера дает фундамент: начинаешь осознавать, что происходит «под капотом», а не просто пользоваться готовыми библиотеками. Так что изменения скорее вдохновляющие, хотя первокурсникам я бы искренне пожелал терпения и спокойствия: это тяжелый, но очень полезный фундамент.

Даниил Косталевский, студент программы

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

 

— Вы — часть 20-летней истории. Чувствуете ли вы эту связь с первыми выпусками? Есть ли какие-то истории или традиции, передающиеся от курса к курсу (про сложные курсы, выдающихся преподавателей)?

Даниил Бураков

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

Если говорить о традиционно сложных дисциплинах, для многих такими были C# и алгебра. По C# была жесткая система оценивания: экзамен состоял из практической части и теста. Программа должна была корректно работать на любых входных данных; если проверяющий находил кейс, где код падает, — это означало пересдачу. Тест писали за компьютерами без IDE: давали фрагменты кода и спрашивали результат выполнения или нюансы языка. Не набрал минимум — пересдача.

Алгебра на первом курсе тоже была серьезным испытанием: к летнему коллоквиуму требовалось выучить больше сотни определений и десятки доказательств. Многие спотыкались именно об эти две дисциплины, а мне, наоборот, они нравились: там очень хорошо чувствуется рост и системность.

Людмила Резуник

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

Даниил Косталевский

— Трудно сказать по поводу связи: наш факультет и направления не стоят на месте, поэтому информация и традиции очень и очень быстро теряют свою актуальность. Нам скорее свойственно создавать традиции на курсе и с каждым годом все сильнее и сильнее объединяться вокруг них. Возможно, какие-то отголоски этой культуры и этих традиций передаются через кураторов сквозь года.

 

— Вы уже можете сравнить себя с коллегами из других вузов. В чем, по вашему опыту, проявляется ДНК вышкинской программы?

Людмила Резуник

— Мне кажется, тут может быть замешано множество факторов. Во-первых, по моим ощущениям, в Вышке в целом учатся наиболее мотивированные студенты, и ПИ не исключение. Кроме того, программа ПИ всегда была построена таким образом, чтобы к какому-то моменту (на втором или, в худшем случае, на третьем курсе) можно было развиваться в рамках конкретной специализации (и всегда был хороший выбор специализаций). Преподаватели очень часто приходят из индустрии, что позволяет поддерживать актуальность программы и делать ее максимально полезной для реальной жизни.

Даниил Косталевский

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

 

— Как изменилось ваше понимание слов «качественный код» и «хорошая архитектура» после опыта в индустрии? Насколько академические представления об этом совпали с реальностью?

Даниил Бураков

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

Первые месяцы были болезненными. Я старался писать код так, как делал это в учебных задачах: максимально «на все случаи жизни», с попыткой предусмотреть всё сразу. В индустрии меня переучивали: качество — это не только «чтобы работало», но и чтобы было поддерживаемо, тестируемо, наблюдаемо, чтобы изменения вносились безопасно и предсказуемо.

Сейчас программа ПИ стала значительно ближе к реальности: многие практики и инструменты объясняют заранее, чтобы на первой работе не попасть в ситуацию «я вообще не понимаю, что происходит». В каком-то смысле я даже немного завидую нынешним студентам: у них есть возможность изучать современный стек системно.

Людмила Резуник

— Конкретно в моей сфере деятельности на момент работы в индустрии все полученные знания полностью совпали с реальностью. Местами были пробелы, но они касались каких-то инструментальных вещей, которые просто освоить самостоятельно. В плане теоретической базы, считаю, университет хорошо нас подготовил.

Александр Лазаренко, студент программы

— Академические представления и реальность кардинально различались. Безумно жаль, что возможность делать учебные проекты у меня была только на курсе C# и КПО. Таких предметов должно быть больше, особенно на втором курсе. Проблема в том, что без опыта все лекции про качество кода звучат абсолютно разумно. Но только когда дело переходит к практике, появляется понимание. И лучше всего это заметно в проектах, которые пишутся не неделю и не две. К слову, на практике иногда закрывают глаза на некоторые вещи ради скорости разработки или читаемости/стабильности кода.

 

— Вы сказали, что «таких предметов должно быть больше». А если бы у вас была возможность перестроить второй-третий курс, как бы вы это сделали? Каков идеальный баланс между теорией (алгоритмы, матан) и долгосрочными проектами?

Александр Лазаренко

— Матан и тервер оставить, но добавить больше практических домашних заданий, например «проанализировать базу данных». Или как-то иначе приблизить курс к практике. Удалить полностью ассемблер, сократить ОС до одного модуля, добавить курс по Docker/K8s, по промышленным стандартам безопасности (не РБПО, а про Spire, MSA, безопасные docker-контейнеры с подписями, автоматизацию сборки таких подписанных контейнеров и подобное).

 

 Когда и как состоялся ваш первый осознанный контакт с индустриальным партнером как с потенциальным коллегой? Это изменило ваши учебные цели?

Даниил Косталевский

— Общение с бизнес-заказчиком действительно на меня повлияло, потому что я кардинально сменил вектор своего развития. Я попал на аналитическую стажировку в Т-Банк и понял, что абсолютно ничего не знаю об этой отрасли. Все, что мне казалось реальным, оказалось верхушкой айсберга. И это положительно, на мой взгляд, повлияло, потому что я начал понимать, для чего учеба вообще существует (и даже самые, на первый взгляд, бесполезные курсы). Сейчас я с уверенностью могу сказать, что хотел бы поступать в магистратуру и развивать свои профессиональные навыки. Часто возвращаюсь к материалам своих прошлых учебных курсов, если чувствую пробелы в знаниях. Также я очень сильно загорелся научной деятельностью. Меня впечатляют отделы исследований в сфере машинного обучения в нашей компании, поэтому я стал уделять этой отрасли больше времени в учебных проектах.

 

— Что в программе кажется самым ценным (метод, подход или привычка), что вы заберете/забрали с собой в индустрию/академическую деятельность? А что — самым устаревшим или оторванным от реальности?

Даниил Бураков

— Самое ценное — это, как ни банально, навыки управления временем и нагрузкой. Когда задач много и дедлайны плотные, приходится учиться приоритизировать, декомпозировать, планировать и честно оценивать объем работы. Этот навык потом очень хорошо переносится и в индустрию, и в академическую деятельность.

Еще важная вещь — гибкость траектории. Хотя программная инженерия в первую очередь про архитектуру, качество и процессы разработки, программа не ограничивает: при желании можно углубляться в то, что действительно интересно и полезно именно тебе. В итоге ПИ дала мне хороший академический фундамент, практические навыки разработки и даже предпринимательскую оптику.

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

Людмила Резуник

— Положительной чертой нашей образовательной программы считаю системный подход. Все дисциплины взаимосвязаны, и постепенно формируется единая картинка. Получаемые знания не фрагментарные и не узкоспециализированные, что делает выпускников ПИ разносторонне развитыми. Мне кажется, что и в жизни, и в рабочей деятельности не стоит замыкаться внутри какой-то одной области, а нужно стараться смотреть на ситуации с разных точек зрения.

Александр Лазаренко

— Самое полезное — навык учиться и искать информацию самостоятельно. И конечно, подход «от основ», так как, не разобравшись в том, как библиотека/программа/технология работает, невозможно использовать ее на все сто процентов.

Самое устаревшее — документация и ТЗ по ГОСТ. Это оторвано от реальности. Как человек, который три года работал в сфере общественного транспорта, я ни разу в глаза не видел ни единого документа IT, оформленного по ГОСТ. Да, сама госзакупка обязана заполняться по ГОСТ, но большинство заказчиков заполняют минимальное количество информации и делают постоянно ссылку на «приложение №Х», которое представляет собой нормальное, человекочитаемое ТЗ, написанное понятным языком. Был даже случай, когда в таком документе были рисунки из Paint в разделе описания веб-интерфейса.

 

— Представьте, что вы объясняете школьнику, чем тут занимаются. Какой самый крутой проект или задачу вы приведете в пример?

Даниил Бураков

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

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

Людмила Резуник

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

24 февраля