Современный рынок труда для только вставшего на путь поиска себя программиста, представляет собой крайне хаотичную и бесструктурную базу всевозможных объявлений и предложений. Подобное многообразие не всегда идёт на пользу соискателю - так как огромное число информации может вызвать некоторый шок и для того, чтобы предотвратить ощущение фрустрации в подобной ситуации, я поделюсь с вами некоторыми важными рекомендациями, построенными на компетентностном подходе.
Для начала определимся с тем, что такое компетенции. Для рынка труда этот термин оказался крайне удобным и полезным, мы его должны понимать как: совокупность умений, навыков и опыта для решения производственных задач. Так же компетенции любят называть словом skills - то есть навыки, такой термин может быть даже более удобным.
Hidden text
Примечание: знание термина “компетенции” довольно часто радует HR-ов и может вам пригодиться на собеседовании, к которому мы вас постараемся подготовить в этой статье.
Компетенции или скилы могут быть представлены двумя типами:
Компетенции, которые характеризуют свойства личности (или же мягкие скилы) - после пандемии коронавируса, данная область стала привлекать широкое внимание компаний и рекрутеров
Профессиональные компетенции (хард скилс) - самый важный атрибут профессионала в своей отрасли, который определяет пул задач, которые самостоятельно может решить сотрудник
Soft Skills, компетенции характеризующие личность
Команда и коллектив - оплот современной цифровой культуры, который позволяет решать большое количество вопросов в максимально сжатые сроки и при этом (в идеале) защищает нас от профессионального и эмоционального выгорания. Для современного сотрудника важным качеством является умение работать в команде, так как эффективные коммуникации позволяют развиваться как внутри компании, так и за её пределами.
Коммуникативность - другой аспект командной работы, четко поставленная и грамотная речь является преимуществом, но умение донести свою мысль и погрузить команду в контекст вашего предложения - является даже более важным. В случае устройства на работу вам придётся много общаться, даже если вы представляете себя в качестве фрилансера - то как минимум вам придётся общаться с заказчиком, а так как люди - это самые непредсказуемые существа, то навык стрессоустойчивости будет неплохим дополнением к вашим скилам социализации.
Безусловно, описанные ранее навыки являются важными, и их оценка будет произведена в первую очередь - так как они проявятся ещё на стадии общения с hr-ом. Далее, логично будет двигаться в сторону тех скилов, которые уже в большей степени характеризуют нас как сотрудника.
Наиболее выгодные качества для вас и работодателя выглядят как постулат: желание учиться и совершенствовать свои навыки, возможность самостоятельно организовывать время. Данные качества важны для большинства профессий и их значение является довольно простым и интуитивным для понимания. Вы обладаете этими свойствами, следовательно, у вас есть дисциплина и амбиции, соответственно, при наличии hard skills и описанных ранее качеств вы являетесь примером идеального сотрудника. На практике особенно хорошо любые характеристики сочетаются с адекватной самооценкой - так как она является гарантом достоверности ваших самоотчетов.
HardSkills, пул компетенций для разных направлений IT
Для начала небольшой вопрос: привыкли вы учиться на чужих ошибках или собственных?
Если вам нравится извлекать опыт из собственных ошибок, то могу вам порекомендовать один сценарий, который позволит вам получить необходимые знания путем проб и ошибок. Так, для того, чтобы попасть на должность программиста в разные компании, вы можете попытаться пройти собеседование в какой-либо компании, например на HH, при чем вы можете рассмотреть разный уровень компаний, чтобы иметь широкие представления. При этом, сразу стоит отметить, что маленькие компании - иногда неадекватно оценивают собственные возможности на рынке труда. Это выражается в первую очередь даже не в зарплате, а в тех требованиях, которые вам могут индивидуально озвучить на собеседовании, вероятно, все это идёт из давней поговорки “хочу то, не знаю что”, так и в этом предложенном варианте вы скорее будете опираться на интуицию. Конечно, такой опыт может быть полезен, если вы студент, который испытывает удачу, но что делать, если вы прошли курсы или уже имеете опыт работы?
На самом деле, легенда вариантов будет схожей, но подход к рассмотрению объявлений будет качественно отличаться. Основной акцент внимания нам требуется направить на те требования, которые выдвигает работодатель.
Следующий комментарий посвящен новичкам
Эту рекомендацию вы можете рассматривать как на этапе получения каких-либо знаний IT:
Условно, вы хотите начать карьеру FrontEnd разработчика - до прочтения этой статьи, вероятно, вы бы рассматривали какие-либо курсы, в которых вас зацепил бы заголовок. "Стань разработчиком за десять дней", "пятнадцать милисекунд" и.т.д.
После прочтения этой статьи вы можете рассмотреть более детально те навыки, которые вам потребуется освоить: может с помощью курсов, может самостоятельно. Так же существует такая фишка как Roadmap (или дорожная карта) - данный вид иллюстрации бизнес-процессов стал крайне популярен, в отношении IT дорожные карты показывают порядок поэтапного основения каких либо фреймворков и технологий.
Но так как всё в жизни, особенно в контексте человеческих возможностей - относительно, то стоит быть готовым к тому, что где-то вы будете ориентироваться быстрее, а где-то вам потребуется дополнительное время.
Рассмотрим некоторые популярные направления из IT-сферы и их основные технологии,
для удобства в освоении языков и библиотек программирования
FrontEnd разработчик:
JavaScript - данный язык является одним из наиболее интересных и может показаться даже слишком простым. Для получения самых базовых представлений, вы можете воспользоваться онлайн учебником по JS [https://learn.javascript.ru/], если вы уже продвинутый пользователь или хотите расширить свои представления о данном языке, можете посетить большой сборник практических вопросов, сниппетов (утилит), паттерны проектирования, а также полезные ссылки по JavaScript [https://github.com/StrokatovSergey/JavaScript-Total]
TypeScript - язык, который в 2019 году вошёл в топ-10 по популярности (занял 10 место 21,2% голосов, а JavaScript - первое место и 67,8% голосов). На самом деле, имея некоторый опыт программирования, можно рассматривать изначальное изучение TypeScript вместо JavaScript - так как данный проект обладает открытым исходным кодом и иногда обновления из него, становятся часть JS. Основным преимуществом является исправленный синтаксис, строгая типизация и возможность компилировать код в JavaScript [https://www.typescriptlang.org/].
React - это библиотека JavaScript [https://ru.reactjs.org/tutorial/tutorial.html], которая задействована в разработке пользовательских интерфейсов. Главная фишка реакта - это компоненты (функциональные элементы, которые можно многократно использовать в приложениях), состояния (это вся информация об элементе, в том числе о его отображении) и хуки ( нововведение в React 16.8, которое позволяет использовать состояние и другие возможности React без написания классов) [https://tproger.ru/articles/kak-stat-react-razrabotchikom-v-2021-dorozhnaja-karta/].
HTML - для многих известный ещё со школы язык разметки. Он будет являться базой в любой web-разработке, поэтому если вы с ним не знакомы, то самым простым вариантом будет именно он [https://developer.mozilla.org/ru/docs/Learn/Getting_started_with_the_web/HTML_basics].
CSS - основной инструмент для создания красоты, представляет собой набор параметров стиля по отношению к элементам документа [https://developer.mozilla.org/ru/docs/Learn/Getting_started_with_the_web/CSS_basics]
Python-разработчик:
Python - крайне обширный язык программирования, который выполняет невероятное количество задач. Часто он выглядит привлекательным из-за его простого синтаксиса [https://academy.yandex.ru/handbook/python] и возможностью применения в различных областях [https://pythonist.ru/category/knigi/], особенно связанными с машинным обучением, искусственным интеллектом, наукой и другими популярными направлениями.
Django - библиотека, которая используется для создания веб-приложений на языке Python [https://metanit.com/python/django/].
FastAPI - это фреймворк для создания API, написанный на Python [https://habr.com/ru/post/708678/]
asyncio - это библиотека для написания параллельного (конкурентного) кода с использованием синтаксиса async/await [https://habr.com/ru/post/337420/].
PostgreSQL - СУБД (система управления базами данных) с открытым исходным кодом, основой которого был код, написанный в Беркли. Она поддерживает большую часть стандарта SQL и предлагает множество современных функций, а так же пользователи могут самостоятельно расширять функции PostgreSQL создавая свои типы данных, операторы, методы индексирования, и.т.д [https://metanit.com/sql/postgresql/].
iOS-разработчик:
Objective-C - язык программирования, который опирается на парадигму SmallTalk и язык C. Используется для написания программ для продукции фирмы Apple наряду со Swift [https://habr.com/ru/post/107126/].
Swift - так же является языком программирования для продукции Apple. Небольшая подборка материалов по данному языку [https://habr.com/ru/company/vk/blog/417711/], а так же некоторые важные аспекты, связанные с Objective-C и Swift на собеседованиях - https://tproger.ru/articles/zachem-uchit-objective-c-v-2022-godu-umeloe-upravlenie-pamjatju-i-drugie-operacii-na-nizkom-urovne/
SQLite - компактная система управления базами данных на языке C [https://habr.com/ru/post/149356/]
MVC (Model-View-Controller) - это такая структура мышления (или организации кода), когда выделяется 3 блока: модель, представление, контроллер. Основной смысл данной организации заключается в том, чтобы модификация каждого компонента могла осуществляться автономно [https://habr.com/ru/post/181772/].
Go-разработчик:
Golang - язык созданный Google, который по задумке сделает жизнь web-разработчиков легче, а разработку программного обеспечения быстрее, похож на C и C++ в более упрощённом варианте [https://habr.com/ru/post/266851/].
С++ - один из самых популярных языков разработки, используется для создания операционных систем, разнообразных прикладных программ, приложений для встраиваемых систем, высокопроизводительных серверов, а также компьютерных игр [https://learn.microsoft.com/ru-ru/cpp/cpp/cpp-language-reference?view=msvc-170].
Python - конкретные требования по библиотекам Python лучше смотреть непосредственно в содержании вакансии, которую вы рассматриваете.
Android-разработчик
Kotlin - официальный язык программирования для платформы Android, представляет собой переписанную версию Java, следовательно его можно использовать везде, где работает Java [https://kotlinlang.ru/].
Java - язык программирования общего назначения. Относится к объектно-ориентированным языкам программирования, к языкам с сильной типизацией. Используется в разработке современных приложений, различных серверных приложений в крупных корпорациях, для широкого числа пользователь данный язык будет знаком по игре Minecraft, на котором она написана [https://www.java.com/ru/download/faq/index_general.html].
RxJava - библиотека, которая используется разработчиками для реактивного программирования (работа с потоками данных) [https://github.com/ReactiveX/RxJava].
ML-разработчик:
PyTorch - фреймворк машинного обучения для языка Python с открытым исходным кодом, созданный на базе Torch. Используется для решения различных задач: компьютерное зрение, обработка естественного языка [https://pytorch.org/].
FAISS (Facebook AI Research Similarity Search) – для быстрого поиска ближайших соседей и кластеризации в векторном пространстве [https://github.com/facebookresearch/faiss].
Python - в контексте данного направления требуется рассмотрение библиотек для глубинного и машинного обучения.
алгоритмы - имеются ввиду различные алгоритмы машинного обучения, некоторые могут быть знакомы вам из школы или высшего учебного заведения (например линейная регрессия) [https://habr.com/ru/post/509472/].
Data-инженер:
Hadoop - это свободно распространяемый набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов. Эта основополагающая технология хранения и обработки больших данных (Big Data) [https://www.bigdataschool.ru/wiki/hadoop].
HDFS - распределенная файловая система Hadoop для хранения файлов больших размеров с возможностью потокового доступа к информации [https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html].
Kafka - это распределенная платформа потоковой передачи событий с открытым исходным кодом, используемая тысячами компаний для высокопроизводительных конвейеров передачи данных, потоковой аналитики, интеграции данных и критически важных приложений [https://kafka.apache.org/documentation/].
Spark - это многоязычный движок для выполнения data engineering, data science и машинного обучения на одноузловых машинах или кластерах [https://www.bigdataschool.ru/wiki/spark].
Zeppelin - это web-based notebook обеспечивающий управляемый данными интерактивный анализ данных и совместную работу с документами с использованием SQL, Scala, Python, R и других языков [https://zeppelin.apache.org/docs/latest/quickstart/install.html].
Airflow - это платформа, созданная сообществом для программного создания, планирования и мониторинга рабочих процессов [https://www.bigdataschool.ru/wiki/airflow].
Zookeeper - это централизованная служба для поддержания информации о конфигурации, присвоения имен, обеспечения распределенной синхронизации и предоставления групповых служб [https://www.bigdataschool.ru/wiki/zookeeper].
ClickHouse -столбцовая система управления базами данных (СУБД) для онлайн обработки аналитических запросов [https://clickhouse.com/docs/ru/].
Python - про Python написано выше
Java - и Java тоже, концептуальных различий в этих двух областях нет
Scala - это возможность научиться функциональному программированию на безопасном языке, у которого есть большое будущее [https://habr.com/ru/post/523874/].
Data Scientist:
SQL -это язык программирования для хранения и обработки информации в реляционной базе данных. Реляционная база данных хранит информацию в табличной форме со строками и столбцами, представляющими различные атрибуты данных и различные связи между значениями данных [https://metanit.com/sql/].
Python - имеются ввиду пакеты для data science, познакомится с ними можно в источнике [https://habr.com/ru/company/ruvds/blog/525834/]
Tableau - система интерактивной бизнес аналитики [https://tableau.navicongroup.ru/].
Fine BI - это инструмент для Self Service BI-анализа, поскольку он имеет не только функции анализа данных на уровне визуализации данных, но и управление загрузкой и трансформацией данных, а так же управление и контроль на уровне ИТ администратора [https://finebi-report.ru/]. Представляет собой альтернативу Tableau и обгоняет его в некоторых функциональных и визуальных аспектах.
Greenplum - платформа массивов параллельных данных с открытым исходным кодом для аналитики, машинного обучения и искусственного интеллекта [https://www.bigdataschool.ru/wiki/greenplum]
Резюмируя вышеописанное
Проанализируйте свои возможности и потребности, чтобы определиться с тем, какую профессию в IT вы рассматриваете на данном этапе. Так как это направление связано с постоянным ростом, пул ваших компетенций будет всегда только расти и к стеку технологий будут прибавляться новые библиотеки, фреймворки, IDE и так далее.
Проведите мониторинг вакансий, чтобы оценить нюансы конкретного рабочего места.
-
Если вам требуется получить какие-то дополнительные компетенции - вы можете воспользоваться дорожной картой (roadmap), в которой будет описана последовательность освоения технологий (обратите внимание на то, что скорость освоения будет субъективной)
stackjava
Что это вообще?
Нечитабельно оформлено, содержание обо всем и ни о чем одновременно...
jean_i Автор
Что это вообще: Довольно часто получал вопросы от людей, которые только хотели влиться в айтишечку, в связи с чем появилась идея расписать какие-то штуки, которые могут быть полезными
Нечитабельно оформлено - справедливое замечание, не удалось в полном объеме отразить форматирование, так как изначально текст писал в dropbox paper. Проработаю этот момент.
Содержание обо всем и ни о чем - вероятно, такое ощущение создаётся за счёт того, что была идея зацепить широкую аудиторию и попытаться подобрать такой язык, который для неё подойдёт
Спасибо вам за замечания, буду работать над улучшением качества контента