В двух словах если - то поступать и учиться)) Но если бы всё было так просто...
В конце учебного года многие мои сетевые коллеги публикуют по сайтам, пабликам и телеграм-каналам статьи со странными заголовками, например, "Куда поступать с информатикой". Статьи могут быть неплохими по содержанию - например, могут быть перечислены вузы, расписаны профессии, связанные с информатикой и программированием (намеренно не пишу "IT").
Но, вообще-то, эту информацию имеет смысл давать не после, а до того, как ученики экзамен сдадут. СИЛЬНО до. Однако коллеги с логикой, похоже, расстаются, объяснив по-быстрому 2-е и 15-е задания))) Шутка, смеяться не обязательно.
Обычно ученик, готовясь к экзамену по конкретному предмету, заранее присматривает себе вуз (или несколько), будущую профессию. Однако (в последние годы всё чаще почему-то) бывает и так, что ученик неожиданно задаст вопрос: а куда мне пойти? Чем заниматься? На чём сердце успокоится? Back-end или Data Science? Биоинформатика или информационная безопасность? То есть, сами не определились, умных слов поверхностно нахватались, а экзамены сдавали не из-за выбранного в жизни пути, а по любой другой причине: он показался легче, пацаны сдают - и я с ними, говорят, в IT денег платят много, и так далее.
В профильных пабликах каждый июнь-июль статьи на тему типа "Куда поступать с информатикой?", "Зачем я сдавал физику?", "Почему никто не отговорил меня сдавать обществознание?", "Как быть, если предметов, которые я сдавал на ЕГЭ, нигде, кроме как в моей голове, не существует?", "Что все эти люди делают в моём доме?" и так далее. Экзамен ставится как некая самоцель - сдам, а там посмотрим, кем быть и как жить.
"Главное - ввязаться в драку, а там - посмотрим" - подход неверный. Автор данной сентенции в конце концов без всякой славы завершил свои дни на острове Святой Елены.
Чтобы не возникало странных вопросов типа "А куда мне теперь пойти учиться?", имеет смысл сначала разобраться в том, какие есть направления в том же самом IT и околоайтишных отраслях (например, робототехнические специальности без огромного количества программирования просто невозможны). Почитать про них побольше. Неплохо будет пройти несколько тестов на то, какая айтишная специальность вам подойдёт больше остальных - и да, тесты эти создаются чаще всего организациями, продающими различного рода курсы разной степени краткосрочности и разной степени наглости в ценнике, поэтому приготовьтесь (например, не стоит указывать реальный телефон - достанут звонками).
Тем не менее, если вы хотите в IT, стоит всё-таки разобраться какого именно IT душа просит.
НЕКОТОРЫЕ - НЕ ВСЕ - профессии мы сейчас рассмотрим.
Крутится всё вокруг, прежде всего, РАЗРАБОТКИ. Разработки приложений. Программного обеспечения. Оно (обеспечение программное, то бишь) бывает очень разновсяческое, но у всего есть, как минимум, примерно две стороны - это то, что видит пользователь, и то, что спрятано "под капотом". Очень грубо и примитивно говоря. Опять же, если вы разрабатываете приложения для настольных компьютеров - это одно. Если для мобильных устройств - немного другое. Хотя языки программирования для этого могут использоваться одни и те же. Причём, получая образование, вполне возможно, вам придётся столкнуться с различными аспектами разработки ПО. А работать придется, само собой, преимущественно с чем-нибудь одним. Многопрофильные специалисты тоже, само собой, встречаются - они тоже нужны.
Конечно, многим приходит в голову разделить разработку на десктопную (для настольных ПК) и мобильную - хотя есть и другие виды компьютеров, встроенные системы, например. Не будем разделять компьютеры по форм-фактору. Давайте так. Пусть разработка будет:
- Front-end
- Back-end
- Full-stack
Это несмотря на то, что разрабатывать можно операционные системы, пакеты общего назначения (это я про офисные программы так), системы автоматизированного проектирования, утилиты, игры (продаваны курсов выделяют это чуть ли не в отдельную отрасль - надо потакать неграмотным геймерам и тешить их ЧСВ), базы данных, браузеры, мессенджеры, всякое-другое-прочее. У всего программного обеспечения есть внешний вид и пользовательский функционал, за него отвечают фронтендеры, есть начинка под капотом, за которую отвечают бэкендеры, а если квалификация программиста не только высока, но и широка, то есть он знает и умеет всё - то он называется фуллстек. Немного подробнее об этом.
1. Frontend-разрабочик - это программист и немного дизайнер. Создает видимую часть сайтов: отвечает за работу меню, кнопок, форм и других элементов интерфейса, с которыми взаимодействует пользователь. Это одновременно техническая и творческая профессия: его навыки позволяют визуализировать свои или дизайнерские идеи.
Такие спецы нужны тогда, если нужно разработать сайт или приложение. Начинающий frontend-разработчик должен разбираться в HTML и CSS на базовом уровне знать JavaScript, библиотеки и фреймворки для веб-разработки. Более продвинутый разработчик должен хорошо разбираться в библиотеках и фреймворках, например, владеть JavaScript-библиотекой React. Не думайте, что это всё))) это только начало)))
Вырасти фронтендер может до фуллстека. Да, потому что выгоднее содержать одного толкового профессионала, чем двух не очень толковых фронтендера и бэкендера. Да, хорошим фронтендером тоже можно остаться.
Типичная задача для фронтендера - сайт-визитка или форма оплаты для интернет-магазина.
2. Backend-разработчик разрабатывает серверную часть сайта или приложения, работает с базами данных. Например, делает так, что заказ в интернет-магазине сохраняется, передается на склад и отслеживается через личный кабинет на сайте. Тоже нужны везде, где есть приложения и сайты. Для работы на начальном уровне необходимо разбираться в базах данных и знать хотя бы один язык программирования, например PHP, Python, С#...
Перспективы - да, тоже расти в своей сфере или разрастись в ширину до фуллстека. Типичная задача - организовать регистрацию пользователей на сайте, чтобы все данные располагались в нужной базе.
3. Тот самый Fullstack-разработчик - специалист-универсал, который пашет за всех может работать и с пользовательским, и с серверным функционалом сайта или приложения. Такой мастер одинаково хорошо умеет построить и основу приложения, и обеспечить так называемое "юзабилити" - понятный внешний вид и функционал.
Такие программисты более востребованы, чем те, что специализируются только на frontend- или backend-разработке. Они совмещают в себе функции сразу двух работников. Быть fullstack-разработчиком сложнее и ответственнее, чем работать только с одной стороной сайта. А зарплата одного такого молодца-огурца всегда меньше, чем суммарная зарплата двух ребят, которые не могут договориться и проект вовремя сдать более узко специализированы.
Перспективы -пахать всю жизнь на свою контору и быть незаменимымпочти безграничны. Хороший фуллстек с обширным опытом - это очень круто.
В качестве частных случаев рассмотрим то, что продают - и неплохо продают - на всякого рода курсах - мобильную разработку и создание игр (да, игру создавать - это деятельность немного более разнообразная, чем, например, текстовый редактор или архиватор).
Итак, разработчик игр создает развлекательные и обучающие программы для различных платформ — смартфонов, ПК, игровых консолей. Это могут быть и сравнительно простые развлечения и крупные многопользовательские онлайн-игры. Для старта карьеры нужно понимать, как работает один из популярных игровых движков (например Unreal Engine или Unity) и освоить хотя бы один язык программирования. Кстати, крупные игровые проекты требуют разных языков - в тех же "Танках" и Python использовался, и C#, и другие штуки.
Разработчик мобильных приложений - это как для компьютеров, только для носимой электроники. Для умных часов, например, а не только для смартфонов и планшетов. И да, там тоже и фронтенд, и бэкенд есть, конечно, с учётом специфики.
А можно ещё упомянуть программиста микроконтроллеров. Он работает с автоматизированными производственными линиями, промышленными логическими контроллерами,"умным домом", беспилотниками, роботами... Или разработчика систем виртуальной реальности... Или специалиста по программированию авиационной или космической электроники... Да много есть разных направлений))
4. Немного отойдём от разработки и посмотрим в сторону системного администрирования. Если программисты - люди толстые, так как сидят и думают, то админы - худые, потому что бегают с этажа на этаж, из кабинета в кабинет (ШУТКА!!!). Работа админа - бесперебойное функционирование корпоративной сети, рабочих программ и офисной техники, телефонии тоже. Системный администратор должен уметь устанавливать, настраивать операционные системы — Windows, Linux, реже - MacOS ли юниксы, понимать основы построения компьютерных сетей и быстро разбираться в работе профессионального программного обеспечения.
А ещё если у тёток из бухгалтерии вдруг компьютер не включается, потому что они выдернули шнур из розетки, а назад пихнуть забыли (вообще им этого делать нельзя, но они делают иногда) - админ должен прийти, извиниться и всё исправить)))
Перспективы - вырасти, например, в DevOps-инженера.
5. DevOps-инженер - помогает разработчикам эффективно взаимодействовать с другими IT-специалистами. DevOps чаще всего становятся разработчики или системные администраторы. Первые специализируются на работе с программным обеспечением, а вторые — на безопасности и архитектуре сетей. Развитие в этой профессии требует знания архитектуры кода, сети, облачных технологий, владения системами логирования и оркестрации, развитых аналитических навыков. То есть, это профессия на стыке разработки, администрирования и безопасности.
6. Специалист по информационной безопасности. Обеспечивает, как следует из названия, безопасную в плане пользования информационными ресурсами работу серверов и рабочих станций. Чтобы никто посторонний ничего не упёр, не навредил. И чтобы никто свой ничего никому постороннему не передал. Чаще всего эта работа сочетается с админской - логично же. Если убрать вот эту романтику, то именно ИБ-спецу приходится общаться с ФСТЭК, ФСБ, МВД и другими товарищами, если что. И за порядок в инструкциях и прочих документах он тоже отвечает. А ещё бывает так, что безопасники становятся специалистами по поиску и устранению уязвимостей - "белыми" хакерами. Такой профессии официально нет, хотя такие люди достаточно востребованы.
7. Тестировщик. Чуть не забыл про него. Это специалист, который оценивает программу с точки зрения корректности работы: все ли функции исправны, нет ли ошибок. Помимо технических навыков, тестировщику нужны и навыки коммуникации: умение давать обратную связь разработчикам, писать отчеты, которые помогут им воспроизвести и устранить проблему. Раньше можно было стать тестировщиком благодаря заинтересованности в технологиях и опыту использования разных программ. Сейчас для старта нужен хотя бы небольшой багаж знаний в сфере IT: понимание жизненного цикла разработки, процессов тестирования и так далее.
8. Системный аналитик. Весьма полезный человек. Разбирается, чего на самом деле хочет заказчик или пользователь, и передает эту информацию разработчику программы. Он также должен знать, какие возможности есть у IT-отдела, и уметь объяснять заказчику что он неправ, какие из его желаний невыполнимы. Системный аналитик должен уметь анализировать процессы и требования, а затем на основе полученных данных формализовать их, то есть приводить к непротиворечивому, логичному виду, понятному для разработчика. Такие спецы востребованы в сферах со сложными внутренними бизнес-процессами, например банковской, но способны принести пользу в любой крупной компании. Просто так таким специалистом не стать. Сначала надо потрудиться в других отделах, причём успешно.
Дальше - мои любимые специальности))
9. Дата-инженер (Data Engineer) - специалист, который собирает данные из разных источников, очищает их и передает в удобном виде аналитикам для принятия бизнес-решений. Именно он создает и поддерживает архитектуру данных: крупные базы данных, хранилища или системы для обработки информации. Data Engineer должен отлично разбираться в базах данных, знать SQL, уметь программировать на Python, Java или Scala. Стать таким специалистом легче всего будет с навыками разработки. Да, с нуля туда не берут, надо попрограммировать немного.
10. Аналитик данных (Data Analyst) - разбирается в данных, ищет закономерности, на их основе готовит визуализации и отчеты. Это более творческая специальность, чем Data Engineer. Data Analyst должен уметь найти решение задачи и новые идеи в разрозненных и, на первый взгляд, несвязанных данных. Для Data Analyst важно владеть основами математики и статистики.
Да, тут не получится сказать, что я не помню, как строить пропорции)) Тут надо математикой жить и дышать)) Еще нужно уметь работать с платформами для визуализации и аналитики, например Tableau. Также необходимы навыки коммуникации, так как результаты аналитики нужно представить заказчику.
Должность Data Analyst — хорошая точка входа в мир больших данных, так как таким специалистам на начальном этапе требуется меньше технических навыков, чем Data Engineer или разработчикам. Но без математики - только в промоутеры или курьеры.
11. Data Scientist. Этот - сочетание двух предыдущих и ещё немножко. Использует данные, чтобы решить конкретную задачу бизнеса. Проводит глубокий анализ данных, строит модели, на которых затем проверяет различные гипотез. Они помогают делать реальные прорывы в бизнесе или науке. Для работы Data Scientist использует базы данных и, чаще всего, Python. А ещё - кучу таблиц. Но главное — знание математики, аналитический ум и глубокое понимание области исследования. Другими словами - это учёный, в которого встроили компьютер. Ну, почти.
И да, если ты не знаешь остатка от деления 17 на 3, тебе сюда не надо))
12. ML-инженер, то есть, инженер в сфере Machine Learning (машинного обучения) применяет на практике модели, придуманные Data Scientist. Он создает программы, которые обучаются на заданном наборе информации, а затем могут самостоятельно анализировать данные и делать на их основе выводы и прогнозы. Например, вместе с Data Scientist'ами делают и базово обучают нейросети. Стать ML-инженером с нуля сложно, нужны как минимум хорошая математическая база и опыт разработки. Специалист по машинному обучению должен разбираться в программировании, математике, статистике. Владеть стеком технологий, например знать языки программирования Python, Scala, Java, C++.
То есть, некоторые профессии с нуля получить никак не получится.
А вот теперь - самое главное. Выбрали вы вуз, посмотрели специальности - а там нет ничего такого, о чём Пал Саныч тут написал. И что? Да ничего. Тут как с врачами. Если человек хочет стать хирургом, офтальмологом, неврологом - каким угодно врачом - он должен сначала обучиться по специальности "Лечебное дело". Изучить фундаментальные основы и всё-всё понемногу. Практику пройти - вообще везде, от психбольницы до роддома. И в морге тоже. Потом - пройти интернатуру. Потом - ординатуру. И, вообще-то, постоянно совершенствоваться. Иногда и переобучаться. Так и здесь. Имеет смысл почитать побольше о вузах и специальностях, чьи названия вам понравились. На что упор делается, чему внимание уделяется, где практика проходится, в каких компаниях и отделах. Интересуйтесь, в общем. И да пребудет с вами сила.
В следующий раз поговорим о некоторых околоайтишных, более-чем-айтишных направлениях.
Обнимаю.
Ваш Пал Саныч Рябчиков