IT-сфера: как выбрать перспективную специальность?
Из списка 25 самых перспективных профессий США по версии ресурса Glassdoor 12 относятся к сфере информационных технологий. Среди них:
«Высокие финансовые перспективы в профессии влияют на стоимость образования. На западе большинство программ высшего образования платные. Но в России в ведущих технических вузах больше половины мест на программы бакалавриата — бюджетные. При этом некоторые программы в России имеют международные аккредитации, а значит ничем не уступают по качеству. Можно сделать вывод, что у российских школьников есть возможность получить качественное образование международного уровня вне зависимости от финансовых возможностей семьи».
IT-специальности
В сфере IT множество программ обучения. В этой статье разберемся, какие базовые специальности представлены в российских технических вузах.
Условно все специальности можно разделить на три категории:
Компьютерные науки — в этой категории происходит создание или улучшение программных продуктов, а не физических устройств. Например, разработка интерфейсов, тестирование программного обеспечения, анализ данных, информационная безопасность. К этой категории относятся специальности «прикладная математика и информатика», «программная инженерия», «информационная безопасность».
Инженерные специальности — для тех, кому нравится «работать с железом» и при этом немного программировать. Эти специальности обычно объединяет то, что для поступления надо сдавать ЕГЭ по физике, а не по информатике. Например, это специальность «Инфокоммуникационные технологии и системы связи» или «Информатика и вычислительная техника».
Управление — если есть желание работать с людьми. Например, управлять командой разработки или командой, осуществляющей внедрение продукта.
Здесь и далее перед названием специальности будет указан числовой код — это код специальности по ОКСО ( Общероссийский классификатор специальностей по образованию ). По нему можно найти интересующую специальность в любом вузе России.
Компьютерные науки
В связи с этим базовые математические дисциплины занимают меньший объем в учебных планах по сравнению с предыдущей специальностью. Зато больше времени уделяется различным языкам и методам программирования.
Другая часть сотрудников занимается «Яндекс.Поиском», разрабатывает поисковые алгоритмы — например, в каком порядке информация будет ранжироваться в результатах выдачи. Перед ними каждый день стоит большое количество сложных математических задач. В случае если вам интересна математика, анализ данных, машинное обучение, искусственный интеллект, создание наукоемких программ, то вам стоит присмотреться к «Прикладной математике и информатике». Если вам ближе технологический процесс, который состоит из большого количества этапов, начиная с выявления предпочтений пользователей и заканчивая выводом продукта на рынок, то вам прямая дорога в «Программную инженерию».
2.10.03.01. Информационная безопасность — программа ориентирована на подготовку специалистов, обладающих современными методами защиты информации. Студенты этой программы изучают базовый курс математических дисциплин, общую физику, а также криптографию, защиту информации и передачу данных в качестве профильных дисциплин. В ВШЭ часть курсов по этой специальности ведется на английском языке. Не путайте с компьютерной безопасностью: она похожа по названию, но находится в инженерном блоке. Эта специальность больше про защиту информации на уровне «железа», а не на уровне программ.
Чтобы стать профессионалом в этой области, необходимо иметь широкое понимание разных разделов фундаментальной математики и представление обо всех отраслях информационных технологий, а также знать все текущие тренды. Такие специалисты ищут уязвимости в программных продуктах, которые зачастую находятся в использованных в них технологиях. Например, в JavaScript библиотеке, которую используют все, допущена уязвимость: если мы про нее знаем, то можем получить данные из всех web-приложений, которые ее используют.
Инженерные специальности
11.03.02 Инфокоммуникационные технологии и системы связи — программа, ориентированная на работу в сфере инфокоммуникационных технологий, в области технологии и разработки технических средств обработки и хранения всех видов информации, ее приема и передачи на любые расстояния. Будущим специалистам необходимо будет разбираться в работе операционных систем и в элементах программирования. В основном они работают с физическими устройствами, а не с программами.
02.09.03.01. Информатика и вычислительная техника — программа для инженеров, специализирующихся на робототехнике и проектировании систем реального времени. Кроме математических дисциплин в программу входит курс физики. Выпускники этого профиля создают программно-аппаратные комплексы, закладывая в него программные решения. OCR — программно-аппаратный комплекс (сочетание железа и софта), именно их учатся делать на этой специальности.
Управление
5.38.03.05 Бизнес-информатика. Что обычно изучают студенты: менеджмент, бизнес-аналитику, бизнес-процессы, а также интеграцию информационных систем в процесс работы. Целевой выпускник программы — сотрудник консалтинговой компании с навыками бизнес-аналитики и автоматизации бизнес-процессов, с хорошим пониманием возможностей информационных технологий и их спектра, но без прикладных навыков программирования (либо на базовом уровне).
02.09.03.03. Прикладная информатика — можно сказать, что программа тоже ориентирована на подготовку управленцев в области информационных технологий и интеграторов, но более узкоспециализированных. В чистом виде специальность «Прикладная информатика» встречается редко, гораздо чаще встречаются, например, «Прикладная информатика в экономике» или «Прикладная информатика в строительстве» — это всегда применение специализированных для этой отрасли программ и подходов автоматизации и цифровизации.
В современном мире не только университеты участвуют в образовании будущих программистов. Во многих крупных IT-компаниях есть бесплатные программы обучения и стажировок, ориентированных на студентов старших курсов. Обычно приложения о стажировках публикуют на сайтах и в социальных сетях университетов.
В пользу программирования
Новички в сфере информационных технологий окружены стереотипами и из-за этого им бывает сложно начать учиться. Ведь многие считают, что хорошими программистами становятся только очень умные и талантливые люди. На самом деле IT-специалисты — это обычные люди, которые испытывают страсть к созданию компьютерных программ, игр и приложений. Чтобы писать код не обязательно быть гением. Куда важнее иметь интерес к сфере и быть дисциплинированным. Люди не выигрывают олимпийские игры просто благодаря хорошей генетике. Их спортивные достижения — это, в первую очередь, результаты упорных тренировок. Так что и программистами не рождаются, ими становятся.
Тем более программирование само помогает приобрести особый тип мышления, благодаря которому IT-специалисты так легко справляются с математическими и логическими задачами. Они обращают внимание на детали, легко моделируют ситуации в повседневной жизни и способны оценивать объекты, полагаясь на большое количество факторов. Ученые при помощи МРТ установили, что во время работы над кодом активируются те же отделы мозга, что отвечают за естественные языки. Так что программирование положительно влияет как на мыслительные процессы, так и на память.
Не забывайте, что программирование — это не просто владение одним языком. На самом деле это целый набор навыков: работа с кодом, эффективное взаимодействие с членами команды, декомпозиция задач, оформление и ведение документации, тестирование, само кодирование на языке программирования, причем часто не на одном.
Как мы видим, любой желающий, приложив достаточно усилий, может стать «тем самым программистом, который родился гением и поэтому работает в лучшей IT-компании».
Что поможет?
Не стоит игнорировать возможности саморазвития. Тем более, сегодня всю необходимую информацию о программировании можно найти в интернете. Студенты, которые еще до поступления в вуз успели собрать десяток сайтов и приложений, в будущем будут на голову выше своих одногруппников. Онлайн-курсы, книги, форумы, тематические сайты — все это позволит собрать хорошую базу знаний и для этого даже не нужно выходить из дома.
Подбирая материалы для чтения, обращайте внимание на год выпуска издания. В сфере информационных технологий все меняется очень быстро, поэтому не стоит приобретать материалы десятилетней давности. Например, книга Роберта Мартина «Чистый код» учит грамотно писать на языке программирования.
«Искусство программирования» — фундаментальная монография известного американского математика и специалиста в области компьютерных наук Дональда Кнута, посвященная рассмотрению и анализу важнейших алгоритмов, используемых в информатике. В 1999 году книга была признана одной из двенадцати лучших физико-математических монографий столетия.
Если у вас в ходе изучения возникают вопросы, то вы всегда можете задать их более опытным пользователям. На ресурсе «Хабр» желающие публикуют собственные статьи на компьютерные темы, рассказывают, с какими трудностями столкнулись во время работы и как с ними справились. На сайте можно найти ответы практически на все вопросы начинающих специалистов.
Некоторые Youtube-каналы прорабатывают сразу несколько тем. Например, канал «Гоша Дударь», в первую очередь, о Game Development. На канале много видеоуроков по созданию игр на различных движках (Unity, Unreal Engine, Game Maker, Corona SDK), а также по играм без движков (С++, Java или Python). При этом автор охватывает и разработку сайтов, и мобильную разработку, и веб-программирование, и языки программирования. Еще у некоторых факультетов бывают свои каналы, куда они выкладывают часть лекций.
Некоторые предпочитают более развлекательные форматы обучения. Например, игры. Одна из самых известных — это JavaRush. Это многопользовательская браузерная игра, которая помогает выучить языки программирования. Курс разбит на 40 уровней. Вы можете перейти на следующий уровень, только если решили большую часть задач текущего уровня. Начиная с маленьких и легких и заканчивая большими и очень полезными. Каждый, дошедший до конца, получит 500+ часов практического опыта. Так что это хороший вариант совместить приятное с полезным.
Также можно попробовать присоединиться в профессиональному сообществу. В Москве, например, действует Московский клуб программистов. Здесь можно неформально пообщаться со специалистами, которые собираются каждые две недели, чтобы обсудить интересные им темы и поделиться знаниями.
Не стоит концентрироваться на одном направлении. Наиболее эффективно будет выбрать несколько способов, например, онлайн-курсы + книги + изучение материалов на специализированных ресурсах. Помните, что чем больше времени вы будете посвящать программированию, тем быстрее вы наберетесь знаний и опыта.
Выводы
IT-сфера очень разнообразна и требует различных навыков: веб-разработка, построение интегрированных корпоративных систем, создание нейросетей и моделей машинного обучения. Сейчас наибольших спрос рынка на фронтенд и мобильных разработчиков, растет спрос на специалистов по анализу больших данных и машинному обучению.
Для наукоемких отраслей программирования хорошая подготовка по базовым математическим дисциплинам необходима также, как навыки программирования на языке и навык постоянного самообучения.
Для того, чтобы понять, какую именно специальность выбрать, нужно проанализировать учебный план и дополнительные возможности, которые предоставляет вуз.
Самое главное, о чем стоит помнить — программист создает себя сам. Очень важно участвовать в проектах, получать практический опыт начиная с первого курса, проходить дополнительные онлайн курсы на открытых образовательных платформах, участвовать в олимпиадах по программированию и хакатонах.
Как абитуриенту выбрать
IT-специальность в вузе?
Информационные технологии пронизывают все сферы современной жизни: от бизнес-процессов и банковского дела до образования, медицины, юриспруденции. С развитием технологий появляются задачи, которые способен решить только специалист с высшим образованием в сфере IT.
В последнее десятилетие мы наблюдаем рост популярности IT-специальностей, повышение уровня подготовки абитуриентов и закономерное увеличение среднего балла ЕГЭ среди поступивших на бюджетные места. По данным НИУ ВШЭ с 2014 года средний балл ЕГЭ на программы факультета компьютерных наук вырос на шесть баллов и приблизился к 100-балльной отметке.
Баллы высоки, но и программ обучения довольно много. В настоящее время вузы предлагают абитуриентам семь направлений в области информационных технологий:
Давайте разберемся, какую из этих специальностей стоит выбрать для базового IT-образования.
IT-специальности
Прикладная математика и информатика — основная специальность для программистов в вузах. Сайт «Учеба.ру» предлагает 138 вариантов обучения по данному профилю в российских вузах.
Эти дисциплины читаются в основном на первом-втором курсах бакалавриата, с третьего курса начинается специализация и преобладающими становятся профильные предметы и дисциплины по выбору.
Программная инженерия — вторая по популярности программа. Студентов готовят к работе с программными продуктами и управлению разработкой ПО. Благодаря изучению многих языков программирования выпускники умеют читать код, разбираться в его работе и составлять техническую документацию к программам.
В учебных планах большинства вузов предметы математического цикла занимают меньший объём по сравнению с «Прикладной математикой и информатикой». При этом изучается больше языков и методов программирования. Среди предметов по выбору есть дисциплины, связанные с web-программированием, искусственным интеллектом, компьютерной графикой (НИУ ВШЭ, МГТУ им.Баумана, МАИ), а также с управлением командами и проектным менеджментом по методологии Agile (НИУ ВШЭ).
Все программы отличаются от вуза к вузу, для примера рассмотрим несколько.
НИУ ВШЭ
На факультете компьютерных наук Высшей школы экономики представлено три программы подготовки бакалавров: «Прикладная математика и информатика», «Прикладной анализ данных» (на английском языке) и «Программная инженерия». Дисциплины первого года обучения практически идентичны на всех направлениях. Начиная со второго курса возникают специальные дисциплины, а с третьего курса начинается профилизация.
На программе «Прикладная математика и информатика» возможна профилизация в одной из следующих отраслей IT:
Особенностью образовательных программ Московского физико-технического института является присутствие в учебных планах базового курса физики (от 15 до 34 зачетных единиц). С одной стороны, это создает сложности в виде дополнительных дисциплин, которые напрямую не относятся к программированию. Но с другой — наличие физики в учебной программе позволяет студентам получить подготовку в области моделирования естественных процессов.
В Физтехе отличается также система государственной итоговой аттестации: выпускники сдают два государственных экзамена и защищают ВКР.
ВМК МГУ
Факультет вычислительной математики и кибернетики Московского государственного университета ведет подготовку бакалавров по двум направлениям: «Прикладная математика и информатика» и «Фундаментальная информатика и информационные технологии».
Программа по прикладной информатике основана на собственном образовательном стандарте МГУ. Она отличается от большинства программ углубленным курсом математического анализа (27 зачетных единиц), алгебры и геометрии (12 зачетных единиц), а также дополнительным базовый курсовым по современному естествознанию в объёме 10 зачетных единиц.
Также у ВМК МГУ совместно с Mail.ru Group действует партнерская программа «Техносфера». Это бесплатная практико-ориентированная программа дополнительной подготовки студентов старших курсов бакалавриата, магистратуры и аспирантуры. Занятия проходят несколько раз в неделю прямо в университете. После успешного завершения программы студенты получают возможность начать карьеру в Mail.ru Group.
По мнению многих программистов, получивших высшее техническое образование, самыми важными были первые два курса вуза. По качеству преподавания базовых дисциплин можно порекомендовать также следующий вузы: МАИ, МИФИ, МГТУ им. Баумана, МИСИС.
Выводы
Высшее образование — фундамент успешной карьеры в сфере IT. Оно дает хорошую математическую подготовку, теоретические знания в области информатики и теории информации, что позволяет с большей уверенностью делать выводы, оценивать сложность алгоритмов и понимать, почему один алгоритм работает быстрее другого.
Базовая и самая популярная образовательная программа: «Прикладная математика и информатика». Подготовку по этой специальности можно пройти во многих вузах, но больше всего среди работодателей ценятся НИУ ВШЭ, МФТИ, МГУ, МГТУ им. Баумана и МАИ.
Самое главное, о чем стоит помнить, — программист создает себя сам. Очень важно участвовать в проектах, получать практический опыт начиная с первого курса и постоянно самообучаться.
Программная инженерия и ее отличия от информатики и других инженерий?
Что такое программный продукт и его основные характеристики? Составляющие стоимости ПО.
Программный продукт — комплекс взаимосвязанных программ для решения определенной проблемы (задачи) массового спроса, подготовленный к реализации как любой вид промышленной продукции.
Программные продукты могут создаваться как:
индивидуальная разработка под заказ;
разработка для массового распространения среди пользователей.
При индивидуальной разработке фирма-разработчик создает оригинальный программный продукт, учитывающий специфику обработки данных для конкретного заказчика.
При разработке для массового распространения фирма-разработчик, с одной стороны, должна обеспечить универсальность выполняемых функций обработки данных, с другой стороны, гибкость и настраиваемость программного продукта на условия конкретного применения. Отличительной особенностью программных продуктов должна быть их системность — функциональная полнота и законченность реализуемых функций обработки, которые применяются в совокупности.
Программный продукт разрабатывается на основе промышленной технологии выполнения проектных работ с применением современных инструментальных средств программирования. Специфика заключается в уникальности процесса разработки алгоритмов и программ, зависящего от характера обработки информации и используемых инструментальных средств. На создание программных продуктов затрачиваются значительные ресурсы — трудовые, материальные, финансовые; требуется высокая квалификация разработчиков.
Как правило, программные продукты требуют сопровождения, которое осуществляется специализированными фирмами — распространителями программ (дистрибьюторами), реже — фирмами-разработчиками. Сопровождение программ массового применения сопряжено с большими трудозатратами — исправление обнаруженных ошибок, создание новых версий программ и т.п.
Сопровождение программного продукта — поддержка работоспособности программного продукта, переход на его новые версии, внесение изменений, исправление обнаруженных ошибок и т.п.
Программные продукты в отличие от традиционных программных изделий не имеют строго регламентированного набора качественных характеристик, задаваемых при создании программ, либо эти характеристики невозможно заранее точно указать или оценить, так как одни и те же функции обработки, обеспечиваемые программным средством, могут иметь различную глубину проработки. Даже время и затраты на разработку программных продуктов не могут быть определены с большой степенью точности заранее.
Основными характеристиками программ являются:
алгоритмическая сложность (логика алгоритмов обработки информации);
состав и глубина проработки реализованных функций обработки;
полнота и системность функций обработки;
объем файлов программ;
требования к операционной системе и техническим средствам обработки со стороны
объем дисковой памяти;
размер оперативной памяти для запуска программ;
версия операционной системы;
наличие вычислительной сети и др.
Программная инженерия и ее отличия от информатики и других инженерий?
Программная инженерия — это инженерная дисциплина, которая связана со всеми аспектами производства ПО от начальных стадий создания спецификации до поддержки системы после сдачи в эксплуатацию. В этом определении есть две ключевые фразы:
Инженерная дисциплина
Все аспекты производства ПО
Инженерная дисциплина. Инженеры – это те специалисты, которые выполняют практическую работу и добиваются практических результатов. Ученый может сказать: проблема неразрешима в рамках существующих теорий и это будет научный результат, достойный опубликования и защиты диссертации.
Для решения задачи инженеры применяют теории, методы и средства, пригодные для решения данной задачи, но они применяют их выборочно и всегда пытаются найти решения, даже в тех случаях, когда теорий или методов, соответствующих данной задаче, еще не существует. В этом случае инженер ищет метод или средство для решения задачи, применяет его и несет ответственность за результат – ведь метод или средство еще не проверены. Набор таких инженерных методов или способов, теоретически возможно не обоснованных, но получивших неоднократное подтверждение на практике, играет большую практическую роль. В программной инженерии они получили название лучших практик (best practices).
Инженеры работают в условиях ограниченных ресурсов: временных, финансовых и организационных (оборудование, техника, люди). Иными словами, продукт должен быть создан в установленные сроки, в рамках выделенных средств, оборудования и людей. Хотя это в первую очередь относится к созданию заказных продуктов (оговаривается в условиях контракта), но при создании коробочных продуктов эти ограничения имеют не меньшее значение, т.к. здесь они диктуются условиями рыночной конкуренции.
Все аспекты производства ПО. Программная инженерия занимается не только техническими вопросами производства ПО (специфицирование требований, проектирование, кодирование,…), но и управлением программными проектами, включая вопросы планирования, финансирования, управления коллективом и т.д. Кроме того, задачей программной инженерии является разработка средств, методов и теорий для поддержки процесса производства ПО.
Программные инженеры применяют систематичные и организованные подходы к работе для достижения максимальной эффективности и качества ПО. Их задача состоит в адаптации существующих методов и подходов к решению свой конкретной проблемы.
Информатика (computer science) занимается теорией и методами вычислительных и программных систем, в то время как программная инженерия занимается практическими проблемами создания ПО. Информатика составляет теоретические основы программной инженерии и инженер по программному обеспечению должен знать информатику. Так же, как инженер по электронике должен знать физику. В идеале, программная инженерия должна быть поддержана какими-то теориями информатики, но самом деле это не всегда так. Программные инженеры зачастую используют приемы, которые применимы только в конкретных условиях и не могут быть обобщены на другие случаи, а элегантные теории информатики не всегда могут быть применены к реальным большим системам.
И наконец, информатика – это не единственный теоретический фундамент программной инженерии, т.к. круг проблем, стоящих перед программным инженером значительно шире просто написания программ. Это еще управление финансами, организация работ в коллективе, взаимодействие с заказчиком и т.д. Решение этих проблем требуют фундаментальных знаний, выходящих за рамки информатики.
В чем отличие от других инженерий?
Отличие программной инженерии от других инженерий интересно прежде всего с точки зрения двух вопросов:
Почему доля провальных проектов в программной инженерии так велика по сравнению с другими инженериями?
Можно ли в программной инженерии применять опыт других инженерий?
Эти вопросы является фундаментальными для программной инженерии. По этому поводу высказывается много мнений (и часто противоположных). Остановимся на некоторых более или менее очевидных отличиях программной инженерии от других инженерий.
Прежде всего, отметим, что жизненный цикл продукта любой инженерии в упрощенном виде включает фазы: проектирование, создание образца, испытание, производство, эксплуатация.
Компьютерная программа – это (в отличие от объектов других инженерий) не материальный объект (просьба не путать с носителем программы – устройством памяти любого типа). Отсюда следуют следующие отличия. Фаза производства состоит в копировании образца на другие носители. Стоимость фазы исчезающее мала. Если кодирование считать элементом проектирования (что очень близко к истине), то отсутствует также и фаза создания образца (строится компилятором и линковщиком)
Отсюда следуют следующие выводы:
Стоимость программы – это стоимость только ее проектирования
Стоимость проектирования коробочных продуктов «размазывается» по копиям
Стоимость заказных продуктов (массово не копируемых) остается высокой



