В сфере IT существует огромное количество разветвлений. Одни напрямую связаны с разработкой приложений, другие же хоть и относятся к области информационных технологий, но прямого отношения к разработке не имеют. Как же выбрать свое направление в 2022 году?
Многие ошибочно считают, что программирование – синоним разработки, но в 2022 году это далеко не так. Помимо самих разработчиков есть около программистские профессии по типу devOps, тестировщиков и так далее. Рассмотрим, какие интересные направления существуют в принципе, какие разновидности специальности есть в IT сфере.
UI/UX Design
Первую очередь затронем вещи, которые не относятся к разработке. Например, такая специальность, как и UI/UX дизайн. UI отвечает за то, как выглядит веб-приложение, сайт, Android или IOS приложение. Как оно взаимодействует с пользователем, с точки зрения именно визуальности.
UX – user experience – то, как приложение себя ведет. В UX дизайн входят такие понятия, как правильная настройка меню, где будет расположены кнопки, чтоб пользователю было удобно, где будет полоса промотки, какая она будет: вверх-вниз или влево-вправо, какие будут экраны у приложения, если это, например, сайт, какие разделы будут у сайта, какие будут вложенности меню и так далее. Результатом работы UX дизайнера являются скетчи, то есть он просто рисует картинку, приблизительно фото, как, где и что будет располагаться. Затем уже UI дизайнер должен оформить всё красиво. Выбирает шрифты, цвета, разрабатывает логотип и так далее.
Хотя разница в их работе очевидна, но рынок считает, что и тем, и другим знанием должен обладать один и тот же человек. Такой человек называется UI/UX дизайнер.
Виды профессий, косвенно связанные с программированием
DevOps. Это администратор, то есть человек, который настраивает сервера с помощью скриптов, то есть автоматически. Можно сказать, что это программист, который настраивает сервера. Хотя DevOps специалист и работает с языками программирования, а также использует другие инструменты, которые использует и программист, но таковым он не является.
Тестировщик. Или же автоматический тестировщик. Ни одна компания, которая разрабатывает какое бы ни было приложение, не хочет, чтобы пользователи оставляли негативные отзывы.
Если программа большая, сложная, и регулярно обновляется, то выгоднее это делает с помощью программы. Так появилась профессия Automation QA, то есть автоматическое тестирование. Интересная и достаточно востребованная профессия.
Data Science. Есть огромное количество вакансий, которые на первый взгляд не затрагивают программистов, но при этом этот пишет программы. Это касается девопсов, автоматических тестировщиков, а также таких людей, как Data Scientist. С этой работой связаны и другие направления. Это и machine learning, и Natural language processing и другие, которые завязаны на данных и на их обработке. Это не совсем работа по программированию. Потому что, да, специалист по Data Science пишет программы, вернее скрипты, которые что-то делают с этими данными. Но он пишет их, как служебный инструмент, так же, как Devops и Automation QA. Да, это не основная его работа. Основная работа каким-то образом проанализировать данные, научить систему как-то работать с этими данными и так далее. Эти профессии, связанные с информатикой, но косвенно.
Программистские профессии
Embedded разработка. Это разработка под разные мелкие устройства, начиная от бортового компьютера автомобиля или самолета, и заканчивая там теми же электронными сигаретами. Это и умные дома, и интернет вещей и так далее. Это огромное количество всяких вещей, которые завязаны на том, что у вас маленький слабенький компьютер, со странной конфигурацией, которому надо что-то делать. И к нему что-то кто-то должен написать. Это и есть работа embedded developer.
Первый программист embedded работает, как правило, на очень низком уровне программирования. То есть это частично Assembler, частично С, частично С++.
Мобильная разработка. Есть мобильная разработка под Android, есть мобильная разработка под IOS. Это две совершенно непересекающиеся профессии, фактически там разные языки и все остальное, кроме того, что их приложения выглядят примерно одинаково.
GameDev. Это разработка игр. Надо понимать, что направление называется геймдев, но сейчас айтишник, разрабатывающий игры, очень много может работать в таком направлении, как виртуальная реальность Augmented Reality.
Сейчас фактически есть два основных направления работы: на движке Unity, где программа пишется на С#; и работа на движке Unreal Engine, где нужно писать проекты на С++. Рынок, как ни странно, достаточно большой. Есть огромное количество компаний, которые занимаются GameDev, но не являются игровыми компаниями.
Разработка десктопных приложений. Как в России, так и в Украине десктопных приложений практически не существуют, за исключением совсем небольшого количества фирм, которые разрабатывают такие приложение для Mac OS. Под Windows никто практически не разрабатывает ничего, точно так же как и под Linux. Так как потребность в приложениях для Windows очень небольшая. Поэтому можно сказать, что это самый не востребованный сегмент.
Web-разработка. Веб-разработка делятся на огромное количество аспектов, о которых мы расскажем.
FrontEnd и Backend разработчики. Когда вы заходите на какой-то сайт, часть кода, которую показывает вам этот сайт, находится на сервере. Это та часть, которая показывает вам или всякие комментарии, текущие цены, реагируют на то, что вы добавили себе что-то в корзину, и потом эту корзину пересчитывает в соответствии со скидками, наличии на складе и так далее. Это все называется Backend. FrontEnd – это все те вещи, которые связаны с выполнением непосредственно у вас браузере. Термины FrontEnd и Backend затрагивают только компьютерные сети. Если мы говорим про мобильную разработку, то мобильное приложение оно само по себе является как бы фронтом.
Full Stack. Кто это такой? Этот термин означает разработчика, который умеет писать и на FrontEnd и на Backend. То есть объединяет 2 должности в одной. По факту же можно выделить 2 варианта гибридов. Backend разработчика, который немножко разобрался во фронте, и может слегка внести немножко порядок. Или фронт-энд разработчика, который может три строчки написать на Backend. Такое происходит на практике. Вариант же, когда человек прекрасно разбирается и в том, и в другом, к сожалению, довольно сложно воплотим в реальность. Хотя рынок считает, зачем нанимать двоих, когда можно платить одному. Но будут ли качества программиста, пытающегося усидеть на двух стульях, такие же по уровню, нежели профессионала, но в одной сфере.
Это была краткая презентация на те профессии в сфере IT, которые существуют на данный момент.
Качества хорошего программиста
На эту тему можно рассуждать очень долго. Характеристика на программиста может отличаться, но можно выделить 5 качеств, которые действительно важные в работе. Перечислим основные качества хорошего специалиста:
- Интеллект и умение выражать свои мысли. Очень многие люди считают, что хороший программист – это человек, который сидит перед компьютером, и не в состоянии связать двух слов. Это не так. Дело в том что во время программирования вы точно также выражаете свои мысли, и точно также пытаетесь объяснить. Просто это происходит на компьютерном языке и другому программисту, который будет это читать.
- Страсть. Хороший программист интересуется новостями, лазит по соответствующим форумам, выясняет, что там новенького, пишет какие-то подпроекты. Это дело должно вас увлекать. И средний возраст программиста тут не играет никакой роли.
- Настойчивость. Практически не бывает, даже в учебном программировании, не говоря про промышленные ситуации, когда и у тебя все сразу получается. Собственно говоря, страсть, интеллект и настойчивость вместе дают хороший результат. Потому что человек берет эту сложную задачу и бьется об нее, и вариант отказаться от решения задачи не рассматривается.
- Любовь к новому и самообучение. Предыдущие показатели, признаки хорошего программиста замечательны. Но быть хорошим программистом и не учится постоянно, не любить самообучение, не любить новые знания и любопытствовать невозможно.
- Гибкость мышления. Это умение обойти проблему, а не ломиться в лоб. Хороший программист имеет гибкое мышление, умеет образно подойти с разных сторон, подумать, посмотреть на проблему сверху. Подумает о том, что может быть вообще решение лежит не в этой плоскости и надо решить как-то совсем по-другому. Умение отказаться от неверно принятого решения – это отличительная черта хорошего программиста.