Программные инженеры: it-специалисты, которые могут всё
Содержание:
- Требования к программному инженеру
- Образование
- Споры в определениях и терминологии
- От программирования, до патентного права
- Образование и карьера
- Задачи в масштабных проектах
- Кто такой программный инженер?
- Фольклор инженеров
- Практики
- Преимущества и недостатки профессии
- Образование
- Приложения и практика
- Кто такой Software Engineer in Test
- Заключение
Требования к программному инженеру
Невероятно сложной и многообразной считается программная инженерия. Что это за профессия и специальность, в которой к работникам предъявляются особые, совершенно специфические требования?
Как и любой другой работник, представитель рассматриваемой профессии обладает довольно большим спектром обязанностей и функций. Именно из-за этого к программному специалисту предъявляется ряд требований. Стоит отметить, что далеко не каждый человек этим требованиям может отвечать. Необходимо привести некоторые основные качества и черты характера, которыми должен обладать грамотный специалист.
Во-первых, это умение качественно мыслить. Речь здесь идет об абстрактном и системном видах мышления
Вряд ли стоит даже упоминать о том, насколько важно обладать таким мышлением программному инженеру. Во-вторых, это оперативность
Зачастую именно представители рассматриваемой профессии обращаются к тайм-менеджменту или другим подобным формам планирования своего времени. И не зря: зачастую специалистам приходится выполнять невероятно большое количество функций в очень сжатые сроки.
Конечно же, стоит упомянуть и о других немаловажных качествах, которые должны быть присущи программному инженеру: это внимательность, усидчивость, терпеливость стрессоустойчивость, целеустремленность и т. д.
Образование
Знание компьютерного программирования — необходимое условие для того, чтобы стать инженером-программистом. В 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, описывающим совокупность знаний, охватываемых инженером-программистом.
Споры в определениях и терминологии
Известные определения программной инженерии включают:
- «Систематическое применение научных и технологических знаний, методов и опыта для разработки, внедрения, тестирования и документирования программного обеспечения» — Бюро статистики труда — Системы и разработка программного обеспечения IEEE — Словарь
- «Применение систематического, дисциплинированного, поддающегося количественной оценке подхода к разработке, эксплуатации и обслуживанию программного обеспечения » — Стандартный глоссарий терминологии программной инженерии IEEE
- «инженерная дисциплина, которая касается всех аспектов производства программного обеспечения» — Ян Соммервилль
- «установление и использование разумных инженерных принципов с целью экономичного получения программного обеспечения, которое является надежным и эффективно работает на реальных машинах» — Фриц Бауэр
- «отрасль информатики, которая занимается проектированием, реализацией и обслуживанием сложных компьютерных программ » — Мерриам-Вебстер
- «Программная инженерия» включает в себя не только процесс написания кода, но и все инструменты и процессы, которые организация использует для создания и поддержки этого кода с течением времени. Программную инженерию можно рассматривать как «интегрированное с течением времени программирование. . ‘»- Разработка программного обеспечения в Google
Этот термин также использовался менее формально:
- как неформальный современный термин для обозначения широкого круга видов деятельности, которые ранее назывались компьютерным программированием и системным анализом ;
- как общий термин для всех аспектов практики компьютерного программирования, в отличие от теории компьютерного программирования, которая формально изучается как суб-дисциплина информатики ;
- как термин, олицетворяющий защиту особого подхода к компьютерному программированию, который призывает относиться к нему как к инженерной дисциплине, а не как к искусству или ремеслу, и выступает за кодификацию рекомендуемых практик.
Этимология слова «инженер-программист»
Маргарет Гамильтон продвигала термин «программная инженерия» во время своей работы над программой Apollo . Термин «инженерия» использовался для подтверждения того, что к работе следует относиться так же серьезно, как и к другим вкладам в развитие технологий. Гамильтон подробно описывает использование этого термина:
Пригодность термина
Отдельные комментаторы резко расходятся во мнениях относительно того, как определять программную инженерию или ее законность как инженерной дисциплины. Дэвид Парнас сказал, что программная инженерия на самом деле является формой инженерии. Стив МакКоннелл сказал, что это не так, но должно быть. Дональд Кнут сказал, что программирование — это искусство и наука. Эдсгер В. Дейкстра заявил, что термины « программная инженерия» и « инженер- программист» использовались неправильно и должны считаться вредными, особенно в Соединенных Штатах .
От программирования, до патентного права
«Когда я поступала, я не знала, что такое программная инженерия — шла на программу с самым красивым названием и с самым высоким проходным баллом в России (в 2018 проходной балл здесь был 296)», — рассказывает бывшая студентка департамента Екатерина Береснева, которая сейчас учится там же в магистратуре и сама преподает.
Студентов, которые до конца не понимают, что скрывается за внушительным названием, на первый курс приходит немало. «Родители школьников спрашивают меня: “Что такое программная инженерия? Это программирование?”. В том числе и программирование, но программный инженер занимается далеко не только им. Он занимается всеми стадиями производства продукта», — объясняет академический руководитель программы Валерий Шилов.
Тем не менее, все начинается с программирования и изучения большого количества языков. Если не хватает основных C#, Java, C++ и Python, есть факультативы, где можно брать и другие, например, Swift или Kotlin. Знания подкрепляются опытом: со второго курса начинается практика, в том числе в крупных компаниях, и стартует проектная работа. По мере изучения материала студенты берут все этапы создания проекта в свои руки: занимаются дизайном, вопросами авторского права, контролируют соблюдение ГОСТов, готовят документацию. Иногда приходится вести официальные переговоры. Например, студент четвертого курса Александр Плесовских в качестве дипломного проекта разрабатывает приложение-пропуск, используя технологию NFC. Проблема в том, что Apple крайне неохотно дает доступ к этой технологии на своих устройствах, и сейчас студент сам от лица университета убеждает представителей компании сделать для ВШЭ исключение.
«Работа с требованиями заказчика, тестирование продукта, работа с документацией, экономика, принципы управления программными проектами. Студентов учат, как организовывать взаимодействие, как налаживать связи, как выстраивать отношения между разными группам и людьми в них, — по словам Валерия Шилова, программа отвечает запросам современности. — Мы стремимся к тому, чтобы у нас было больше преподавателей, работающих в индустрии».
Образование и карьера
Профессия инженера-программиста считается одной из высокооплачиваемых и престижных. Специалисты, достигшие высокого уровня знаний в области современной вычислительной техники и ПО, пользуются большим спросом как в нашей стране, так и за рубежом. Однако на рынке труда существует огромная конкуренция, и в том числе среди людей этой профессии, поэтому, чтобы начать достойно зарабатывать, необходимо потратить много времени на обучение, а впоследствии и на совершенствование полученных знаний и навыков.
Чтобы стать программистом, можно окончить соответствующие курсы профессиональной подготовки. Однако случаи, когда работодатель берет на работу инженера-программиста, имеющего за плечами одни только курсы, все же достаточно редки. Обучение на таких курсах проходит в течение одного-трех месяцев; для того, чтобы быть зачисленным в группу обучающихся, необходимо уже иметь одно высшее либо среднее специальное образование. Существуют и дистанционные курсы, по окончании которых также выдается соответствующий диплом, но уровень подготовки таких специалистов остается довольно низким.
Гораздо больше шансов получить хорошую работу по специальности «инженер-программист» имеют те, кто окончил колледж и получил среднее специальное образование. На самом деле, колледж является начальной ступенью для овладения этой профессией. За время учебы молодой человек получает достаточный набор знаний по различным математическим дисциплинам.
И все же чтобы получить квалификацию инженера-программиста, необходимо иметь высшее образование, поскольку обычно к специалисту данной профессии предъявляют весьма строгие требования. Это обусловлено серьезностью решаемых задач, связанных с IT-технологиями, и высокой степенью ответственности за создаваемые информационные продукты.
Для того чтобы получить специальность программиста в России, необходимо закончить высшее учебное заведение по специальностям «программная инженерия», «информационная безопасность» или подобным. Сделать это возможно в любом физико-математическом или техническом вузе. Здесь студенты получают знания в следующих областях:
- математика и инженерия;
- информатика, информационные технологии и средства разработки;
- разработка ПО;
- моделирование и его спецификации;
- программные проекты;
- аттестация и верификация ПО;
- и в других профессиональных дисциплинах.
Таким образом, чем больше навыков и знаний имеет специалист в области IT-технологий, тем больших профессиональных высот сможет он достичь.
Задачи в масштабных проектах
Требования к программному обеспечению
Разработка требований — это выявление, анализ, спецификация и проверка требований к программному обеспечению . Требования к программному обеспечению могут быть трех разных типов. Существуют функциональные требования , нефункциональные требования и требования домена. Работа программного обеспечения должна выполняться, и следует ожидать, что пользователь сможет ее использовать. Нефункциональные требования касаются таких вопросов, как переносимость, безопасность, ремонтопригодность, надежность, масштабируемость, производительность, возможность повторного использования и гибкость. Они подразделяются на следующие типы: ограничения помех, ограничения производительности (такие как время отклика, безопасность, пространство для хранения и т. Д.), Эксплуатационные ограничения, ограничения жизненного цикла (ремонтопригодность, переносимость и т. Д.) И экономические ограничения. Когда дело доходит до определения нефункциональных требований, необходимо знать, как работает система или программное обеспечение . Требования к домену связаны с характеристикой определенной категории или домена проектов.
Разработка программного обеспечения
Проектирование программного обеспечения — это процесс определения архитектуры, компонентов, интерфейсов и других характеристик системы или компонента. Это также называется программной архитектурой . Дизайн программного обеспечения делится на три различных уровня дизайна . Три уровня — это дизайн интерфейса , архитектурный дизайн и детальный дизайн . Дизайн интерфейса — это взаимодействие между системой и ее средой. Это происходит на высоком уровне абстракции вместе с внутренней работой системы. Архитектурный дизайн имеет отношение к основным компонентам системы и их обязанностям, свойствам, интерфейсам, а также их отношениям и взаимодействиям, которые происходят между ними. Детальный проект — это внутренние элементы всех основных компонентов системы, их свойства, взаимосвязи, обработка и, как правило, их алгоритмы и структуры данных .
Разработка программного обеспечения
Разработка программного обеспечения , основной вид деятельности по созданию программного обеспечения , представляет собой сочетание программирования , проверки, тестирования программного обеспечения и отладки . Процесс разработки программного обеспечения является определение, реализация, оценка, измерение, управление, изменение и совершенствование самого процесса жизненного цикла программного обеспечения. Он активно использует управление конфигурацией программного обеспечения, которое заключается в систематическом контроле изменений в конфигурации и поддержании целостности и отслеживаемости конфигурации и кода на протяжении всего жизненного цикла системы. В современных процессах используется управление версиями программного обеспечения .
Тестирование программного обеспечения
Тестирование программного обеспечения — это эмпирическое техническое исследование, проводимое для предоставления заинтересованным сторонам информации о качестве тестируемого продукта или услуги с использованием различных подходов, таких как модульное тестирование и интеграционное тестирование . Это один из аспектов качества программного обеспечения .
Сопровождение программного обеспечения
Сопровождение программного обеспечения относится к действиям, необходимым для оказания экономичной поддержки после поставки программного продукта. Сопровождение программного обеспечения — это модификация и обновление программных приложений после распространения для исправления ошибок и повышения его производительности. Программное обеспечение имеет много общего с реальным миром, и когда реальный мир меняется, требуется обслуживание программного обеспечения. Обслуживание программного обеспечения включает в себя: исправление ошибок , оптимизацию, удаление неиспользуемых и отброшенных функций и улучшение уже существующих функций. Обычно на техническое обслуживание уходит от 40% до 80% стоимости проекта, поэтому сосредоточение внимания на техническом обслуживании снижает затраты.
Кто такой программный инженер?
Весьма востребованной на сегодняшний день считается сфера, именующаяся «программная инженерия». Что это за профессия? В чем ее особенности? Ответить на эти вопросы сможет далеко не каждый
А между тем, рассматриваемая специальность является невероятно важной и престижной
Как можно вкратце охарактеризовать работу программного инженера? Обслуживание компьютеров — вот основная суть профессии. Однако в большинстве случаев специалисты занимаются созданием и вводом в эксплуатацию различной программной продукции. Профессиональный работник обязан грамотно планировать и контролировать все этапы своего рабочего процесса. Как правило, трудовая деятельность программного инженера заключается в согласовании с заказчиком всех основных моментов и этапов. Приступая к работе, специалист должен четко следовать установленным инструкциям.
Стоит указать, что рассматриваемая работа невероятно сложная. Она включает в себя аналитические, программистские, проектные, управляющие и многие другие аспекты. Между тем многие люди даже не имеют представления о таком явлении, как программная инженерия. «Что это за профессия, кем можно пойти работать?» — задают они вопрос, даже не подозревая, насколько эта работа престижна.
Фольклор инженеров
Расслабиться при таком количестве разных дисциплин едва ли получится.
«На первом курсе сложно было научиться потреблять информацию в таких объемах, — рассказывает Мария Горденко, которая продолжает учиться программной инженерии в магистратуре. — Программирование я знала очень плохо, но на факультете его преподают практически с нуля, и все можно подтянуть. Для этого, правда, нужно много работать самому, а если человек трудиться не хочет, он просто не сможет продолжать обучение. У нас на курсе были и те, кто изначально умел программировать, но я не уверена, что им в этом плане повезло: пока читают базовый курс, они расслабляются, и им потом трудно снова набрать темп».
Если недостаточно серьезно отнестись к подготовке, то есть шансы попасть в список на отчисление. «Не все выдерживают нагрузки. У нас сейчас был экзамен по программированию, из ста восьмидесяти человек сто отправились на пересдачу», — уточняет Екатерина.
О том, как непросто приходится во время сессии, студенты снимали короткометражки, самодельные триллеры с кадрами лекций и эпические детективы в стиле «Ангелов и демонов» Дэна Брауна.
Это не считая коллажей и стихов о страхе перед неотвратимым — экзаменами:
MSDN, C#, Подбельский,Бессмысленный и тусклый свет.Настигнет всех призыв апрельский.Все будет так. Исхода нет.
Завалишь — всё начнёшь сначала,Пока не превратишься в тлен:Ночь, литра кофе уже мало,Подбел, C#, MSDN.
Практики
Вторая важная часть обучения — практики. С первого же курса студент делает какие-нибудь практически полезные задачи под руководством опытного коллеги. Например, очередное приложение для управления календарём или заметками. Или новая функциональность в существующем приложении. Или изучает сложность вычислимости какого-нибудь семейства формул, если его занесло в направление Computer Science.
На первых курсах мы не требуем новизны или практичности (всё-таки цель — дать поиграться), однако к диплому требования к качеству проектов и защиты повышаются
На последних курсах помимо вопроса «что сделано?» студентам важно рассказывать, зачем сделано и почему именно так. При этом «так хочется конкретно этой компании, в которой работает мой научный руководитель» само по себе ответом не является
А вот «там жёсткие диски умирают каждую секунду, поэтому вот такой open-source не подходит, вот эта статья чисто теоретическая, а вот у Google решение есть, но закрытое» — вполне. Защитить ненужное упражнение со второго курса в качестве диплома не выйдет — на защите (и некоторых предзащитах) сидят любопытные разработчики с ноутбуками и гуглом наготове. «Такого ещё никто не делал» — практически самое опасное, что можно произнести. Кстати, защищаем не только дипломы, но и практики, регулярно с первого курса.
Вот несколько фотографий с типичной защиты. Фотограф: Дима Дроздов.
Практики позволяют научиться работать «в долгую» с большими проектами, иногда частично написанными другими разработчиками. Не всегда можно угадать с темой проекта: скажем, попробовав низкоуровневую разработку студент может заречься заниматься ей в будущем. В этом и смысл практик: понять, что нравится, а что нет, не на работе, а в условиях со ставками поменьше. Хотя последняя практика должна перерасти в содержательный бакалаврский диплом. «Содержательный» — это когда по диплому можно как минимум написать статью на Хабр и не уйти в минуса. Или, если работа совсем хороша, опубликоваться в научном журнале, выступить на конференции или хотя бы собрать плюсов.
Преимущества и недостатки профессии
Как и любая другая профессия, множество недостатков и преимуществ содержит в себе и программная инженерия. Что это за профессия? Открытие системы, которая получила соответствующее наименование, произошло совсем недавно. И все же, основные плюсы и минусы рассматриваемой специальности очень четко можно проследить уже сейчас. О том, чего же все-таки больше — преимуществ или недостатков, будет рассказано далее.
Стоит начать с преимуществ профессии. К ним относятся:
- Хорошая заработная плата. Конечно же, все зависит от предприятия, региона, и даже государства. Например, в европейских странах качественный специалист в сфере программной инженерии получает около 10 тыс. $, в России — от 25 тыс. до 60 тыс. рублей.
- Высокая востребованность. Как минимум, на протяжении еще пары десятков лет сфера программной инженерии останется очень востребованной. Выпускники ВУЗов смогут с легкостью найти себе рабочее место.
- Творческая составляющая в профессии. Этот пункт для некоторых людей, наверное, самый важный. Ведь действительно: что может быть лучше работы, в которой можно проявить себя с самой положительной стороны?
Однако есть у профессии и недостатки. Пускай их совсем немного, многие работники все-таки ощущают их влияние на рабочий процесс. Сюда относятся:
- Высокая ответственность. Все поставленные начальством задачи необходимо решать качественно и быстро.
- Большая загруженность. Зачастую специалисты действительно могут не успевать ведь работы оказывается слишком много.
Таким образом, программная инженерия — это престижная, высокооплачиваемая, и, самое важное, очень интересная работа
Образование
Половина всех практикующих сегодня имеют ученые степени в области компьютерных наук , информационных систем или информационных технологий . Небольшое, но постоянно растущее число практикующих специалистов имеют ученые степени в области разработки программного обеспечения. В 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, описывающим совокупность знаний, охватываемых инженером-программистом.
Другие степени
В бизнесе некоторые практикующие специалисты по программной инженерии имеют дипломы CS или Software Engineering . Что касается встроенных систем , некоторые из них имеют степень в области электротехники , электроники , информатики с акцентом на «встроенные системы» или компьютерную инженерию , поскольку встроенное программное обеспечение часто требует детального понимания аппаратного обеспечения. В области медицинского программного обеспечения практикующие врачи могут иметь степени в области медицинской информатики , общей медицины или биологии.
У некоторых практиков есть степени в области математики , естественных наук , инженерии или технологии ( STEM ). У некоторых есть философия (в частности, логика) или другие нетехнические степени. Например, Барри Бем получил ученую степень по математике. А у других нет ученых степеней.
Приложения и практика
В компьютерной инженерии есть два основных направления: оборудование и программное обеспечение.
Компьютерное оборудование
Согласно BLS , Job Outlook для инженеров по компьютерному оборудованию, ожидаемый десятилетний рост с 2019 по 2029 год для компьютерного оборудования составил примерно 2% и в общей сложности 71 100 рабочих мест. («Медленнее среднего», по их собственным словам, по сравнению с другими профессиями) «. Это уменьшение по сравнению с оценкой BLS по компьютерному оборудованию 2014–2024 гг. На 3% и в общей сложности 77 700 рабочих мест», и по сравнению с 7% для оценка BLS на 2012–2022 годы и еще ниже с 9% в оценке BLS на 2010–2020 годы ». Сегодня компьютерное оборудование в некотором роде приравнивается к электронной и компьютерной инженерии (ECE) и разделено на множество подкатегорий; наиболее значимая — встроенная Системный дизайн.
Компьютерная программная инженерия
По данным Бюро статистики труда США (BLS), «инженеры-программисты компьютерных приложений и инженеры-программисты компьютерных систем, по прогнозам, будут среди профессий, которые растут быстрее, чем в среднем». Ожидаемый десятилетний рост с 2014 года для компьютерного программного обеспечения был оценен семнадцать процентов, и в том же году было в общей сложности 1,114,000 рабочих мест. Это меньше, чем в 2012–2022 годах, по оценке BLS, составляющей 22% для разработчиков программного обеспечения. И еще ниже по сравнению с оценкой BLS с 2010 по 2020 год. Кроме того, растущие опасения по поводу кибербезопасности приводят к тому, что разработка компьютерного программного обеспечения превышает средние темпы роста во всех областях. Однако часть работ будет выполняться за рубежом. Из-за этого рост числа рабочих мест не будет таким быстрым, как в последнее десятилетие, поскольку рабочие места, которые достались бы инженерам по компьютерному программному обеспечению в Соединенных Штатах, вместо этого перешли бы к инженерам по программному обеспечению в таких странах, как Индия. Кроме того, прогноз вакансий BLS для компьютерных программистов на 2014–2024 гг. Имеет –8% (снижение, по их словам), а прогноз вакансий на 2019–29–9% (снижение) для тех, кто программирует компьютеры (т. Е. Встроенные системы). ), которые не являются разработчиками компьютерных приложений. Кроме того, количество женщин в области программного обеспечения сокращалось с годами даже быстрее, чем в других областях инженерии.
Лицензирование и практика компьютерной инженерии
Компьютерная инженерия обычно практикуется в более крупных фирмах, занимающихся разработкой продуктов, и такая практика может не подлежать лицензированию. Однако независимые консультанты, рекламирующие компьютерную технику, как и любую другую форму инженерии, могут подпадать под действие законов штата, которые ограничивают профессиональную инженерную деятельность только теми, кто получил соответствующую лицензию. Национальный совет экспертов по инженерно-геодезическим работам (NCEES) впервые предложил Принципы и практику инженерного экзамена для компьютерной инженерии в 2003 году.
Кто такой 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 (есть переведенная на русский)
Заключение
Дочитав наше руководство до этого момента, вы могли подумать, что программный инженер лучше во многих аспектах. Однако вам не стоит забывать о личных предпочтениях. Какие бы преимущества не имела та или иная профессия, всё сводится к вашему мнению.
Как вы заметили, обе эти профессии довольно сложны в освоении – они имеют свои тонкости и их полное освещение выйдёт далеко за рамки обычного руководства.
Индустрия ИТ всегда была одним из самых лучших сфер, когда дело касается стабильного и надёжного карьерного пути. Если вы заинтересованы в постоянно развивающихся технологиях и определённые виды программистов в сфере ИТ заинтересовали вас – попробуйте пробиться в эту сферу! Никогда не знаешь, может быть это именно то, что вам нужно!
Надеемся, что это руководство было для вас полезным, и вы смогли узнать много нового и интересного.
Поделиться