Хотите быстро перейти из джунов в мидлы? Для этого нужен простой советский… Много работать, развивать хард и софт скилы.
Неприятно это признавать, но не существует единого пути и «волшебной таблетки» для всех, ведь ИТ – очень большая, быстро меняющаяся отрасль с кучей нюансов для каждой из областей. Требования к специалистам в плане инструментов разработки могут отличаться даже в рамках одной компании.
Но не всё так страшно! Расскажем несколько советов, которые будут полезны всем, но особенно разработчикам баз данных.
Павел Ревин, архитектор решений и руководитель центра компетенций по платформам данных в «КОРУС Консалтинг», поделился своим опытом, лайфхаками и подборкой книг для Python-разработчиков.
Личный опыт
Я работаю в ИТ-сфере почти 20 лет, начинал как разработчик баз данных Oracle, со временем переключился на весь стек работы с данными – любые реляционные базы, Big Data стек. Сейчас работаю в основном на технологическом стеке Python и SQL – это два основных языка, которые нужны Data-инженеру, а также расширения для SQL – PL/SQL, PL/pgSQL и фрейворки для Python Pandas, Spark.
В КОРУСе у меня две основные роли – архитектор решений и руководитель центра компетенций. Как архитектор решений я выступаю перед заказчиком, с решениями по хранилищам с использованием классических MPP, Big Data стека и работе с облаками. Как руководитель центра компетенций платформ данных я занимаюсь ресурсным управлением – наймом, развитием людей и распределением специалистов по проектам.
Центр компетенций и матрица скиллов
В нашей работе постоянно одни проекты сменяют другие, поэтому нам важно, чтобы команды были готовы работать с разными заказчиками и задачами. Для помощи с изучением разных технологий в одной компании и нужен центр компетенций. В нашем случае специалистов объединяют в одну группу не по конкретным языкам программирования, а по направлению – обучаем всех разработчиков, работающих с хранилищами и платформами данных. Сейчас потребности заказчиков становятся более масштабными, на одном проекте могут быть и реляционные базы данных, и Hadoop, и облака, и стриминг. И в идеале разработчик должен всё это знать на достаточно хорошем уровне. Поэтому мы сейчас стараемся отходить от специализации по конкретной технологии, в тех областях, где это возможно.
Для системного развития разработчиков во многих компаниях есть матрица компетенций – это таблица, в которой детально прописано, какими навыками должны обладать сотрудники и на том или ином уровне. На основе матрицы компетенций разрабатывается индивидуальный план развития, с учётом бэкграунда конкретного человека, чтобы понять, какие скилы нужно прокачать, чтобы быстрее повысить свой грейд.
Если в вашей компании нет центра компетенций или регулярных обучений, стоит обращаться за советами и дополнительной информацией к более опытным коллегам. Менторство – отличный инструмент для обучения, он помогает и изучить что-то новое, и поделиться своей экспертизой. Если у вас есть желание развиваться, нужно это показывать и быть инициативным.
Чем джун отличается от мидл-разработчика
На самом деле, джуниоры и мидлы работают примерно с одинаковым набором технологий. Главное их отличие – это опыт и количество внешнего контроля. Если джуна нужно контролировать на каждом этапе выполнения задачи, то мидл-специалист на 80% работает с задачей самостоятельно. Именно по этому критерию менеджеры разделяют грейды.
Важно, не просто знать теорию и углубляться в изучение технологий, но и наработать опыт решения разных задач. Сейчас в команду приходят достаточно продвинутые джуны, которые пробовали работать с разными технологиями, локально что-то поднимали и хорошо пишут на Python, но мы все равно не можем отдать такого человека на проект заказчику как опытного специалиста. Ответы на многие проектные вопросы могут быть вообще не связаны непосредственно с технологиями, для их решения нужен реальный опыт, который нарабатывается далеко не сразу. В среднем нужен год работы на реальных проектах, чтобы джуну перейти на позицию мидл специалиста.
При этом, нужно понимать, что в реальной жизни возникает огромное количество вопросов, на которые нет ответов даже у очень опытных людей. При возникновении проблемы, на которую вы не можете найти решение, нужно быстро это понять и обратиться за помощью, предложить свои идеи для ее решения. Поэтому второе важное отличие джуна от мидла – умение работать в команде и понимать, когда просить о помощи. Этим навыкам тоже нельзя научиться по книжкам и нужно на собственном опыте выстраивать коммуникацию с коллегами.
Быть в инфополе и следить за индустрией
ИТ-сфера меняется очень быстро, знать о последних новостях будет полезно специалистам любого грейда. Ключевые конференции ведущих облачных вендоров, за которыми стоит следить – это ежегодные конференции Amazon, Google, Microsoft, Yandex Cloud, VK Cloud. Там обсуждаются самые трендовые технологии и сервисы, которые сейчас находятся в фокусе внимания всего ИТ-сообщества. Обычно доклады облачных провайдеров посвящены какой-то специфической части существующего сервиса, сам сервис построен на какой-то технологии, как правило опенсорсной. Типичная ситуация облачных вендоров, когда они берут, какой-то известный опенсорсный фреймворк, например Airflow, Hadoop, Spark, и делают из него сервис. Это значит, что технология востребована для бизнеса и имеет смысл ее изучать. Возможно, джуниор специалисту многое из того, что обсуждается на конференциях, будет непонятно. Ведь он не в контексте и не знает этих технологий, но сам факт, что эти технологии попали в список докладов, говорит о том, что этому стоит уделить внимание в дальнейшем.
В принципе джуну не нужно слишком сильно углубляться в тренды, лучше уделить внимания тем технологиям, с которыми работают на проекте и решают конкретные бизнес-задачи компании.
Саморазвитие и pet-проекты
Pet-проекты точно могут помочь в освоении новой технологии. Как правило, в больших проектах задачи довольно узкие и большая часть необходимой работы уже была сделана до вас другими командами, а вы её просто переиспользуете. Если начинающий разработчик придёт на другой проект, где нужно делать всё с нуля, он не сможет это повторить. Научиться этому помогают pet-проекты. Такая же ситуация с изучением новой технологии, которую вы не можете применить на проекте.
Лайфхак
Часто на первом этапе нужно разобраться с данными, а не в технологии, на которой их обрабатывать. Чтобы не тратить на это время, можно взять готовые бизнес-кейсы и знакомые данные из рабочего проекта и обработать их в новой технологии. Так вам не придётся вникать в сами данные и можно более внимательно заняться изучением технологии.
В результате такие проекты можно использовать в работе. Например, я недавно разворачивал кластер Hadoop в Yandex Cloud со Airflow и Spark. Я оформил это в Terraform скрипты в виде проекта. Потом эту инфраструктуру мы использовали, чтобы провести курс по Spark для студентов.
Лайфхак
Кроме изучения технологий, важно знать, как тот или иной инструмент разворачивается, например, попробуйте поставить Apache Kafka или Airflow. Это поможет изнутри понять, как инструмент устроен и всегда будет под рукой, если вы захотите его переподнять и провести эксперименты. Я всем рекомендую уделять внимание разворачиванию компонентов инфраструктуры, потому что само разворачивание – это тоже проект.
Рекомендация книг и статей для Python-разработчиков
- Mark Lutz – Learning Python 5th Edition.
- Изучаем Python. 5-е издание.
- Mark Lutz – Python Pocket Reference 5th Edition.
- Python. Карманный справочник. 5-е издание.
- Zed A. Shaw – Learn Python 3 the hard way.
- Luciano Ramalho – Fluent Python. 2nd Edition.
- Python. К вершинам мастерства. Лаконичное и эффективное программирование. 2-е издание.
- https://docs.python.org/3/ + Python Tutorial.