Специальность «программная инженерия» (бакалавриат)
Содержание:
- Введение: работа в сфере программного обеспечения
- дальнейшее чтение
- Design patterns
- Что получится, если все пережить
- Преимущества и недостатки профессии
- Образование и карьера
- Самые распространенные мифы
- Обязанности программного инженера
- Требования работодателей
- Образование
- Преимущества и недостатки
- Computer science
- Практики
- Кто такой Software Engineer in Test
- Обязанности специалиста
- Заключение
Введение: работа в сфере программного обеспечения
Перед тем как мы перейдём к отличиям, нам нужно затронуть ещё одну важную тему. Вы часто можете услышать, что работу в сфере ИТ “называют работой мечты” – однако многие ограничиваются лишь упоминанием заработной платы. Поэтому, исключая этот аспект, почему вас должен интересовать программный инженер или разработчик программного обеспечения в целом?
Для начала, давайте поговорим о карьерных перспективах. На самом деле становится очевидно, что развитие технологий в сфере ИТ никогда не стоит на месте – с течением времени индустрия всё больше разрастается. Естественно, с таким ростом, увеличивается и спрос на профессионалов в различных сферах этой индустрии. Именно по этой причине многие выбирают работу связанную со сферой ИТ, так как они уверены в её будущем – что бы ни случилось, вы, скорее всего, сможете без труда найти подходящую для себя работу. Это относится не только к программным инженерам или разработчикам, но и другим специализациями. Веб-разработка и программирование уже доказали свою стабильность и прибыльность по всему миру.
Мы затронем тему заработной платы чуть позже в нашем руководстве, но на данный момент вам нужно понимать, что зарплата специалиста в сфере ИТ является самым привлекательным фактором. И у этого есть свои причины – если вы ранее интересовались цифрами, касательно зарплат программистов, то понимаете о чём идёт речь. Конечно, сам процесс становления специалистом в этой сфере довольно трудный и времязатратный – вам будет необходимо провести уйму времени за обучением и практикой. Но, результаты ваши усилий явно будут того стоить.
Наконец, закончив с этой темой, мы можем перейти к основной части нашего руководства и узнать, чем отличается программный инженер и разработчик программного обеспечения. Как было сказано ранее, начнём мы с рассмотрения каждой из профессий по отдельности. Для начала давайте узнаем про разработчика программного обеспечения.
дальнейшее чтение
- Руководство по сводам знаний по программной инженерии (SWEBOK Guide): Версия 3.0 . Пьер Бурк, Ричард Э. Фэрли (ред.). Компьютерное общество IEEE. 2014. ISBN. 978-0-7695-5166-1.
- Прессман, Роджер S (2009). Программная инженерия: подход практикующего (7-е изд.). Бостон, Массачусетс: Макгроу-Хилл. ISBN 978-0-07-337597-7.
- Брюгге, Бернд ; Дютуа, Аллен (2009). (3-е изд.). Прентис Холл. ISBN 978-0-13-606125-0.
- Ошана, Роберт (21.06.2019). Программная инженерия для встроенных систем: методы, практические приемы и приложения (второе изд.). Кидлингтон, Оксфорд, Великобритания. ISBN 978-0-12-809433-4.
Design patterns
Шаблоны проектирования являются более высоким уровнем абстракции после структур данных и алгоритмов и представляют собой устоявшиеся подходы к решению общих проблем проектирования системы. Основной плюс знания шаблонов проектирования — возможность общаться с коллегами на одном языке в разрезе подходов к решению той или иной проблемы проектирования. Однако следует понимать, что использование шаблона в коде ради шаблона является worst practice. Здесь необходимо знать:
-
GoF patterns (singleton, prototype, …)
-
J2EE patterns (intercepting filter, context object, …)
-
Architectural pattens (layed pattern, client-server pattern, …)
Что получится, если все пережить
Екатерина Береснева и Мария Горденко остались в науке. Например, Мария ищет метод решения задачи китайского почтальона. Цель задачи — пройти по всем улицам в городе по максимально короткому маршруту, чтобы не проходить по одному и тому же месту по несколько раз. Такие расчеты, например, пригодились бы снегоуборочным машинам, чтобы они не чистили уже очищенные улицы, а скорее отправлялись к нетронутым завалам. Но пока, несмотря на то, что маршрут рассчитывают компьютеры, их решение отклоняется от оптимального на 10-20 процентов.
«Программный инженер — это и аналитик в том числе, — объясняет Мария. — Но, как правило, выпускники становятся программистами с разными компетенциями, что особенно хорошо для Agile-команд, где каждый должен обладать компетенциями другого».
Выпускники работают в очень разных сферах. Одни занимаются сложным программированием с тяжелой математикой, другие стали проджект-менеджерами, кто-то системным архитектором, кто-то занимается разработкой в бекенде, кто-то во фронтенде — люди, которые знают и умеют если не все, то очень многое, нужны в каждом большом проекте.
В 2018 году учебная программа получила аккредитацию ABET — самой авторитетной в мире профессиональной организации, занимающейся оценкой качества программ в области инженерных наук и компьютерных технологий. Так что, выпускники стали обладать еще большими преимуществами для международных компаний. Диплом, одобренный организацией, которая собирает лучшие образовательные программы компьютерных и инженерных технологий, — это знак качества подготовки молодого специалиста, не требующий дополнительного подтверждения.
«Хотя я осталась преподавать, меня пытаются заманить в коммерческие проекты, — признается Екатерина. — И не на начальную позицию Junior, а сразу на Middle, а это сразу зарплата около двухсот тысяч рублей в месяц. После выпуска можно идти куда угодно. Можно даже на третьем курсе прийти в компанию на Junior-позицию, и тебя возьмут. И не потому, что у тебя корочка ВШЭ, а потому что к третьему курсу ты уже знаешь, как все работает, и умеешь работать сам. Главное — получить эти знания и не отлынивать от процесса».
Преимущества и недостатки профессии
Как и любая другая профессия, множество недостатков и преимуществ содержит в себе и программная инженерия. Что это за профессия? Открытие системы, которая получила соответствующее наименование, произошло совсем недавно. И все же, основные плюсы и минусы рассматриваемой специальности очень четко можно проследить уже сейчас. О том, чего же все-таки больше — преимуществ или недостатков, будет рассказано далее.
Стоит начать с преимуществ профессии. К ним относятся:
- Хорошая заработная плата. Конечно же, все зависит от предприятия, региона, и даже государства. Например, в европейских странах качественный специалист в сфере программной инженерии получает около 10 тыс. $, в России — от 25 тыс. до 60 тыс. рублей.
- Высокая востребованность. Как минимум, на протяжении еще пары десятков лет сфера программной инженерии останется очень востребованной. Выпускники ВУЗов смогут с легкостью найти себе рабочее место.
- Творческая составляющая в профессии. Этот пункт для некоторых людей, наверное, самый важный. Ведь действительно: что может быть лучше работы, в которой можно проявить себя с самой положительной стороны?
Однако есть у профессии и недостатки. Пускай их совсем немного, многие работники все-таки ощущают их влияние на рабочий процесс. Сюда относятся:
- Высокая ответственность. Все поставленные начальством задачи необходимо решать качественно и быстро.
- Большая загруженность. Зачастую специалисты действительно могут не успевать ведь работы оказывается слишком много.
Таким образом, программная инженерия — это престижная, высокооплачиваемая, и, самое важное, очень интересная работа
Образование и карьера
Профессия инженера-программиста считается одной из высокооплачиваемых и престижных. Специалисты, достигшие высокого уровня знаний в области современной вычислительной техники и ПО, пользуются большим спросом как в нашей стране, так и за рубежом. Однако на рынке труда существует огромная конкуренция, и в том числе среди людей этой профессии, поэтому, чтобы начать достойно зарабатывать, необходимо потратить много времени на обучение, а впоследствии и на совершенствование полученных знаний и навыков.
Чтобы стать программистом, можно окончить соответствующие курсы профессиональной подготовки. Однако случаи, когда работодатель берет на работу инженера-программиста, имеющего за плечами одни только курсы, все же достаточно редки. Обучение на таких курсах проходит в течение одного-трех месяцев; для того, чтобы быть зачисленным в группу обучающихся, необходимо уже иметь одно высшее либо среднее специальное образование. Существуют и дистанционные курсы, по окончании которых также выдается соответствующий диплом, но уровень подготовки таких специалистов остается довольно низким.
Гораздо больше шансов получить хорошую работу по специальности «инженер-программист» имеют те, кто окончил колледж и получил среднее специальное образование. На самом деле, колледж является начальной ступенью для овладения этой профессией. За время учебы молодой человек получает достаточный набор знаний по различным математическим дисциплинам.
И все же чтобы получить квалификацию инженера-программиста, необходимо иметь высшее образование, поскольку обычно к специалисту данной профессии предъявляют весьма строгие требования. Это обусловлено серьезностью решаемых задач, связанных с IT-технологиями, и высокой степенью ответственности за создаваемые информационные продукты.
Для того чтобы получить специальность программиста в России, необходимо закончить высшее учебное заведение по специальностям «программная инженерия», «информационная безопасность» или подобным. Сделать это возможно в любом физико-математическом или техническом вузе. Здесь студенты получают знания в следующих областях:
- математика и инженерия;
- информатика, информационные технологии и средства разработки;
- разработка ПО;
- моделирование и его спецификации;
- программные проекты;
- аттестация и верификация ПО;
- и в других профессиональных дисциплинах.
Таким образом, чем больше навыков и знаний имеет специалист в области IT-технологий, тем больших профессиональных высот сможет он достичь.
Самые распространенные мифы
Как уже было сказано, рассматриваемая профессия считается новой, так как появилась она совсем недавно. И именно из-за этого данная специальность обросла большим количеством мифов и стереотипов. Дабы не оказаться введенным в заблуждение, стоит разобрать основные стереотипы, которые навлекает на себя программная инженерия.
Что это за профессия? Кем работать? Пожалуй, это основные вопросы, которыми задаются люди, желающие правильно выбрать свою будущую работу. Но, как ни странно, большинство людей при выборе профессии руководствуются еще и чем-то более глобальным. Они желают знать, принесет ли их будущий труд хоть какую-то пользу обществу. И именно здесь рождается еще один стереотип о программной инженерии: якобы, большинство разрабатываемых программ будут совершенно бесполезны, и не помогут преодолеть кризис в отрасли разработки программной продукции. Но и не стоит утверждать, что рассматриваемая профессия будет настоящей панацеей. Однако поэтапный выход из кризиса будет обеспечен совершенно точно.
Следующий миф о профессии гласит, что учебные часы по программной инженерии для обучающихся на младших курсах слишком малы, и, можно сказать, бесполезны. Данный миф связан с некоторыми компаниями, безосновательно сделавшими подобный вывод. Однако множество исследований, представленных, в том числе, и самими университетами, показывают, что количество учебных часов является оптимальным, и все необходимые знания ученикам будут даны.
Обязанности программного инженера
Как и любой другой работник, программный инженер имеет множество функций и обязанностей.
Можно выделить лишь самые основные, наиболее часто задействованные во время рабочего процесса функции.
- Работы по проектированию программного обеспечения. Сюда относится сбор определенных данных и их анализ.
- Разработка определенных алгоритмов и приемов, благодаря которым можно решать разного рода задачи.
- Работа с рядом проектных решений при концептуальном программировании. В большинстве случаев, это проведение технического и экономического обоснования.
- Разработка программного обеспечения при помощи различных алгоритмических языков.
- Реализация распределенных информационных систем при помощи сервисов Веб и интернет-технологий.
- Проверка реализуемых проектов на соответствие заданным нормам, стандартам и установкам.
- Разработка документации — рабочей и программной.
- Работы по обслуживанию аппаратно-программных средств, а также инсталляция, проверка, настройка и обслуживание различных программ.
Таким образом, довольно большое количество различных сфер деятельности включает в себя программная инженерия.
Что это за профессия, где на одного работника ложится столько функций? Многих людей мучает именно этот вопрос, а также проблема трудоустройства. Об этом и пойдет речь далее.
Требования работодателей
Практически у всех работодателей одинаковые ожидания от специалистов. Они должны обладать не только профессиональными навыками, но и некоторыми личными качествами. Основные требования:
- творческое мышление;
- хорошее воображение;
- художественный вкус;
- ответственность и самостоятельность;
- коммуникабельность и умение работать в команде;
- ориентированность на результат.
Что касается профессионального опыта, то необходимы знания технических требований в графике и актуальных тенденций в 3D-дизайне. Пригодится умение работать в редакторах 3dMax, Cinema 4D, Modo, Blender, LightWave. Специалист должен легко находить общий язык с заказчиками и техническим персоналом, разбираться в проектировании и моделировании. Приветствуется знание одного или нескольких иностранных языков.
Проектировщик может работать в крупной компании или напрямую с заказчиками. В первом случае ему потребуется умение сотрудничать и выполнять требования начальства
А во втором важно научиться разбираться в желаниях клиентов, помогать им определиться с проектами и предлагать уже готовые варианты.
Образование
Знание компьютерного программирования — необходимое условие для того, чтобы стать инженером-программистом. В 2004 году компьютерное сообщество IEEE выпустило SWEBOK , который был опубликован как Технический отчет ISO / IEC 1979: 2005, в котором описывается совокупность знаний, которые они рекомендуют освоить дипломированному инженеру-программисту с четырехлетним опытом работы. Многие инженеры-программисты начинают свою профессию, получив высшее образование или обучаясь в профессионально-техническом училище. Одна стандартная международная учебная программа для получения степени бакалавра программной инженерии была определена Объединенной целевой группой по компьютерным программам компьютерного общества IEEE и Ассоциации вычислительной техники и обновлена в 2014 году. В ряде университетов есть программы на получение степени в области программной инженерии; по состоянию на 2010 год в Соединенных Штатах насчитывалось 244 программы бакалавриата по программной инженерии в кампусе , 70 онлайн-программ, 230 программ уровня магистра, 41 программа уровня докторантуры и 69 программ уровня сертификата.
Помимо университетского образования, многие компании спонсируют стажировки для студентов, желающих продолжить карьеру в области информационных технологий. Эти стажировки могут познакомить студентов с интересными реальными задачами, с которыми типичные инженеры-программисты сталкиваются каждый день. Подобный опыт можно получить во время военной службы в области разработки программного обеспечения.
Программы обучения программной инженерии
Половина всех практикующих сегодня имеет ученые степени в области компьютерных наук , информационных систем или информационных технологий . Небольшое, но постоянно растущее число практикующих специалистов имеют ученые степени в области разработки программного обеспечения. В 1987 году кафедра вычислительной техники в Имперском колледже Лондона представила первые три года разработки программного обеспечения степень бакалавра в Великобритании и мире; в следующем году Университет Шеффилда учредил аналогичную программу. В 1996 году Рочестерский технологический институт установил степень программы первого по разработке программного обеспечения бакалавра в Соединенных Штатах, однако, она не не получила ABET аккредитацию до 2003 года, в то же время , как Rice University , Университета Кларксона , Милуоки школа инженерии и Университета штата Миссисипи получил их. В 1997 году технологический колледж PSG в Коимбаторе, Индия, первым начал пятилетнюю интегрированную степень магистра наук в области разработки программного обеспечения.
С тех пор во многих университетах были учреждены степени бакалавра программной инженерии. Стандартная международная программа обучения программной инженерии SE2004 была определена руководящим комитетом в период с 2001 по 2004 год при финансовой поддержке Ассоциации вычислительной техники и IEEE Computer Society . По состоянию на 2004 год в США около 50 университетов предлагали степени в области разработки программного обеспечения, в которых преподаются как компьютерные науки, так и инженерные принципы и методы. Первая степень магистра программной инженерии была учреждена в Сиэтлском университете в 1979 году. С тех пор степени магистра программной инженерии стали доступны во многих других университетах. Точно так же в Канаде Совет по аккредитации инженеров Канады (CEAB) Канадского совета профессиональных инженеров признал несколько программ инженерии программного обеспечения.
В 1998 году Высшая военно-морская школа США (NPS) учредила первую в мире докторскую программу по программной инженерии. Кроме того, появилось множество онлайн-ученых степеней в области программной инженерии, таких как степень магистра наук в области программной инженерии (MSE), предлагаемая на факультете компьютерных наук и инженерии Калифорнийского государственного университета в Фуллертоне . Стив МакКоннелл считает, что, поскольку большинство университетов преподают информатику, а не разработку программного обеспечения, настоящих инженеров-программистов не хватает. IEEE поручил университету ETS (École de technologie supérieure) и UQAM (Université du Québec à Montréal) разработать свод знаний по программной инженерии ( SWEBOK ), который стал стандартом ISO, описывающим совокупность знаний, охватываемых инженером-программистом.
Преимущества и недостатки
Обязанности специалиста зависят от места его работы. Но в любом случае он должен быть широкопрофильным профессионалом. Так как зарплата у проектировщиков высокая, к ним выдвигают серьезные требования. Хотя у профессии есть и другие преимущества:
- высокая востребованность;
- всегда есть вакансии;
- возможность открыть собственный бизнес;
- получить образование можно в техническом вузе;
- нет физических нагрузок.
На сегодня проектировщик 3D-печати в строительстве — это уникальная специальность. Пока она развивается, хотя уже стала актуальной. Такие специалисты в будущем смогут улучшить экологическое состояние планеты, спасти жизнь миллионам людей, сократить расход природных ресурсов.
Профессионалов в этой сфере мало, поэтому они с легкостью находят работу. Молодые развивающиеся компании предлагают специалистам высокую заработную плату и интересные должности. Если у проектировщика или оператора уже есть опыт, то он может открыть собственное дело.
Но есть и определенные недостатки:
- ненормированный рабочий день;
- отсутствие физической активности;
- трудности с поиском работы в поселках и маленьких городах;
- большие финансовые вложения в собственный бизнес.
Сидячая работа отрицательно сказывается на состоянии здоровья — начинаются проблемы с позвоночником, зрением, суставами ног. При этом день может быть ненормированным. С маленькими проектами удается разобраться за несколько часов. Но крупные планы требуют больше времени, иногда специалистам приходится задерживаться в офисе до глубокой ночи.
В маленьких городах, селах и поселках найти работу будет сложно. Вакансии встречаются только в крупных населенных пунктах. Работодатели предпочитают нанимать опытных специалистов, ведь даже малейшая ошибка может привести к серьезным финансовым потерям, а если компания связана с медициной, то и к гибели людей. При открытии собственного дела потребуется капитал: 3D-принтеры и другое оборудование стоят дорого.
Computer science
Информатика является основой всех знаний, которые нужны любому человеку, который занимается IT, независимо от роли. Информатика включает в себя основы многого из того, что я приведу здесь и является неким базисом и фундаментом для дальнейшего построения себя как специалиста IT. Изучая информатику, можно закрыть большинство общих вопросов, возникающих в процессе работы. Начинать свой путь я бы рекомендовал именно с этого направления. Приведу только часть тем, которые охватывает информатика:
-
математические основы
-
математическая логика
-
булева логика
-
информационная безопасность
-
теория основ баз данных
-
теория языков программирования и т.д.
Практики
Вторая важная часть обучения — практики. С первого же курса студент делает какие-нибудь практически полезные задачи под руководством опытного коллеги. Например, очередное приложение для управления календарём или заметками. Или новая функциональность в существующем приложении. Или изучает сложность вычислимости какого-нибудь семейства формул, если его занесло в направление Computer Science.
На первых курсах мы не требуем новизны или практичности (всё-таки цель — дать поиграться), однако к диплому требования к качеству проектов и защиты повышаются
На последних курсах помимо вопроса «что сделано?» студентам важно рассказывать, зачем сделано и почему именно так. При этом «так хочется конкретно этой компании, в которой работает мой научный руководитель» само по себе ответом не является
А вот «там жёсткие диски умирают каждую секунду, поэтому вот такой open-source не подходит, вот эта статья чисто теоретическая, а вот у Google решение есть, но закрытое» — вполне. Защитить ненужное упражнение со второго курса в качестве диплома не выйдет — на защите (и некоторых предзащитах) сидят любопытные разработчики с ноутбуками и гуглом наготове. «Такого ещё никто не делал» — практически самое опасное, что можно произнести. Кстати, защищаем не только дипломы, но и практики, регулярно с первого курса.
Вот несколько фотографий с типичной защиты. Фотограф: Дима Дроздов.
Практики позволяют научиться работать «в долгую» с большими проектами, иногда частично написанными другими разработчиками. Не всегда можно угадать с темой проекта: скажем, попробовав низкоуровневую разработку студент может заречься заниматься ей в будущем. В этом и смысл практик: понять, что нравится, а что нет, не на работе, а в условиях со ставками поменьше. Хотя последняя практика должна перерасти в содержательный бакалаврский диплом. «Содержательный» — это когда по диплому можно как минимум написать статью на Хабр и не уйти в минуса. Или, если работа совсем хороша, опубликоваться в научном журнале, выступить на конференции или хотя бы собрать плюсов.
Кто такой Software Engineer in Test
На моей текущей работе недавно сменился босс и он регламентировал, что QA — полностью обязанность каждого сотрудника, а я для них Software Engineer in Test.
При ближайшем рассмотрении Software Engineer in Test у меня получилось, что это тоже QC Engineer с одной лишь разницей, что фокус его обязанностей в автоматизации тестирования и включает и разработку собственного фреймворка/инструмента, и написание автотестов:
-
Создание/расширение фреймворка для тестирования.
-
Разработка вспомогательных утилит для тестирования сервисов.
-
Настройка и поддержка тестового окружения.
-
Настройка автоматизированных тестов для надежного и эффективного выполнения в средах CI / CD.
-
Обеспечение оптимального покрытия автотестами на всех уровнях.
-
Автоматизация отчетности.
-
и т.п.
Обязанности второго плана по сути копируют список QC Engineer.Подробнее про Software Engineer in Test можно почитать в How Google Tests Software (есть переведенная на русский)
Обязанности специалиста
Обязанностей у проектировщика немало. Сначала он подбирает необходимые элементы и материалы для работы, следит за исправностью оборудования. Трехмерное проектирование находится под его контролем. Нельзя допускать ошибок, так как они могут испортить результат печати.
Основные обязанности:
- прием, обработка и систематизация заявок от заказчиков;
- подготовка моделей к печати — стадия моделирования и проектирования;
- запуск оборудования и обеспечение его бесперебойной работы;
- предварительная обработка результатов;
- обслуживание принтеров;
- обучение стажеров и других коллег;
- консультирование клиентов.
Специалист не только строит 3D-модели, но и следит за строительством реальных объектов на их основе. Он строго контролирует все этапы трехмерного проектирования, чтобы никто из команды не допустил ошибок.
Вместе с дизайнерами специалист применяет в строительстве программы фотореалистичного рендеринга и анимации. После завершения проектов он тщательно анализирует результаты, проверяет готовые модели. Они должны соответствовать изначальному макету и планам заказчика.
Заключение
Дочитав наше руководство до этого момента, вы могли подумать, что программный инженер лучше во многих аспектах. Однако вам не стоит забывать о личных предпочтениях. Какие бы преимущества не имела та или иная профессия, всё сводится к вашему мнению.
Как вы заметили, обе эти профессии довольно сложны в освоении – они имеют свои тонкости и их полное освещение выйдёт далеко за рамки обычного руководства.
Индустрия ИТ всегда была одним из самых лучших сфер, когда дело касается стабильного и надёжного карьерного пути. Если вы заинтересованы в постоянно развивающихся технологиях и определённые виды программистов в сфере ИТ заинтересовали вас – попробуйте пробиться в эту сферу! Никогда не знаешь, может быть это именно то, что вам нужно!
Надеемся, что это руководство было для вас полезным, и вы смогли узнать много нового и интересного.
Поделиться