Программный инженер кто это и чем занимается
Специальность «Программная инженерия» (бакалавриат)
Степень: Академический бакалавр
Наиболее распространенные экзамены при поступлении:
Содержание
Современный мир настолько компьютеризован, что практически невозможно найти отрасль, куда бы не пришла информационно-вычислительная техника. Без специальных программ любой компьютер остается только грудой металла. И одной из самых востребованных специальностей является 09.03.04 «Программная инженерия».
Это очень серьезная отрасль, которая требует вовлечения команды профессионалов. В их компетенции построение программных систем. Специалист направления должен не просто обладать солидным багажом знаний и практическим опытом, но и постоянно совершенствоваться, углубляясь в тематику и знакомясь с новыми разработками и достижениями компьютерной техники.
Условия поступления
Направление предполагает точное знание математической науки, информатики и сопутствующих дисциплин. Поэтому абитуриенту предстоит сдать ЕГЭ по следующим предметам:
Будущая профессия
Молодой специалист с дипломом бакалавра может решать целый комплекс задач. Он сумеет разработать конкретные программные продукты и заняться научно-исследовательской деятельностью. Это увлекательная профессия, которая включает в себя и определенную творческую составляющую. Она предполагает умение охватывать проблему в комплексе, рассматривая все пути решения сложной задачи. Ведь профессиональная реализация предполагает не только создание новых программ, но и усовершенствование старых программных систем.
Куда поступать
Освоить специальность можно в следующих учебных заведениях:
Срок обучения
Программа обучения длиться 4 года при условии выбора очной формы.
Дисциплины, входящие в курс обучения
Бакалавриат позволяет получить глубокие знания по таким дисциплинам:
Приобретаемые навыки
По завершении обучения молодой специалист будет компетентен в следующих сферах:
Перспективы трудоустройства по профессии
Специалисты направления 09.03.04 «Программная инженерия» востребованы в разных организациях, начиная от государственного сектора и заканчивая частными компаниями. Это может быть работа не только в офисе, но и за домашним ПК. Особенности профессии заключаются в том, что сотрудник не привязан к конкретному месту работы. Он может сотрудничать с фирмой, которая находится даже в другом государстве, самостоятельно составляя график работы.
Выпускник направления может работать:
Перспективная отрасль предполагает достойный уровень оплаты труда. Новичок сможет рассчитывать на минимальный оклад в 30 тысяч рублей, а при хорошем багаже знаний такие специалисты зарабатывают от 100 тысяч.
Преимущества обучения в магистратуре
Магистерская программа позволяет углубить профессиональные знания, наработать ценный практический опыт. Ведущие вузы предлагают прохождение практики в лучших российских и международных компаниях в сфере IT.
После окончания курса выпускник становится настоящим экспертом.
Программные инженеры: IT-специалисты, которые могут всё
Студенты и преподаватели о бакалавриате «Программная инженерия» факультета компьютерных наук ВШЭ
Каждый год около двухсот студентов приходят в Высшую школу экономики учиться на программных инженеров. За четыре года в бакалавриате кто-то сходит с дистанции, но те, кто добираются до финиша, становятся универсальными IT-специалистами, которые знают всю кухню создания проектов изнутри: от написания кода и дизайна до юридических тонкостей и ГОСТов. Руководитель программы Валерий Шилов и студенты Программной инженерии рассказывают о том, как устроена подготовка специалистов, которые могут все.
От программирования, до патентного права
«Когда я поступала, я не знала, что такое программная инженерия — шла на программу с самым красивым названием и с самым высоким проходным баллом в России (в 2018 проходной балл здесь был 296)», — рассказывает бывшая студентка департамента Екатерина Береснева, которая сейчас учится там же в магистратуре и сама преподает.
Студентов, которые до конца не понимают, что скрывается за внушительным названием, на первый курс приходит немало. «Родители школьников спрашивают меня: “Что такое программная инженерия? Это программирование?”. В том числе и программирование, но программный инженер занимается далеко не только им. Он занимается всеми стадиями производства продукта», — объясняет академический руководитель программы Валерий Шилов.
Тем не менее, все начинается с программирования и изучения большого количества языков. Если не хватает основных C#, Java, C++ и Python, есть факультативы, где можно брать и другие, например, Swift или Kotlin. Знания подкрепляются опытом: со второго курса начинается практика, в том числе в крупных компаниях, и стартует проектная работа. По мере изучения материала студенты берут все этапы создания проекта в свои руки: занимаются дизайном, вопросами авторского права, контролируют соблюдение ГОСТов, готовят документацию. Иногда приходится вести официальные переговоры. Например, студент четвертого курса Александр Плесовских в качестве дипломного проекта разрабатывает приложение-пропуск, используя технологию NFC. Проблема в том, что Apple крайне неохотно дает доступ к этой технологии на своих устройствах, и сейчас студент сам от лица университета убеждает представителей компании сделать для ВШЭ исключение.
Программный инженер совмещает в себе множество функций, и поэтому в учебный план включают не только математику и разработку
«Работа с требованиями заказчика, тестирование продукта, работа с документацией, экономика, принципы управления программными проектами. Студентов учат, как организовывать взаимодействие, как налаживать связи, как выстраивать отношения между разными группам и людьми в них, — по словам Валерия Шилова, программа отвечает запросам современности. — Мы стремимся к тому, чтобы у нас было больше преподавателей, работающих в индустрии».
Фольклор инженеров
Расслабиться при таком количестве разных дисциплин едва ли получится.
«На первом курсе сложно было научиться потреблять информацию в таких объемах, — рассказывает Мария Горденко, которая продолжает учиться программной инженерии в магистратуре. — Программирование я знала очень плохо, но на факультете его преподают практически с нуля, и все можно подтянуть. Для этого, правда, нужно много работать самому, а если человек трудиться не хочет, он просто не сможет продолжать обучение. У нас на курсе были и те, кто изначально умел программировать, но я не уверена, что им в этом плане повезло: пока читают базовый курс, они расслабляются, и им потом трудно снова набрать темп».
Если недостаточно серьезно отнестись к подготовке, то есть шансы попасть в список на отчисление. «Не все выдерживают нагрузки. У нас сейчас был экзамен по программированию, из ста восьмидесяти человек сто отправились на пересдачу», — уточняет Екатерина.
О том, как непросто приходится во время сессии, студенты снимали короткометражки, самодельные триллеры с кадрами лекций и эпические детективы в стиле «Ангелов и демонов» Дэна Брауна.
Это не считая коллажей и стихов о страхе перед неотвратимым — экзаменами:
MSDN, C#, Подбельский,
Бессмысленный и тусклый свет.
Настигнет всех призыв апрельский.
Все будет так. Исхода нет.
Завалишь — всё начнёшь сначала,
Пока не превратишься в тлен:
Ночь, литра кофе уже мало,
Подбел, C#, MSDN.
Что получится, если все пережить
Вакансии на должность программного инженера встречаются редко, но это вопрос терминологии. Программные инженеры могут выбрать любое направление в IT, которые им понравилось, могут заниматься менеджментом, программированием, дизайном, и тем, и другим и третьим вместе или уйти в computer science.
Наши выпускники становятся мощными руководителями проектов, которые не просто выросли из кодировщиков, а понимают все стадии развития проекта
Екатерина Береснева и Мария Горденко остались в науке. Например, Мария ищет метод решения задачи китайского почтальона. Цель задачи — пройти по всем улицам в городе по максимально короткому маршруту, чтобы не проходить по одному и тому же месту по несколько раз. Такие расчеты, например, пригодились бы снегоуборочным машинам, чтобы они не чистили уже очищенные улицы, а скорее отправлялись к нетронутым завалам. Но пока, несмотря на то, что маршрут рассчитывают компьютеры, их решение отклоняется от оптимального на 10-20 процентов.
«Мы пытаемся сократить этот разрыв, и отчасти нам это удалось», — уточнила Мария. В свободное от науки и преподавания время она работает аналитиком в Москва-Сити. Впервые работать в таком качестве она попробовала во время учебной практики в S7, и ей понравилось.
«Программный инженер — это и аналитик в том числе, — объясняет Мария. — Но, как правило, выпускники становятся программистами с разными компетенциями, что особенно хорошо для Agile-команд, где каждый должен обладать компетенциями другого».
Выпускники работают в очень разных сферах. Одни занимаются сложным программированием с тяжелой математикой, другие стали проджект-менеджерами, кто-то системным архитектором, кто-то занимается разработкой в бекенде, кто-то во фронтенде — люди, которые знают и умеют если не все, то очень многое, нужны в каждом большом проекте.
В 2018 году учебная программа получила аккредитацию ABET — самой авторитетной в мире профессиональной организации, занимающейся оценкой качества программ в области инженерных наук и компьютерных технологий. Так что, выпускники стали обладать еще большими преимуществами для международных компаний. Диплом, одобренный организацией, которая собирает лучшие образовательные программы компьютерных и инженерных технологий, — это знак качества подготовки молодого специалиста, не требующий дополнительного подтверждения.
Кто ты по професии: Разница между «Programmer», «Software Engineer» и «Computer Scientist»
Как только сегодня ни называют программистов, особенно в зарубежных СМИ. Да и у нас, в частности, при поиске работы, можно встретить абсолютно разные описания должностных обязанностей.
Меняется ли от этого суть работы? Мы в 1cloud попробовали разобраться в том, какую работу подразумевают такие специализации как «Programmer», «Software Engineer» и «Computer Scientist».
Терминология
Изучение сути вопроса логично начать с понимания терминов. Самым понятным является «Programmer», который в Оксфордском словаре определяется как человек, ответственный за написание программы. И с переводом все просто: программист – он и в Африке программист. И даже в России. Сложности начинаются дальше.
«Software Engineer» (SE) (согласно статье в webopedia) — это дипломированный профессиональный инженер, имеющий достаточно знаний и навыков для применения инженерных дисциплин при создании программного обеспечения. Главное отличие — SE занимается разработкой, руководством проектов, а программист их реализует путем написания кода. На русский название должности переводится как «инженер-программист» или просто «программист».
Теперь разберемся с тем, кто такой «Computer Scientist» (CS). Если верить словарю, то речь идет о работе в области теории вычислений и проектирования компьютеров. Разные словари дают разный перевод на русский: «учёный, работающий в области теории вычислительных машин и систем (в области ВТ, в области компьютерных наук)» или «программист».
Итого, имеем три очень разных определения в английском и три «программиста» в русском.
Как сами программисты понимают эту разницу
Западный подход довольно четко разграничивает все три должности. Но у нас часто возникает путаница, и все три понятия используются как взаимозаменяемые. Поэтому лучше обратиться к мнению самих программистов и посмотреть, как они описывают свою деятельность.
Для обеспечения полноценной разработки ПО/кода программист должен быть сконцентрирован на своей работе и обеспечить последующее использование и интеграцию программных компонентов друг с другом. Энтони Щерба (Anthony Scherba), президент и основатель студии разработки Yeti, сравнивает этот процесс с решением сложной алгебраической задачи.
Так, по мнению эксперта, в обязанности программиста входит создание, упрощение, документирование кода и написание тестов. Поскольку он занимается практической реализацией поставленных задач, программист должен разбираться в особенностях языка (языков) программирования, с которыми работает, а также в теории алгоритмов.
Необязательные компетенции: математический анализ, коммуникативные навыки и умение работать в команде — подробнее в блоге Алана Скоркина (Alan Skorkin).
Работа «Software Engineer» подразумевает комплексный подход и иногда ее можно сравнить даже с процессом создания произведения искусства, которое программист старается постоянно усовершенствовать. Так считает и Дэниел Каплан (Daniel Kaplan), опытный программист и сотрудник Pivotal Labs.
Инженер должен видеть всю картину с двух сторон: проект в соответствии с общим планом и отдельные задачи, необходимые для его осуществления. Он должен уметь находить верные комплексные решения, понимать требования клиентов, прогнозировать возможные последствия и распределять задачи по программированию (в команде).
Его работа особенно важна во время разработки новых версий или функциональных возможностей продукта или, например, когда клиент меняет свои требования. Таким образом, инженер-программист отвечает не просто за написание кода, а за весь проект.
«Computer Scientist» — математик и технический специалист в равной степени. Он обладает математическими знаниями и объясняет, как и почему работает тот или иной инструмент, решение или алгоритм. Его работа имеет большое значение для развития программирования в целом. Также CS свойственна специализация в одной или нескольких сферах — ИИ, нейронные сети, теория языков программирования, базы данных.
Представления профессионалов в принципе соотносятся со словарными статьями, что естественно: на то они и профессионалы, чтобы разбираться в своей работе. Сбой в коммуникации и подмена понятий явно происходит на каком-то другом уровне, но на каком?
Какую разницу видят учебные заведения и работодатели
Начнем опять с «программиста». Еще одно его важное отличие от всех остальных: как правило, отучившись в профильном ВУЗе, вчерашний студент становится не просто «программистом», а «инженером/бакалавром/магистром по специальности/направлению…».
Для западной образовательной системы это тоже характерно — взгляните, к примеру, на разнообразие специальностей в направлении «Software Development and Programming» Сиднейского Технологического Университета. Ни одна из них не содержит в своем названии слова «programmer» или «programming».
Нет, конечно, многие университеты предлагают курсы по программированию (даже бесплатные), но редко когда в дипломе написано просто «программист». А что хотят видеть работодатели?
Помимо знания разных языков и/или опыта работы на разных мобильных платформах/ опыта веб-программирования/ администрирования, программисту нельзя обойтись без коммуникативных навыков (примеры тут и тут). В приведенных примерах вакансий требуется навык работы в команде, предполагается общение с вендорами, сотрудничество с другими отделами компании и техническим директором. Ну и организаторские и управленческие способности будут нелишними. А в ряде случаев нужны еще и достаточно глубокие знания математики.
Требования на российском рынке отличаются не сильно и включают разработку проектов, работу в команде, понимание принципов информационной безопасности (и всё те же навыки, отмеченные в абзаце выше). Таким образом, работодатели хотят видеть в программисте универсального (и творчески мыслящего) специалиста, а не просто человека, который пишет и тестирует код на определенном языке, решая кем-то поставленную задачу. Получается, что работодатель (как на Западе, так и у нас) под «программистом» очень часто понимает то, что словари обозначают как минимум как «Software Engineer».
Образовательные программы по профилю «Software Engineering» подразумевают, подход к разработке ПО с научной и инженерной точки зрения, разработку собственных проектов, аналитическую и управленческую деятельность. Помните, в предыдущем разделе эксперты говорили, что SE должен уметь реагировать на изменяющиеся требования? На магистерской программе помимо этого объясняют, как укладываться в бюджет и сроки.
В университете Глазго учат определять технические характеристики, проектировать, создавать и верифицировать крупные программные системы. При этом список предметов включает программирование на разных языках, проектирование баз данных, изучение алгоритмов, то есть все те знания, которые необходимы и для работы «классического программиста».
Что касается точки зрения работодателей, то по их мнению в обязанности инженера-программиста входит написание кода, проверка технической реализации UI/UX, оптимизация работы приложений, разработка внутренней методологии и стандартов, контроль и управление требованиями. Кроме того, соискатель должен обладать лидерскими качествами. Технические требования не сильно отличаются от требований к «обычным» программистам: их примеры можно посмотреть тут: 1, 2 и 3.
Университетские программы по направлению «Computer Science» включают больше математических предметов, изучение теории алгоритмов, а также такие темы как машинное обучение, нейронные сети и облачные вычисления. Студенты изучают больше теории, но должны успешно применять на практике полученные математические знания, выявлять, формулировать и решать инженерные проблемы. Таким образом, у этого типа специалистов формируется наибольшая «широта взглядов» — в теории он может работать и программистом, и SE, и непосредственно по специальности.
Это не означает, что полученных знаний ему «за глаза» хватит для успешного старта карьеры в любой из областей и больше ничему учиться не придется. Например, чтобы построить успешную карьеру разработчика, такому выпускнику явно понадобится «подтянуть» практические навыки по написанию кода — но не придется изучать программирование «с нуля».
Идеальный соискатель на должность «Computer Scientist» должен обладать знаниями по теоретической информатике, теории алгоритмов, проектированию баз данных, компьютерному моделированию, при необходимости выполнять задачи аналитика и проводить исследования, знать весь процесс от проектирования до внедрения ПО… Список можно продолжать долго (подробнее читайте тут и тут).
Работодатели хотят видеть профессионала, который не ограничен применением навыков в сугубо научной сфере. Кстати, русскоязычные работодатели тоже ищут таких специалистов и предлагают свои названия профессии: ведущий алгоритмист и инженер-исследователь. На этих примерах прослеживается та самая специализация, о которой мы упоминали в прошлом разделе.
Что в итоге
Да, действительно программисты, SE и CS — специальности близкие, но не одинаковые, и готовят таких профессионалов на разных университетских специальностях. Наибольшую путаницу в трактовке терминов вносят работодатели – для них, например, разница между «программистом» и Software Engineer может быть совершенно не очевидна.
Судя по требованиям работодателей, от «просто программиста» ждут творческого подхода, универсальных знаний и soft skills, а «computer scientist» может решать важные, но при этом сугубо прикладные, узконаправленные задачи — говорить о том, что одна специальность «по умолчанию» лучше или «сильнее» другой тут не приходится.
О чем еще мы пишем в блоге 1cloud на Хабре:
Особенности профессий
Технология 3D-печати позволяет создавать уникальные изделия, которые используются в медицине и промышленности. Специалистов, которые желают освоить эту профессию, пока мало. Зато появилось множество молодых и развивающихся компаний, которые занимаются строительством с помощью 3D-технологий.
Инженеры и математики постоянно разрабатывают новые проекты, чтобы создавать разную продукцию:
Профессия оператора 3D-печати довольно сложная. Специалист должен быть не просто инженером. Ему придется разбираться в программировании, химии, биологических материалах, технологиях. Понадобится пройти обучение в техническом вузе, окончить IT-курсы и получить навыки моделирования.
На специалиста возлагается множество обязанностей. Он должен уметь самостоятельно проектировать модели, подбирать подходящие материалы, рассчитывать все риски и финансовые затраты. И только после этого можно печатать изделие и внедрять его в разные сферы: медицину, авиацию, военную промышленность. Хотя некоторую продукцию можно использовать и в быту.
Преимущества и недостатки
Обязанности специалиста зависят от места его работы. Но в любом случае он должен быть широкопрофильным профессионалом. Так как зарплата у проектировщиков высокая, к ним выдвигают серьезные требования. Хотя у профессии есть и другие преимущества:
На сегодня проектировщик 3D-печати в строительстве — это уникальная специальность. Пока она развивается, хотя уже стала актуальной. Такие специалисты в будущем смогут улучшить экологическое состояние планеты, спасти жизнь миллионам людей, сократить расход природных ресурсов.
Профессионалов в этой сфере мало, поэтому они с легкостью находят работу. Молодые развивающиеся компании предлагают специалистам высокую заработную плату и интересные должности. Если у проектировщика или оператора уже есть опыт, то он может открыть собственное дело.
А учиться можно и в России, выбрав любой технический вуз Москвы или другого города, где есть подобная специальность. Работа требует умственных нагрузок, при этом физическое состояние профессионала играет незначительную роль.
Но есть и определенные недостатки:
Сидячая работа отрицательно сказывается на состоянии здоровья — начинаются проблемы с позвоночником, зрением, суставами ног. При этом день может быть ненормированным. С маленькими проектами удается разобраться за несколько часов. Но крупные планы требуют больше времени, иногда специалистам приходится задерживаться в офисе до глубокой ночи.
В маленьких городах, селах и поселках найти работу будет сложно. Вакансии встречаются только в крупных населенных пунктах. Работодатели предпочитают нанимать опытных специалистов, ведь даже малейшая ошибка может привести к серьезным финансовым потерям, а если компания связана с медициной, то и к гибели людей. При открытии собственного дела потребуется капитал: 3D-принтеры и другое оборудование стоят дорого.
Требования работодателей
Практически у всех работодателей одинаковые ожидания от специалистов. Они должны обладать не только профессиональными навыками, но и некоторыми личными качествами. Основные требования:
Что касается профессионального опыта, то необходимы знания технических требований в графике и актуальных тенденций в 3D-дизайне. Пригодится умение работать в редакторах 3dMax, Cinema 4D, Modo, Blender, LightWave. Специалист должен легко находить общий язык с заказчиками и техническим персоналом, разбираться в проектировании и моделировании. Приветствуется знание одного или нескольких иностранных языков.
Проектировщик может работать в крупной компании или напрямую с заказчиками. В первом случае ему потребуется умение сотрудничать и выполнять требования начальства. А во втором важно научиться разбираться в желаниях клиентов, помогать им определиться с проектами и предлагать уже готовые варианты.
Нюансы обучения
В России только зарождается такая специальность — «Аддитивные технологии». Что это такое, понятно не каждому. На самом деле выпускник технического вуза может найти престижную и высокооплачиваемую работу.
Обучаться можно в колледжах, училищах, техникумах или университетах. Профильная программа встречается редко, чаще приходится осваивать смежную профессию в сфере строительства, архитектуры, физики, робототехники, визуализации или машиностроения.
Получить образование можно в нескольких учреждениях РФ:
Есть и другие вузы, техникумы, где открылись подходящие факультеты. Можно выбрать один из вариантов: «Лазерные аддитивные технологии», «Цифровое производство», «Технологии машиностроения».
Будущий специалист должен получить качественное образование, ведь ему необходимо хорошо разбираться в математике, физике, программировании и знать иностранные языки. Для поступления нужно будет хорошо сдать ЕГЭ по этим дисциплинам.
Но диплома о высшем образовании мало. Многие компании создают собственные курсы для специалистов, чтобы повысить их квалификацию. Хотя занятия можно пройти и самостоятельно, необходимо получить теоретические и практические знания в области моделирования, рисования, дизайна, 3D-печати.
Многие выпускники сразу после вуза идут работать помощниками инженеров, где и набираются опыта. А затем они ищут более престижную должность в других компаниях или открывают свой бизнес.
Обязанности специалиста
Обязанностей у проектировщика немало. Сначала он подбирает необходимые элементы и материалы для работы, следит за исправностью оборудования. Трехмерное проектирование находится под его контролем. Нельзя допускать ошибок, так как они могут испортить результат печати.
Основные обязанности:
Специалист не только строит 3D-модели, но и следит за строительством реальных объектов на их основе. Он строго контролирует все этапы трехмерного проектирования, чтобы никто из команды не допустил ошибок.
Вместе с дизайнерами специалист применяет в строительстве программы фотореалистичного рендеринга и анимации. После завершения проектов он тщательно анализирует результаты, проверяет готовые модели. Они должны соответствовать изначальному макету и планам заказчика.
Карьерный рост
Специалисты по аддитивным технологиям могут устроиться в строительные, медицинские компании или фирмы, которые занимаются производством товаров массового потребления. Профессия позволяет работать в архитектурных бюро, дизайнерских агентствах, на промышленных заводах.
Если есть желание открыть собственное дело, то можно заняться созданием одежды, оформлением интерьеров жилых и офисных помещений, разработкой моделей зданий. В ближайшие годы станут востребованными нанолаборатории, где будут изготавливаться искусственные органы человеческого тела.
Найти подходящую работу в крупном городе не составит труда. Достаточно получить должное образование, окончить курсы для опыта и проявить свои знания. Но сразу получить высокую зарплату не получится. Начинать придется с низов — с должности стажера в отделе 3D-дизайна.
Уже через несколько месяцев можно подняться до проектировщика, а спустя годы стать менеджером в отделе строительства. Более высокую зарплату получают руководители команд. Должность управляющего отделом также считается престижной. Самый большой доход у директоров строительных, дизайнерских и медицинских компаний. Подняться до этой должности может и обычный 3D-проектировщик.
Стажеры начинают работать под контролем опытных специалистов. Они продолжают обучаться своей профессии, приобретают новые знания и навыки. За своевременное выполнение обязанностей, инициативность и творческие идеи они получают повышение. А через несколько лет работы и сами начинают обучать стажеров.
Минимальная зарплата проектировщиков составляет 25 000 рублей даже в небольших поселках. Это высокооплачиваемая профессия, но она требует много знаний и опыта. В Москве и других крупных городах доход может достигать 100 000 р., столько могут получать руководители отделов по 3D-дизайну и строительству.
Программная инженерия и аддитивные технологии — новые, но актуальные и востребованные специальности. Выпускники таких факультетов легко найдут престижную и интересную работу с достойной оплатой. А полученные навыки и творческое мышление можно использовать для открытия собственного бизнеса.