Яндекс практикум middle python скидка
Курс «Мидл python-разработчик»
Что вы получите в Практикуме
Учим только на практике и через код-ревью
Теория, рассказанная живым языком
Практика, как в жизни
Постоянная поддержка и фидбек
Сертификат и сообщество профессионалов
Сколько стоит обучение
Вступительное
тестирование —
бесплатно
Платное продолжение
85 500 ₽ при оплате сразу за
6 месяцев обучения.
или
от 3 099 ₽ в месяц
при помесячной оплате от банка.
Программа обучения
Сервис Admin panel и ETL
Детально разберёте архитектурный паттерн ETL и напишете свой сервис для миграции данных из PostgreSql в Elasticsearch.
— Python + UWSGI + Django
— PostgreSQL
— Django ORM
— Elasticsearch
— Nginx
— Docker
— Dataclasses
— ETL
+ 2 сервиса в портфолио
Сервис Async API
Второй сервис — центр разрабатываемого продукта. В нём вы реализуете бизнес-логику всего онлайн-кинотеатра. Погрузитесь в асинхронный Python, узнаете принципы его работы и примените Fast Api на практике.
Вы будете работать в командах по 2–3 человека. Процесс разработки построен как в настоящей продуктовой компании — у вас будет тимлид, код-ревью внутри команды и еженедельные демо с наставниками.
— Python + Fast API
— Event loop
— Elasticsearch
— Unit test + fixture
— Redis
— Итераторы и генераторы
— Корутины
+ 1 сервис в портфолио
Сервис авторизации
Сервис UGC
Этот сервис разрешает пользователям создавать свой контент в вашем кинотеатре — оставлять лайки, комментарии, отзывы к фильмам. Вам предстоит правильно организовать сбор и хранение данных об активности пользователей.
С этого модуля вы начнёте изучать архитектурные вопросы с новой стороны — вы самостоятельно выберете асинхронный фреймворк и хранилища данных для сервиса. Вы проведёте исследование производительности разных хранилищ данных и сделаете свой выбор, отталкиваясь от поставленной бизнес-задачи. Результаты, выводы и принятые решения пройдут защиту на демо с наставником.
— plantUML
— Python + Async Framework (фреймворк вы выберете сами)
— OLTP и OLAP
— MongoDB или Cassandra (хранилище вы выберете сами)
— EventStore или Kafka (хранилище вы выберете сами)
— Spark, Clickhouse, Vertica и AWS
— Zookeeper
— ELK
— CI/CD
+ 1 сервис в портфолио
Сервис нотификации
Сервис нотификации отвечает за коммуникацию с пользователем через Email, мобильные пуш-уведомления и websocket в браузере. Это частая бизнес-задача в коммерческой разработке — от правильной коммуникации с пользователем зависят показатели бизнеса.
Вы продолжите изучать архитектурные проблемы веб-разработки, самостоятельно пройдя путь от бизнес-задачи до рабочего решения: вы выберете стек технологий, нарисуете архитектуру сервиса и напишете по ней код.
Вы разберётесь в принципах работы брокеров сообщений на примере RabbitMQ и изучите Websocket.
— Python + Framework (фреймворк вы выберете сами)
— Хранилище данных (хранилище вы выберете сами)
— RabbitMQ
— Websocket
+ 1 сервис в портфолио
Дипломный сервис
Командный или самостоятельный проект
Хороший разработчик должен уметь работать не только с техническим заданием, но и с задачами на бизнес-языке. Получая такую задачу, специалист должен самостоятельно выделить её техническую составляющую, разложить её на конкретные требования, выбрать технологии для реализации и только потом приступить к написанию кода. Всё это предстоит вам в дипломе.
Это экзамен и проверка приобретённых навыков. Вы сами выбираете бизнес-задачу (или придумываете её), решаете, работать вам в команде или самостоятельно, планируете своё время, проектируете архитектуру решения, выбираете и исследуете технологии. На последнем этапе вы защищаете разработанное приложение.
Финальная точка — защита дипломной работы, где вы показываете свой результат. На презентации выпускников, заинтересованных в трудоустройстве, мы приглашаем нанимающих тимлидов. Первые выпускники получили приглашения на техническое интервью сразу после дипломной защиты.
— Python + Framework (фреймворк вы выберете сами)
— Хранилище данных (хранилище вы выберете сами)
— Остальные технологии вы выберете сами
+ Полноценный онлайн-кинотеатр в вашем GitHub
Как стать мидл python-разработчиком за полгода: опыт выпускников Практикума
В июле 2020 года Яндекс.Практикум запустил курс для бэкенд-разработчиков, которые хотят улучшить свои навыки, а не учиться с нуля — «Мидл python-разработчик». Что происходит с выпускниками, когда они завершают обучение и получают диплом? Достаточно ли знаний, полученных на курсе, чтобы претендовать на позицию мидла?
Мы поговорили с выпускниками первых наборов, которые получили офферы практически сразу после защиты дипломных проектов, и выяснили, насколько сложно было учиться и что помогло быстро найти работу. А ещё спросили у тимлидов и эйчара нанимающей стороны, как они видят выпускников Практикума и насколько те готовы к реальным задачам.
Немного о курсе и дипломах
Курс для мидлов-питонистов рассчитан на полгода. За это время студенты успевают изучить популярные фреймворки, попробовать асинхронное программирование, разобраться с чувствительными данными, UGC и системой уведомлений. В качестве финального проекта студенты должны написать сервис для онлайн-кинотеатра: биллинг, рекомендательную систему или голосовой помощник.
К защите проекта все серьёзно готовятся: и студенты, и наставники, и комиссия. В комиссию мы приглашаем лидов и эйчаров крупных компаний, чтобы они могли понять уровень выпускников, непредвзято оценить их работу и, возможно, сразу договориться о собеседовании. Защиты проходят строго по таймингу, а вопросы и фидбек всегда даются в дружелюбной форме.
Защита проходит по классическому сценарию: вначале студенты проводят небольшую презентацию задачи, на которой рассказывают, почему они выбрали такую тему и что у них было до начала работы над дипломом. Потом идёт углубление в проект: какие требования они себе поставили, какая архитектура у них получилась, как они шли к результату, как делили задачи и какие сложности возникали. Далее — демонстрация реальной работы созданного сервиса и ответы на вопросы комиссии. После успешной защиты выпускники получают долгожданные дипломы.
Мы собрали истории студентов, которые трудоустроились меньше чем за месяц после защиты диплома. У некоторых до курса не было коммерческого опыта разработки на Python, но при этом у них получилось пройти технические собеседования.
Многие первые выпускники устроились в «Циан» — на защитах присутствовали лиды команд из этой компании, и они решили нанять «горячие» кадры. Ещё выпускники получили офферы из PandaDoc, EPAM и X5.
Что говорят студенты
Олег Смирнов, младший python-разработчик, «Циан»
В институте мне очень нравилось заниматься разработкой, но я пошёл работать по специальности — специалистом по информационной безопасности. В свободное время занимался разработкой и автоматизацией бизнес-процессов внутри той же компании.
В какой-то момент я понял, что не получаю удовольствия от своей работы, и решил уйти непосредственно в разработчики. Но после выпуска из института прошло пять лет, и я понимал, что сильно проседаю в хард-скилах — нужно как-то наверстать упущенное. После таких выводов я начал искать подходящие курсы.
В это же время несколько моих знакомых учились на различных курсах Практикума или уже закончили их. Они давали только положительные отзывы, поэтому я оплатил курс здесь.
На входе у меня уже были навыки программирования на Python, а также на других языках, опыт работы с реляционными СУБД, Docker, да и в целом неплохая база после института. На курсе научился работать с базами данных NoSQL, различными фреймворками и технологиями, познакомился с принципами и архитектурными подходами в разработке сервисов и много с чем ещё.
Во время учёбы я познакомился с крутыми ребятами: студентами, наставниками, кураторами — все очень открытые и отзывчивые. Мне понравилось, что курс построен вокруг реализации конкретного продукта — мы делали сервис для онлайн-кинотеатра. Это расширило кругозор во многих технических вопросах.
Каких-то сложностей при поиске работы я не испытал, и у меня была рекомендация после защиты диплома в Практикуме. При выборе компании у меня было два критерия: она должна быть продуктовой и большой. В больших компаниях есть чему поучиться, а также можно переходить из команды в команду, чтобы менять проекты и задачи. Как правило, именно такие компании задают векторы развития для остальных, так как у них больше технических задач. Исходя из этих пожеланий я и выбрал «Циан». Собеседования проходили стандартно — помогали знания, полученные на курсе. Меньший грейд я выбрал сознательно: для меня было приоритетней пойти джуном в большую компанию, а не мидлом в маленькую.
Сейчас я занимаюсь разработкой различных микросервисов. Мне всё нравится: я занимаюсь тем, что приносит мне удовольствие, и меня окружает крутой коллектив. Трудности тоже есть: в основном они касаются изучения внутренних процессов и инструментов, но у меня есть ментор, что значительно упрощает ситуацию.
Что может посоветовать джун (по крайней мере по должности) джунам? Учитесь, развивайтесь, ищите возможности — так вы достигнете желаемого.
Виталий Кузовников, python-разработчик, «Циан»
У меня инженерное образование, связанное с автомобильными деталями, — я учился в МАДИ. Правда, по специальности так и не работал. При этом мне всегда нравилось программирование: в школе кодили на всяких «турбо паскалях», и это было интересно. Так что в целом меня можно назвать самоучкой.
Многому я учился на работе. Например, нужно было автоматизировать свои задачи, а потом появились какие-то базы данных — нужно было их изучать, строить хранилища, чтобы собирать данные. Потом появился Python, а когда захотелось немного поработать с вебом, появился Django.
В феврале 2020 года я полностью перешёл на работу разработчика с позиции менеджера. К августу понял, что хочу глубже погрузиться в бэкенд, расширить экспертизу. В сентябре начал учиться в Практикуме.
На входе у меня были знания Python, знание веба, знания Django, знание того, как работает монолит. На выходе разобрался с микросервисной архитектурой, как её деплоить и как она работает. Ещё понял, какие есть асинхронные фреймворки и как с этим жить.
Из обучения запомнилась некоторая сумбурность: мы были первой группой, которая пришла на курс. Но при этом мы пробовали много технологий, фреймворков, писали много кода — это было интересно.
С прошлой работы я ушёл ещё до сдачи диплома. В течение двух недель после окончания курса у меня было много собеседований. «Циан» был самым оперативным — вообще, это были самые приятные люди, с кем пришлось общаться. С ними было комфортнее всего проходить собеседования. Другие компании тоже предлагали работу, но процессы шли медленнее, да и с ними было не так прикольно и приятно общаться.
Первое собеседование было общее, чтобы познакомиться, потом прошёл техническое собеседование с ребятами из команды, в которой мне предстояло работать. Последнее — с руководителем и HR-директором. Это было собеседование на софт-скилы, которое определяло, насколько я подойду.
У меня нет никакого рецепта по удачному прохождению собеседований. Мне кажется, это было дело случая: мы друг другу понравились, и на большинство вопросов, которые мне задавали, я смог адекватно ответить.
В «Циан» я работаю уже несколько месяцев — делаю инструменты для риелторов. Постепенно привыкаю работать с новой для себя системой. В монолите достаточно легко понять, где что происходит, и ты сам можешь дотянуться до любой части системы. В микросервисной архитектуре, где много сервисов и много ответственных за каждый сервис, достаточно сложно разобраться, где же нужные тебе данные и сервисы. Но в целом постепенно складывается понимание этих связей, тем более всегда есть те люди, которые помогут.
Мой совет джунам, первый и банальный: нужно учиться, как на реальных проектах, так и искать компании, которые берут джунов. Второй совет: работайте в команде и учитесь взаимодействовать с другими разработчиками. Все крупные системы пишутся в командах, поэтому совместная разработка выходит на первый план.
Иван Фролов, python-разработчик в команде онлайн-маркетинга, «Циан»
Я всегда хотел заниматься разработкой — было интересно, как всё устроено с программной точки зрения. Потом это стало моей работой, о чём, конечно, не жалею.
У меня был опыт системного администрирования и разработки на платформе «1С». Ещё я разрабатывал небольшие сервисы на Python, активно изучал этот язык. То есть у меня было общее понимание работы компьютерных систем, базовые знания Python, навыки разработки на уровне бизнес-логики.
Практикум привлёк меня насыщенной и практичной программой. На курсе я гораздо глубже погрузился в ремесло разработки, научился решать задачи взаимодействия программ, систем хранения данных, очередей обмена сообщениями. Познакомился с паттернами построения проектов на микросервисной архитектуре и освоил её моделирование с учётом требований к нагрузке и отказоустойчивости.
Вообще Практикум открыл для меня новый мир в смысле технических вызовов и процессов, которые могут происходить внутри высоконагруженных сложных сервисов. А ещё у нас был классный ментор и не менее классная команда курса.
В «Циан» я устроился где-то через месяц после защиты. Офферы приходили, но главная сложность была в географии — я жил в Хабаровске, в итоге перебрался в московский часовой пояс.
Было два типа собеседований: в Яндекс и во все остальные компании. В Яндекс прошёл все технические собеседования и финалы с командами. Это было сложно, например, лайв-кодинг без возможности запуска, но больше с психологической стороны. Но, признаться, такой подход мне понравился больше — проверка как перед полётом в космос.
В «Циане» и других компаниях технические собеседования проводил тимлид команды. Помимо стандартной процедуры была возможность немного обсудить какие-то интересные вещи, узнать о проектах и процессах. Затем следовал раунд с HR и руководителем подразделения, где речь шла о ценностях компании, глобальных задачах и всём таком.
Я выбрал «Циан», исходя из субъективных ощущений — мне понравились люди. Особых сложностей с поиском работы не было, тем более, команда курса помогала и болела за меня. Мне нравится атмосфера в компании, нравится, что работаю с тем, что изучал на курсе.
Сейчас я разрабатываю инструменты, которые помогают объявлениям появляться в топе поисковых систем, когда пользователь ищет себе квартиру. Основная сложность — адаптироваться к новым инструментам и подходам. Но это всё — вопрос времени.
Совет для джунов: растите, изучайте программирование — это основа пути к более интересным задачам. А чтобы было проще, старайтесь разбирать на части всё, что видите в работе — так вы быстрее поймёте, как работает та или иная система.
Мнения лидов
Слава Безбородов, руководитель команды «Профессиональные инструменты», «Циан»
У меня сложились очень приятные впечатления от тех защит, на которых мне удалось поприсутствовать. Я увидел атмосферу, которая принципиально отличается от традиционных защит в тех же вузах: меньше стресса, акцент на нетворкинге.
Из-за специфики обучения студенты очень вовлечены в то, что делают, буквально горят идеей. Понятно, что все люди разные, и истории у всех разные, но большинство студентов показывают себя на защитах крепкими мидлами — на таких разработчиках и строятся команды.
Те, кто пришёл к нам после курса Практикума, выполняют все задачи наравне с другими участниками команды. Это и разработка новых фич, и поддержка существующих, и работа с дефектами, и задачи технического развития наших компонентов.
В первую очередь я обращаю внимание на софт-скилы кандидата, на его работу в команде, на то, как он общается. Я убеждён, что хард-скилы прокачать легче и быстрее, а вот взрастить в человеке внутреннюю зрелость — задача не из лёгких. Если я вижу, что у кандидата есть предпосылки к работе в команде, я готов поговорить про техническую подготовленность, про опыт использования различных технологий и фреймворков.
Для меня важно, насколько кандидату будет интересен продукт, который предстоит развивать. Мне неинтересно видеть в команде людей, которые просто выполняют поставленную задачу и не задаются вопросами, для чего это делают, какой импакт это даст на продукт и на пользователей. Мне интересны люди ищущие, предлагающие, думающие — только так команда сможет остаться конкурентной на рынке.
Каждому разработчику нужно пробовать новые технологии и подходы, учиться на своих ошибках и пробовать снова. Менять что-то вокруг себя, а обучение в Практикуме — уже начало этих изменений. А ещё рассказывайте о себе и о своём опыте так, чтобы нанимающие компании просто не смогли вам отказать!
Фёдор Фролов, технический руководитель направления «Онлайн-маркетинг», «Циан»
Считаю, что с появлением Яндекс.Практикума индустрия обучения в IT сделала огромный шаг вперёд. Вместо шаблонных лекций и пересказов литературы создана коллаборативная среда, максимально приближенная к реальной разработке.
Проделана большая работа, но всё же в результате многое сильно зависит от стартового бэкграунда абитуриента — не все из них пришли в IT с нуля. В одной команде может соседствовать программист с многолетним стажем и вчерашний студент. Поэтому у выпускников в итоге получается всё же разный уровень подготовки.
В моей команде выпускники курса почти сразу активно включились в работу — ведь им пришлось иметь дело примерно с теми же технологиями и подходами, которым их обучали. И это обучение было максимально приближенным к «боевой обстановке».
При приёме на работу я обращаю внимание на уровень технических знаний, ведь разработчик должен много знать, чтобы справляться с теми задачами, которые появляются в нашей команде. Но для меня гораздо важнее софт-скилы, ведь мы работаем в команде, вместе, сообща. Я смотрю на инициативность и тягу к знаниям — это залог развития как самого человека, так и продукта, над которым он работает.
Позиция HR
Георгий Новиков, глава IT-рекрутмента, «Циан»
Ребята на защите дипломов приятно удивили уровнем погружения в проект и открытой коммуникацией о всех сложностях, через которые пришлось пройти при создании продукта.
В «Циане» образ мидл-разработчика складывается из совокупности хард- и софт-скилов, которые мы определяем по результатам двух отдельных встреч: сначала идёт техническая, потом софтовая. Техническую встречу проводят ребята уровня сениор, где они проверяют знания кандидата по основным техническим блокам: Python, тесты, БД, асинхронность, архитектура, а также смотрят на опыт работы с конкретными инструментами. Если по результатам такого собеседования кандидат получает оценку грейда от мидла и выше, то мы приглашаем его на вторую встречу, где знакомим с тимлидом и HR BP продуктовой команды. Если по результатам второй встречи мы подтверждаем соответствие кандидата нашим основным ценностям — честность, открытость, гибкость, ориентация на результат, командная работа, — то его можно считать мидл-разработчиком.
Несколько лет назад мы рассматривали на позиции разработчиков только кандидатов с реальным опытом живых продуктов. Так получалось, что ребята, которые попадали к нам сразу после курсов, не имели достаточных технических скилов и практического опыта, чтобы пройти техническое собеседование у нас. За это время качество программ обучения выросло, во многом — за счёт обратной связи рынка, какие реальные навыки будут полезны для будущих выпускников.
Сейчас, с учётом нарастающего спроса на разработчиков, выпускники курсов становятся более востребованными для компаний. Наличие курсов в резюме — скорее положительный сигнал о том, что кандидат знает о своих зонах роста и стремится к тому, чтобы закрыть эти пробелы недостающими компетенциями.
Если вы хотите углубить свои знания по бэкенду или чувствуете, что засиделись в джунах, то приходите на курс «Мидл python-разработчик». Большая часть программы посвящена не особенностям Python, а брокеру очередей, отказоустойчивости, логированию, Nginx. Это как раз подходит под требования тех вакансий, которые сейчас актуальны на рынке.
Курс «Мидл фронтенд-разработчик»
Чему вы научитесь в Практикуме
Учим только на практике и через код-ревью
Обратная связь от старших разработчиков
Команда экспертов всегда рядом: ревьюеры на каждом этапе проверят и оставят комментарии к вашим проектным работам в GitHub, наставники и менторы помогут разобраться в сложностях и обучат собственными профессиональным приёмам.
Каждый из них преодолел путь от джуна до старшего разработчика и готов поделиться с вами лучшими практиками, советами по развитию и карьерному росту.
Новая зона роста
Вы получите рост внутри профессии за счёт непривычных задач, практики актуального стека и работы в комфортной среде, где смело можно ошибаться и учиться на этих ошибках.
После обучения на курсе вам станет доступна карьерная программа. Работая напрямую с карьерным консультантом и старшим разработчиком, вы построите карту профессионального развития, потренируетесь проходить собеседования и трудоустроитесь, повысив уровень оклада и расширив зону ответственности.
Обучение в рамках рабочих условий
Сообщество профессионалов
Зарплата
frontend-разработчика
Сколько стоит обучение
Изучение платформы обучения —
до оплаты
Платное продолжение
78 000 ₽ при оплате сразу за
5 месяцев обучения.
или
от 2 827 ₽ в месяц
при помесячной оплате от банка.
Программисты учат программированию
Программа обучения
JavaScript: параллельный курс
Модуль самостоятельного проекта
По ходу реализации проекта «Веб-мессенджер» вы структурируете и углубите имеющиеся знания, а также освоите новые инструменты и потренируетесь в работе с ними. Кроме того, уже в первые два месяца погрузитесь в изучение всей «магии» современных технологий.
Этот модуль как испытательный период — вы погружаетесь в интенсивную разработку, изучаете внутренности, нюансы работы технологий. Займётесь не только чистым фронтом на JS с типизацией TS, но и узнаете больше о тестировании, DevOps, работе с API.
В этом модуле расскажем, как:
• выбрать среду разработки, хостить код и проект и даже немножко о выборе операционной системы
• использовать TypeScript (как основы, так и сложные концепции)
• работать с архитектурой CSS и препроцессорами
• написать свой шаблонизатор и что это такое
• реализовать компонентный и модульный подходы
• использовать знание паттернов программирования и ООП
• настроить роутинг, какие есть нюансы
• работать с API, что такое WebSockets и в целом о клиент-серверном взаимодействии
• применять в работе линтеры и code style
• тестировать приложение при помощи Chai и Mocha
• работать с безопасностью: CSRF, XSS, CSP, Clickjacking и не только
• настраивать сборку через Parcel, а потом Webpack, а также работать с Docker
• работать с DevOps (узнаете о сертификатах, CI/CD и HTTP/2)
Как джуниор Python-разработчику стать мидлом за год
Привет! Я Рома, менеджер продукта в Яндекс.Практикуме, где развиваю курс «Мидл Python-разработчик». Мы делаем из начинающих разработчиков крепких мидлов с инженерным мышлением. Сегодня хочу поделиться небольшими заметками о том, над чем стоит работать, если вы джуниор, который хочет стать мидлом.
Я не разработчик, поэтому эта статья во многом отражает взгляд со стороны. Ответить на вопрос «Как джуниор Python-разработчику стать мидлом за год?» — не такая простая задача, как может показаться на первый взгляд. Здесь спряталось сразу несколько челленджей:
И хотя статья больше про бэкенд-разработку на Python, я сделал упор на общеприкладных скиллах, а не на умениях работать с конкретными технологиями. Реальные требования к кандидатам в плане инструментов разработки сильно различаются в зависимости от компании и задач. Поговорим про фундаментальные навыки, которые актуальны для роста в других направлениях бэкенд-разработки и разработки в целом. Так что если вы не питонист — не уходите, прочитайте до конца.
Какой ты джун
Итак, начнём закрывать наши челленджи. Первый — определиться, кто такой джуниор-разработчик и что он умеет. Давайте посмотрим, какие вообще бывают джуны.
Юнлинг
Первый этап развития начинающего разработчика — стажёр. Это ещё не полноценный джун — скорее его MVP. На этом уровне человек знает основы языка, но практики программирования у него нет. Его не нужно учить синтаксису — его нужно учить пользоваться языком, применять его в решении реальных задач. Чтобы дать стажёру задачу, нужно детально её расписать: сделай A, B и С, возьми такую технологию и используй вот этот приём.
Стажёры обычно не занимаются задачами, которые важны для проекта. Их бросают, например, на техдолг. Если накосячат, компания не потеряет деньги. Зато если исправят мелочи, на которые не хватает времени у более старших разработчиков, то принесут проекту много пользы. Попутно набравшись опыта.
Падаван
Разработчик становится джуном, когда переходит на фултайм и получает первые боевые задачи, от которых зависит какая-то часть проекта. Пусть это и маленькая часть, и его будут страховать по ходу работы, но у человека впервые появляется ответственность.
Давайте посмотрим на развитие этой стадии чуть подробнее.
Новичок
Разработчик, который буквально вчера принял своей первый оффер и уже жаждет влиться в команду и закрывать таски. Джун-новичок обладает достаточным набором академических знаний, чтобы выполнять простые задачи. Он умеет работать с документацией и может вытащить оттуда что-то полезное. Но знания процессов разработки больше теоретические, что приводит к ошибкам на разных стадиях написания кода. На этом этапе развития человек всё ещё учится тому, как применять язык для решения коммерческих и прикладных задач. Нормально, что он приходит к старшим коллегам и говорит: «У меня что-то ломается. Не могу это сделать. Помоги!» Ведь лучше задать вопрос, чем уйти в себя, не показать никакого результата и подвести команду.
Обыкновенный
Если вы уже прошли испытательный срок и освоились в компании — поздравляем, вы полноценный джуниор! Однако вы ещё не можете самостоятельно проработать задачу и декомпозировать её в последовательность конкретных действий. С этим вам ещё помогают старшие товарищи.
Но как только готов план, вы можете жить в нём как минимум в рамках одного рабочего дня — с вами не нужно заниматься микроменеджментом. Вы начинаете понимать, какие проблемы сможете затащить своими силами. Всегда стараетесь достигнуть результата самостоятельно, изучая документацию, и идёте к тимлиду уже с более глубокими вопросами, чем просто: «Не работает — не знаю, что делать». Здесь должно появиться: «Я попробовал то и вот это, но не получилось. Нужна помощь, чтобы понять, почему так происходит и где ещё поискать решение».
Крепкий
Это очень интересный этап, потому что на этом уровне по техническим навыкам разработчик уже почти мидл. Единственное, чего ему не хватает — достаточного опыта решения бизнес-задач.
Сюда же попадают не только разработчики, которые эволюционно прошли путь, описанный выше, но и очень сильные кандидаты без коммерческого опыта. Например, выпускник сильного технического вуза. Он много умеет, способен решать довольно сложные задачи, но ещё не набил необходимые шишки на практике.
Рыцарь-джедай
И вот он — заветный уровень мидла. Здесь человек превращается в самоходную боевую единицу в команде. Тимлид уверен, что, если даст задачу мидлу, она точно будет сделана.
Практически все задачи, которые падают на мидла, он может решить самостоятельно. Он умеет сам прорабатывать и декомпозировать задачи, сформулированные не столько технически, сколько с точки зрения бизнеса. Способен продумать техническое решение, отталкиваясь от ожидаемого результата. А ещё он может брать задания на исследования — например, изучить, как работает какая-то технология и можно ли её применять в проекте.
А если будут проблемы, человек вовремя о них сообщит и предложит варианты решения, чтобы не выпасть из сроков.
Резюме роста
Как вы могли заметить, главные метрики роста — ответственность и самостоятельность. И это применимо не только к джуниорским стадиям развития, а к грейдам в разработке в целом.
Представьте, что вы попали в исследовательский центр Британской Секретной службы в качестве инженера. Вашей команде нужно разработать машину для одного известного любителя коктейлей. Грейды инженеров в британской разведке такие же, как у нас в разработке: джуниор, мидл, сениор, тимлид, CTO.
Джуниор в этой машине будет делать что-то маленькое и некритичное в рамках всего проекта. Например, ему дадут сделать аудиоплеер. В этой задаче нет нетривиальных проблем — нужно лишь взять существующее решение и правильно интегрировать его. Ответственность небольшая, ведь если разработчик накосячит, основные функции машина будет выполнять. Но польза от выполнения задачи есть. Работа тяжёлая, стрессовая, спецагенту иногда можно и порелаксировать под любимую группу.
Мидл будет отвечать за небольшую самостоятельную часть с важной функциональностью. Например, это может быть система катапультирования нежелательных пассажиров из машины. Задача важная — в нужный момент такая функция может спасти жизнь нашего спецагента. Поэтому разработчику нужно будет не только сделать работающее решение, но и тщательно протестировать, чтобы убедиться в его жизнеспособности в боевых условиях. А ещё обязательно задокументировать свою работу, чтобы его система хорошо поддерживалась и внедрялась в остальные модели машин.
Мидл не будет продумывать архитектурные проблемы — как его система катапультирования будет связана с другими системами машины или какие технологии и материалы ему использовать. Проработку этой части возьмёт на себя сениор.
Тимлид возьмёт на себя ответственность за развитие какого-то значимого направления разработки машины. Система катапультирования является одной из боевых функций машины. Но ещё есть ракеты, автоматы в фарах или даже боевые лазеры. Нужно продумать, как все системы будут взаимодействовать между собой. Задать правильные вопросы команде и поделиться своим опытом и знаниями, чтобы она пришла к хорошему архитектурному решению. А ещё на реализацию всего этого безумства нужно найти людей, организовать их работу и выдержать поставленные сроки.
И вот мы добрались до вершины — CTO или, на местный лад, Q. Он определит общие технические требования к машине, включая специфические. Он тесно общается с заказчиками — руководством Ми-6 и самим Бондом. Поэтому знает, что спорткар должен уметь превращаться в подводную лодку, чтобы миссия прошла успешно.
Мой выбор
В качестве отправной точки для роста до мидла за год я беру джуна-новичка. Во-первых, это действительно хороший темп роста для разработчика. Во-вторых, большинство компаний готовы рассматривать на мидл-позиции кандидатов с коммерческим опытом от одного года. Ключевое слово — рассматривать. Про навыки, которые помогут пройти отбор, начнём говорить в следующей части.
Харды
Подобрались к самому интересному. Как и обещал, будет про технологии, но без конкретных названий.
Итак, на что стоит делать упор в своём развитии? Вот шесть главных аспектов.
Как улучшать навык
Возможно, вы когда-то слышали про принцип «Пять почему». Попробуйте применить его в разработке. Используете какую-то новую технологию и задайтесь вопросом, почему она подходит для решения этой задачи. Получив ответ: «Потому что она работает вот таким образом», изучите, почему она работает именно так.
А вот проводить ревью — это уже следующий уровень, который должен освоить мидл. Когда к вам попадает код другого человека, в первую очередь вы должны понять структуру программы на верхнем уровне. Отталкиваясь от этого, вы сможете подсказать человеку, что нужно исправить и улучшить.
Хороший код-ревьюер не просто ищет баги в коде. Он подсказывает, как сделать решение более оптимальным, лаконичным и красивым. Он делится своим опытом и хорошими практиками, а ещё следит, чтобы код соответствовал общим принципам написания кода в команде.
На самом деле алгоритмы и структуры данных полезны, потому что это очень фундаментальные вещи. В быстро меняющемся мире разработки они остаются неизменными. Мне кажется, что алгоритмы прежде всего стоит учить на прикладном уровне — понимать, в каких решениях коммерческой разработки они применяются и почему. Просто заучивать академические вещи не нужно — связывайте всё с практикой. Ваша цель — понимать причину и связь: почему и как это работает.
Знаете, почему сениор может сразу написать классное решение? Потому что он за свою карьеру совершил много ошибок. Много-много раз сделал что-то неправильно и теперь знает сотню способов, как делать не надо. Начинающий разработчик, наоборот, знает только несколько способов сделать так, чтобы работало.
Софты
Фуух, с хардовой частью разобрались. А что там про софты? Что это за зверь и зачем он нужен разработчику?
Ловите ответы. Софты — это все навыки, которые вам нужны в работе, не связанные напрямую с написанием кода. Недобор по софтам может нивелировать всю вашу гениальность в разработке.
Мягкие навыки важны, потому сейчас настали времена командной, а не одиночной разработки. Чтобы выводить на рынок хорошие технические решения и делать это в требуемые сроки, сил одного человека уже недостаточно. Команда разработчиков на длинной дистанции всегда обгонит гения-одиночку.
Бывает, что больше пользы команде может принести человек, который по техническим скиллам слабее, но сильнее в софтовой части. Например, потому что он умеет классно обосновывать свои решения, и это уменьшает количество конфликтов в команде, а разработка движется быстрее.
Про умение коммуницировать, наверное, и так все наслышаны. А что ещё из мягких навыков может понадобиться в разработке?