Как стать мидлом java
Перейти к содержимому

Как стать мидлом java

  • автор:

«Входить в IT неспеша» или как стать Middle Java Backend разработчиком минуя ступень Junior

Статья о том, как шаг за шагом при дефиците свободного времени обучиться и устроиться на работу сразу Middle Java разработчиком перескочив через Junior ступеньку, основанная на личном опыте, и о том, как мне это помогло, когда сразу после трудоустройства пришлось тянуть проект практически в solo.

Статья родилась как некий ответ на вопросы, которые мне часто задавали люди, находящиеся в таком же положении, как и был когда-то я, когда времени на обучение почти нет и хочется войти в IT кем-то выше, чем Junior разработчик.

Но сначала давайте пару слов о разнице между Junior и Middle

Если кратко, то всё сводится к разнице в знаниях, опыте в Java и фреймворках, способности эффективно решать задачи и самостоятельно и принимать небольшие проектные решения.

Для проведения более чёткой границы по hard skill’ам существуют матрицы компетенции, содержащие порядка сотни пунктов, которые чётко разграничивают что должны уметь Junior, Middle и Senior разработчики. К примеру, по одной такой матрице Junior должен как минимум знать monitor, wait/notify/notifyAll/sleep, synchronized, volatile, Thread, Future, Callable, основные Thread-safe коллекции, в то время как Middle должен к этому всему ещё знать ReentantLock, ReentantReadWriteLock, Standard Executors (Single-Thread, Fixed, Pooled), Scheduled Executor, Atomic (Integer, Boolean, etc), Concurrent collections, BlockingQueues.

Что было в моей жизни до IT

В школе учился в физмат классе. Всегда, мечтал стать программистом, но не верил в свои силы, поступил на ТехМаш и окончил универ с отличием став инженером в области машиностроения. Устроился CAE (Computer-aided engineering) инженером в российский филиал международной немецкой фирмы. Но в свои 30 лет понял, что хочу осуществить давнюю мечту и так начался мой путь в IT.

Почему я решил сразу стараться приобрести Middle компетенцию?

В 2017-2018 на рынке труда был переизбыток джунов, и некоторые эксперты заявляли, что на одну Junior вакансию может приходиться аж до 700 откликов! Естественно, это не повсеместно и один джун откликается ещё на несколько десятков вакансий. Но всё равно, конкурс был большой. Это впоследствии подтверждали те из коллег, кто трудоустраивался на свою первую работу в эти годы.

В это же время был ощутимый дефицит Middle специалистов и стали появляться курсы, которые утверждали, что сразу стать Мидлом реально. Я подумал, что за этим маркетинговым ходом всё же есть что-то рациональное и поэтому решил, что нужно попытаться сразу поднять планку компетенции выше уровня Junior, считая, что даже если по скиллам не буду соответствовать Middle, те знания, которые приобрету, чтобы его достичь всё равно будут весомым преимуществом среди других соискателей, что позволит легче пройти собеседование и трудоустроиться.

Как я учился

Что я использовал для обучения:

1. Учебники. Я так называю книги, которые содержат теорию, примеры, всё объясняется очень доступно, подробно и по ним удобно заниматься. Ярким примером такового я считаю «Изучаем Java» Кэти Сьерра, Берт Бэйтс. Она же Java Head First.

2. Пособия. Так я называю те книги, которые содержат много дельной информации, описание, примеры, но в отличие от учебников по ним крайне сложно заниматься и лучше их рассматривать больше, как вспомогательные учебные материалы. К таковым отношу Java SE 9 Базовый курс и Java SE 9 Вводный курс Кея Хорстманна.

В конце статьи я прилагаю перечень литературы, по которой учился сам и рекомендую другим.

3. Видеолекции. На просторах Youtube и других платформ есть куча циклов видеолекций, которые в максимально удобоваримом формате позволяют въехать в курс дела и местами даже более доступны для понимания, чем учебники и пособия.

Хотел бы выделить канал Алишева @alishevN, Школу ITProger @itproger и Уроки Java @husivm

4. Тренажёры. Это курсы, в которых проверка задачи происходит в автоматическом режиме, нацеленные, в основном, на практику, где теория хоть и есть, но по сути является вторичной:

4.1 JavaRush – наверное, самый популярный ресурс среди прочих подобных, на котором недавно также появился свой полноценный курс.

4.2. Stepik – очень хорошие мини-курсы с тренажёрами и мини-лекциями по Java. Особенно хороши курсы по SQL, помогающие быстрее набить руку в написании запросов.

4.3. LeetCode – ваш помощник по решению алгоритмических задач.

5. Полноценные курсы. Образовательные платформы предлагают обучение «профессии» Java разработчика от 6 до 15 месяцев. Многие из них как раз и заявляют, что сделают из соискателя сразу мидла. Самое главное отличие от тренажеров: проверка домашних работ учителем, которому если что можно задать вопрос.
До трудоустройства я проходил таких два:

5.1. SkillBox, «Java-разработчик (архив)». Так получилось, что я попал в тот момент, когда курс задеприкейтили. Дело в том, что выпускной работой, над которой приходилось корпеть в течение всего курса, было создание клиента Телеграма – Javagram, для написания которого нужно было изучать Swing что было практически бесполезно для бэкэндера в 2020-м. В определённый момент времени Javagram стало пилить крайне сложно, API телеги менялось, курс отправили в архив и создали новый, который куда лучше, но я уже в него не попал, а в старом завяз, так и не пройдя до конца.

От тех, кто проходил уже новый курс слышал, что он крайне неплох, но я, увы, это не могу оценить.

5.2 JavaOnlineProjects, «Topjava». В него я попал автоматически после тестового задания на 36-м уровне в JavaRush. На мой взгляд, самое лучшее по соотношению цена/качество что есть на рынке. По окончанию курса в моём портфолио было 2 проекта на самом востребованном стеке Spring’а.

Его я рекомендовал и рекомендую всем, но с одной оговоркой. Мне, как и большинству ребят, кто его проходил, он показался довольно сложным, что на самом деле отчасти хорошо, потому как когда что-то даётся с трудом, усвоение материала идёт лучше.
Тем ни менее, без должной подготовки многие сливаются и идут на повтор, либо вообще не доходят до конца.

Лучшим способом этого избежать – это пройти JavaRush до конца, изучив все материалы и разделы, взять ещё несколько курсов из JavaOPs, либо аналогичные от другой платформы.

6. Статьи на Хабре. Особенно полезны и интересны статьи образовательных компаний и преподавателей курсов. В некоторых таких статьях вынесены почти полностью лекции, которые преподаются на курсах платформы. Хотя очень часто люди и не относящиеся к каким-то образовательным компаниям пишут крайне хорошие статьи для новичков. Например, вот эта.

Если расписать путь по периодам:

В 2018-м я начал изучать Java по учебникам: выполнял каждое упражнение, писал каждый код, что встречал. Видеолекции обычно включал фоном при возможности.

В 2019-м продолжал учиться, стал кодить на тренажёрах, купил подписку на JavaRush.

В 2020-м учебники сменились пособиями, созрел и взял курс в SkillBox.

В 2021-м комбинировал разные практики в обучении и проходил стажировку в JavaOPS и доводил свою компетенцию до уровня Middle.

Почему получилось так долго?

У меня был дефицит времени, поэтому на обучение у меня уходило приблизительно 1-2 часа в день на всех этапах, кроме стажировки. Её совмещать с работой я не мог, поэтому пришлось уволиться, зато на стажировку и параллельное обучение у меня уходило по 5-6 и более часов в день.

Если брать только период активности, то при вышеупомянутых 1-2 часах занятий в день у меня ушло на всё про всё где-то 3 года.

При должном наличии времени занимаясь по 2-4 часа в день, данный путь можно спокойно осилить за 1,5 года.

Собеседование

Бытует мнение, что современное собеседование это не про работу, а больше похоже на викторину. Такое отношение очень полезно, чтобы сэкономить себе нервы и если мы говорим о таких конторах как Яндекс, то это почти так и есть, но есть и много других, в которых собеседование проводят люди, которые заинтересованы получить себе в команду не победителя викторины, а человека, с которым им было бы комфортно работать и который бы справлялся со своими задачами самостоятельно – именно таким человеком я и старался стать.

Резюме

В резюме я не накручивал опыт, но стажировку указывал как первый опыт работы, что считаю правильным, естественно не скрывая при этом, что опыт не был коммерческим. Старался быть кратким и не лить воды, придерживаясь мнения, что резюме должно умещаться на одной странице.

Тестовое задание

Обычно это было стандартное CRUD Spring Boot приложение с некой БД.
В этом не видел ничего сложного и страшного и если был заинтересован в вакансии, то всегда выполнял его.

С тем уровнем практики, который у меня сложился при таком обучении на выполнение задания обычно уходит 1-3 дня.

Теоретическая часть технического интервью

Самый распространённый способ проверки знаний интервьюера в форме вопрос-ответ.
Когда не бежишь галопом по Европам, а все знания укладываются долго и структурированно, то и подготовка к ней занимает всего несколько дней.

Но самое главное – это не столько ресурсы, сколько уверенное знание и понимание всех основных и ключевых моментов в Java и фреймворках и создание своего собственного мини-конспекта для подготовки.

Практическая задача на знание синтаксиса и работы Java. (опционально)

Обычно задачка на несколько строк кода, предусматривающая знание работы JVM.
Что будет выведено, упадёт ли приложение с ошибкой и тд…

Алгоритмическая задача (опционально)

Обычная вещь на интервью в Яндекс, но данную практику стали перенимать и другие работодатели. Так что рекомендую к этому подготовиться. Лучший ресурс для этого – LeetCode.

Написание SQL запроса (опционально)

Для этого рекомендую учебник по SQL и тренажёры. Плюс ещё есть «шпаргалки», где вся информация о запросах очень коротко и популярно описана.

Задача из практики в реальной жизни (опционально)

Такие часто бывают и их главная цель понять, как будет действовать интервьюируемый, как он будет пытаться решить аналогичную уже на работе.

Из 10 собеседований, пройдённых за пару недель, я получил оффер по половине почти сразу и ещё один прилетел в течение месяца.

Если не считать первые два блина комом, то самое минимальное как меня оценивали – это Junior+ (подчеркнув, что это только лишь из-за отсутствия коммерческого опыта), на всех остальных меня оценили как мидла!

Я выбрал дочернюю фирму крупной российской корпорации, в одну из команд которой искали замену ушедшему одному из трёх Джава разработчиков. Когда я спрашивал потом, почему из всех претендентов выбрали именно меня, сказали, что из множества претендентов «я был на голову выше остальных».

Трудоустройство

Взяли меня именно Middle Java разработчиком.

Мне обещали (более того, это даже прописали в трудовом договоре) возможности роста, бесплатное обучение, выполнение работы «с минимальной помощью ментора» и кучу других фишек.

Поэтому зарплатные ожидания я занизил, что было моей ошибкой, и лишь потом узнал, что мог просить в 1,7 раза больше! (верхний порог моей вилки).

Онбординг был классный, но, когда я вышел после него, оказалось, что вслед за разработчиком, на место которого я устраивался, уволились и остальные два Джависта.

Оказывается, ещё год назад в команде было всего 5 разрабов, но не находя общий язык с начальством, все они ушли один за другим.

Я остался единственным разработчиком в команде с владельцем продукта и ещё двумя аналитиками. А через пару месяцев должен был быть релиз первой версии ещё сырого продукта, который пилили уже больше года.

Мои коллеги мидлы из других компаний и подразделений, с которыми я познакомился во время онбординга были в шоке. Друзья и знакомые рекомендовали сразу писать заявление и уходить.

Но я не уволился, чтобы не подводить тех, кто остался в команде и доказать, в первую очередь себе, что стал мидлом не только по оценке на собеседовании и графе текущей должности. И я сдюжил, хоть и было нелегко.

Уже через несколько месяцев нам дали зелёный свет, и я уже был по другую сторону собеседования, чтобы набрать себе в помощь ещё двух ребят.

Спустя два года после трудоустройства был сделан новый функционал, сдано ещё несколько релизов, проект был допилен, отшлифован и теперь я уже мог спокойно его покинуть.

Перед увольнением высказал пожелание, чтобы вместо меня выделили ставку и наконец‑то взяли Сеньора в команду, на что владелец продукта крайне удивился: «А ты разве не Сеньор?». Это мне придало сил и уверенности и им я как раз и собираюсь в ближайшее время стать, но для этого надо учиться, учиться и ещё раз учиться.

О том, что не ушёл в трудную минуту, не жалею, это был очень хороший опыт. Тех, кто это сделал до меня тоже не виню. Потому что действительно на себе ощутил ту ситуацию, в которой они отчасти были: проблемы с повышением грейда и ЗП (помимо корректировок по инфляции) То нет ставки, то кормят завтраками, то вот уже договорились, но меняется руководитель, потом руководитель руководителя, то всех переводят из одной структуры в другую и, в связи с этим все значатся в новой должности и невозможно никак повысить, потому что в системе это можно делать не ранее чем через полгода после того, как вступил в новую должность. Та же самая проблема была с обучением, которое я так и не мог получить и приходилось брать курсы уже за свои деньги.

Вот так я решил изначально стать Middle Java разработчиком, закончил курс, автор которого не безосновательно утверждал, что готовит именно Middle разработчиков, после был оценён как Middle на собеседовании, официально им трудоустроился, что было прописано в личном профиле, и в этой роли, по сути, в проекте и оказался, когда как единственный разработчик решал задачи самостоятельно и принимал небольшие проектные решения.

Задавался вопросом, а быть может надо было пытаться пройти стажировку и трудоустроиться Junior разработчиком раньше, а через пару лет опыта как раз бы и пришёл к Middle разработчику? — Возможно.

Знаю коллегу, который завершил ту же самую стажировку что и я и устроился в ту же фирму, что и я, но вот уже прошло почти 2 года, а он всё ещё Junior Java разработчик.
Так что не всё так однозначно.

Выводы, которые я сделал пока проходил этот путь

Нет никаких непреодолимых препятствий для того, чтобы стать разработчиком!:

  • Дефицит времени не делает цель недостижимой, он просто отодвигает её во времени. «Нет времени» зачастую просто отговорка. Я знаю людей, у которых по 2-е, 3-е детей, из которых есть совсем маленькие карапузы, требующие много времени и внимания. Но даже это их не останавливало, и они всё равно находили время для того, чтобы учиться.
  • Возраст тоже не является барьером. У меня в потоке на курсе было двое студентов, которых взяли на их первую работу джунами в 46 и 47 лет, и я уверен, что это не предел!
  • Расположение тоже не помеха, сейчас есть удалённые вакансии и даже переезжать никуда не нужно, что тоже на самом деле при большом желании не является преградой.

Немного ложки дёгтя

Не хочу быть неправильно понятым. Непреодолимых препятствий хоть и нет, но получается, увы, не у всех. Помимо желания стать разработчиком нужно обладать ещё упорством, целеустремлённостью, способностями и мотивацией. Не говоря уже о том, что то, чем человек занимается должно как минимум нравиться. Отчасти из‑за этого до конца курсов доходят не все.

Недавно подсчитал, из 13 моих друзей и знакомых, которые мне говорили, что хотят стать разработчиками, только половина начала обучение, а до трудоустройства дошёл пока только один.

И ещё несколько рекомендаций сомневающимся как не ошибиться с выбором пути

1. Первоначально понять, а действительно ли хочется быть разработчиком, ведь в IT есть не только программисты.

2. Если да, то определиться с областью, в которой хочется вести разработку. (front, back, gamedev, …)

3. Не покупать сразу курсы за OverДохрена денег, а приобрести учебник «для начинающих», «для чайников», «за 24 часа» и просто попробуйте. Если понравилось – Ваше. Есть сомнения – Нет.

4. Ознакомиться, какие есть RoadMap’ы, понять, какой должен быть путь обучения, взять уже имеющуюся, либо откорректировать и сделать свою.

5. Использовать любую возможность писать код по учебнику и в тренажёрах, учить теорию: установить на смартфон JavaRush, Stepik, Sololearn, фоном включать лекции, когда есть возможность, с собой носить учебник или хотя бы Карманный справочник, брать его в поездки.

6. Выучить основы Git’а, зарегаться на ГитХабе и начать уже писать код и выкладывать его.

7. Выбрать курсы с умом. В хорошем курсе помимо лекций и достаточных учебных материалов должна быть проверка домашних заданий, возможность задать вопрос и самое главное, в его лекциях и выпускной работе должен быть востребованный стек технологий, который легко гуглится среди вакансий на hh.ru и Хабр Карьере.

8. Если оценивают как мидла – проси ЗП как у мидла!

9. При подготовке к собеседованию лучше самому вести конспект из наиболее сложных вопросов и тех, которые вызывали затруднение на предыдущих интервью.

10. Зачастую соискатели в резюме и на собеседованиях пытаются создать такой образ, которому и близко не соответствуют: приписывают несуществующий опыт, навыки и знания. Я всегда считал куда лучшей практикой и в резюме, и на собеседовании пытаться максимально быть честным и, если ещё с чем-то не сталкивался и не знаешь, честно признаваться в этом и стремиться всегда соответствовать тому образу, который заявлял, иначе это может сыграть против тебя.

Ещё пару слов напоследок

Рынок постоянно меняется. Бум курсов и автоматизации многих процессов разработки постепенно сводит на нет дефицит людей с навыками уровня Junior. И на этом фоне, на мой взгляд, люди с навыками уровня Middle, даже если у них нет как такового опыта работы, будут в разы более востребованы.

Полный список литературы, который мне был полезен на протяжении всего обучения

  1. Java 9 (8) для чайников | Барри Берд — Книга именно для тех, кто вообще ничего не знает о программировании. Всё очень хорошо и доходчиво объясняется и разжёвывается.
  2. Изучаем Java | Кэти Сьерра, Берт Бэйтс. Она же Java Head First. – Это, пожалуй, лучший учебник, который не даст скучать: Пазлы, ребусы, задания и всё для наилучшего понимания и усвоения материала.
  3. Java для всех (Программирование на Java для начинающих) | Алексей Васильев – Не так всё разжёвывается, как в предыдущем, но оригинал книги автор писал на русском, что ликвидирует возможные косяки перевода. Плюс немного больше материала.
  4. Java за 24 часа | Кейденхед Роджерс – Прекрасный учебник. Несмотря на хайповое название действительно содержит кучу приличных и интересных вещей.
  5. Java SE 9 (8) Базовый курс | Кей Хорстманн – Книги содержат все моменты теории Java и хорошо и лаконично её описывают. Ничего лишнего.
  6. Java SE 9(8) Вводный курс | Кей Хорстманн – Книги содержат все моменты теории Java которые появились именно начиная с 8-й версии.
  7. Java Concurrency на практике | Брайан Гетц – Однозначно лучшее пособие по многопоточности в Java.
  8. SQL для чайников | Аллен Тейлор – Из той же серии, что и Java 9 (8) для чайников. Доступно крайне простым языком.
  9. Spring Boot 2.0 | Фелипе Гутьеррес – На мой взгляд, это лучшая книга по Spring Boot с примерами для быстрого старта.
  10. Spring 6 (5) для профессионалов | Юлия Козмина и другие – полное, хоть и не исчерпывающее, руководство по Спрингу. Единственное, в виду некачественного перевода, без слёз её читать на русском нельзя. Лучше пользоваться оригиналом.
  11. Паттерны объектно-ориентированного проектирования | Банда четырёх. – Самая базовая и известная книга про шаблоны проектирования.
  12. Java 8 Карманный справочник | Роберт и Патрисиа Лиугуори – очень полезная вещь, но не как справочник, а как краткий конспект для подготовки к собеседованию.
  13. Java. Эффективное программирование | Джошуа Блох – это вообще классика, которая должна быть в библиотеке любого Java разработчика.
  • Java
  • Учебный процесс в IT
  • Карьера в IT-индустрии

Что прокачать джуниор разработчику, чтобы стать мидлом за год

Разбираемся, над чем стоит работать, если вы джуниор, который хочет стать мидлом.

Реальные требования к кандидатам в плане инструментов разработки сильно различаются в зависимости от компании и задач. В этой статье поговорим про фундаментальные навыки, которые актуальны для роста в бэкенд-разработке и разработке в целом.

Роман Моисеев, менеджер продукта на программе «Мидл Python-разработчик» в Яндекс.Практикуме, рассказывает, над чем стоит работать, если вы джуниор, который хочет стать мидлом.

Роман Моисеев
менеджер продукта на программе «Мидл Python-разработчик» в Яндекс.Практикуме

Четыре грейда джуниор-разработчика

В индустрии нет единого понимания грейдов джуниор–мидл–сениор. Некоторые считают, что так разработчиков делить нельзя. Тем не менее, чтобы рассуждения в этой статье были структурированными, необходимо понимание, кто такой джун.

Ниже вы найдёте условное разделение джуниорства на несколько этапов. Это деление отражает не только эволюцию начинающего разработчика, но и разницу во мнениях разных людей, что должен уметь джуниор.

Первый — стажёр. Это ещё не полноценный джуниор-разработчик, скорее его MVP. На этом уровне человек знает основы языка программирования, его не нужно учить синтаксису. Однако применять этот язык программирования для решения реальных задач он ещё не умеет. Чтобы дать ему задачу в работу, её нужно расписать по шагам: «сделай A, B и С, возьми такую технологию и используй вот эту вот функцию».

Стажёры обычно занимаются задачами, которые не критичны для проекта. Это может быть техдолг, оставшийся с прошлых спринтов, или что-то относящееся к внутренним проблемам, а не фичам конечного потребителя. Если стажёр ошибётся, компания не потеряет деньги. Но если сделает то, на что не хватает времени у более старших разработчиков, принесёт ощутимую пользу проекту.

Второй — джун-новичок. Первая стадия развития джуна: первый оффер на фултайм, первый рабочий месяц и первые боевые задачи. Такой разработчик обладает достаточным набором теоретических (академических) знаний, чтобы делать простые задачи без супердетального описания. Он знает, как работать с документацией и найти в ней ответ на свой вопрос.

Тем не менее процесс коммерческой разработки он знает скорее теоретически, поэтому ошибается на разных этапах написания кода. Он часто приходит к старшим коллегам и говорит: «У меня что-то поломалось. Не могу это сделать. Помоги!» И это нормально.

Главная задача джуниор-разработчика — набивать собственные шишки и учиться на них. Здесь лучше вовремя задать вопрос, чем не показать никакого результата.

Третий — средний джун. Уже прошёл испытательный срок, освоился в компании и процессах командной разработки. Например, знает, какие agile-ритуалы используют в команде и почему. Теперь ему можно давать задачу и не контролировать её выполнение в рамках одного рабочего дня.

Самостоятельно декомпозировать задачи такой разработчик ещё не умеет, но вопросы задаёт более глубокие и конкретные: «Я попробовал сделать так и так, но не вышло, выдаёт ошибку. Нужна помощь, чтобы понять, что идёт не так и где ещё поискать решение».

Четвёртый — крепкий джун. В эту категорию обычно записывают ребят, которые по формальным техническим навыкам уже мидлы или очень близки к ним. Единственный их пробел — нет большого опыта в решении бизнес-задач. Сюда же попадают и выпускники топовых технических вузов. Они многое умеют, и хотя коммерческого опыта разработки у них нет, они быстро дорастут до сильных мидлов за счёт крепкой академической базы.

В качестве отправной точки для роста за год я буду рассматривать джуна-новичка. По двум причинам:

  • по моему опыту, рост за год до мидла с этого уровня — это очень хороший темп для разработчика;
  • многие компании готовы рассматривать кандидатов с опытом от года на позицию мидлов. Главное в этой фразе — «рассматривать»: отбор и заветный оффер это не гарантирует.

Эволюция сложности задач

На каждом грейде задача, которая попадает разработчику, становится всё менее детализированной. Давайте рассмотрим процесс постановки задачи на немного банальном, но хорошем примере — приготовление яичницы. Для стажёра старший разработчик разложит все ингредиенты на столе, разогреет сковородку и даст чёткую инструкцию, что делать:

  1. Разогреть в сковороде немного подсолнечного масла.
  2. Разбить и бросить в неё два яйца.
  3. Немного посолить.
  4. Подождать 3 минуты.
  5. Яичница готова!

Если вдруг стажёр разобьёт яйца, и скорлупа попадёт на сковородку, сениор объяснит, что так делать нельзя.

По мере роста уровня разработчика растёт уровень самостоятельности. Мидлу уже достаточно сказать: «Нужно сделать яичницу». Он уточнит, какой вид яичницы нужен, например, нужно ли добавить сыр и помидоры, найдёт все ингредиенты и приготовит вкусный завтрак.

Утверждение про рост самостоятельности верно не только для роста с джуна до мидла, но и для роста в разработке в целом. Чем более сложную задачу человек способен решить самостоятельно, тем выше его уровень.

Кто такой мидл

Как я уже говорил, главное отличие мидла от джуна — первый умеет решать свои проблемы самостоятельно. Когда у него есть задача, он всегда сначала пытается решить её самостоятельно. Если появляется проблема, которую не получается решить, и есть риск не уложиться в сроки — он успеет это понять и обратиться за помощью к старшим коллегам. В идеале — со своим предложением, как сделать так, чтобы уложиться в дедлайн.

Чисто сениорских задач в разработке мало. Большинство компаний решает достаточно стандартные задачи. И вот с этими задачами мидл должен уметь справляться самостоятельно. Для этого нужен достаточный опыт и накопленный багаж совершённых ошибок.

Hard skills мидла

Перед тем, как перейти непосредственно к списку требований, обозначу три важные вещи:

  1. Здесь не будет конкретных технологий, которые нужно изучить. Во-первых, требования к технологиям в разных компаниях очень сильно отличаются. Во-вторых, если главный критерий мидл разработчика — «самостоятельность в решении своих задач», полезнее всего выделить фундаментальные вещи, которые помогут к этой самостоятельности прийти.
  2. Это не список «сделай 10 конкретных шагов и стань мидлом». К сожалению, такого волшебного пути нет. У каждого разработчика он свой. Советую читать требования ниже так: «Чем больше галочек я набрал, тем более вероятно, что я мидл».
  3. Вы можете переработать этот список в свой чек-лист действий для роста до позиции мидла. Для этого вам понадобятся навыки приоритизации и декомпозиции цели. Небольшой спойлер: это и есть важные навыки мидл-разработчика.

Какие качества ждут от мидл-разработчика

Понимание используемых технологий

Для мидла инструменты, которые он использует в работе, и разработка в целом не должны быть магией. Джуниору простительно не задумываться над тем, как работают какие-то конструкции языка, а просто писать рабочее решение. Мидл должен задаваться вопросом, как работает программа, которую он пишет. Он должен уметь объяснять её простыми словами, чтобы другой человек понял.

16 вопросов мидлу: что должен знать Middle-разработчик

Чтобы прокачать этот навык, как можно чаще задавайте себе вопрос, как работают вещи, которые вы используете. Вопросы должны начинаться со слов «как» и «почему». Приведу пример с базой данных:

  • Почему подходит для решения поставленной задачи?
  • Как работают индексы в ?
  • Почему они работают именно так?

Каждый новый вопрос будет уводить вас на уровень ниже и давать понимание, как устроена разработка. Как глубоко копать? Универсального ответа нет, всё зависит от того, на каком уровне вы хотите разобраться с технологией. Попробуйте начать с двух–трёх вопросов и посмотрите, как пойдёт.

Прохождение и проведение code-review

Прохождение код-ревью — в большей степени джуниорский навык. Технических требований там нет, скорее софтовые: уметь принимать обратную связь, не обижаться на критику и вытягивать из фидбека полезные для себя вещи.

Как влюбить в себя своего код-ревьюера: правила подготовки к code review

Код-ревью — важная практика для роста разработчика. Если у вас в компании нет ревью кода, найдите человека, который будет давать обратную связь на то, что вы делаете. Идеально, если этот человек будет уровнем выше. Без практики код-ревью вы не сможете адекватно оценивать, насколько хороший код пишете.

Проведение код-ревью, напротив, — во многом техническая задача. Умение разобраться в чужом коде распадается на два навыка: понять общую структуру программы и увидеть места, где решение можно сделать более оптимальным, лаконичным и красивым. А ещё код-ревью — это отличная возможность поделиться своим опытом.

Полезно делать код-ревью собственного кода, когда рабочее решение, выполняющее поставленную задачу, уже написано. Вернитесь к коду, подумайте над другими возможными реализациями. Почему они лучше или хуже?

Умение декомпозировать задачи

У начинающих разработчиков часто есть желание начать писать код сразу, как они получат задачу. Мидл должен сначала остановиться и подумать, как он будет выполнять задачу: разбить её на несколько последовательных этапов и ответить на вопрос, почему он сделал именно такой план. Обычно на написание кода у мидла уходит больше времени, чем у джуна.

Кроме улучшения качества кода, такой подход имеет два косвенных эффекта. Во-первых, вы тренируетесь аргументировать свои решения. Когда вас спросят, как работает ваш код, у вас уже будет готовый ответ. Во-вторых, понимание структуры своего кода помогает разбираться в чужом — ведь это обратные процессы. В первом случае вы делаете структуру, потом её реализуете. Во втором получаете реализацию и раскладываете её на отдельные компоненты.

Насмотренность

Следите за тем, что сейчас происходит в индустрии. Какие технологии и как развиваются, где и почему применяются, какие есть хорошие практики и почему они работают. Смотрите не только за успехами, но и за ошибками — это источник вашего роста. Сеньор за свою карьеру совершил и увидел много ошибок и знает много способов, как делать не надо. Кругозор начинающего разработчика уже и сфокусирован больше на том, чтобы найти хотя бы пару способов сделать так, чтобы сработало.

Развивайте насмотренность через образование, собственные проекты, технические статьи и обмен опытом с коллегами по цеху. Чтобы принимать хорошие решения самому, надо увидеть много плохих и хороших решений других разработчиков.

Понимание алгоритмов и области их применения

Алгоритмы ― это очень холиварная тема, потому что в повседневных задачах они используются очень редко. Тем не менее это единственная фундаментальная вещь, которая остаётся неизменной в быстро меняющемся мире разработки.

Рассматривайте алгоритмы и структуры данных именно как фундаментальную базу. Не мучайте себя академическим подходом — приземляйте алгоритмы на практику, изучайте их применение в коммерческих технологиях. Понимайте причинно-следственные связи, почему те или иные вещи работают именно так, как работают. Не зазубривайте бинарный поиск просто потому, что «надо знать алгоритмы».

Умение писать скучный код

Задумайтесь, насколько код, который вы пишете, будет понятен человеку, который видит его впервые. Помогут ли ему ваши нестандартные решения? Мидл всегда выберет простое решение, вместо того чтобы выпендриться.

Soft skills мидла

Что такое мягкие навыки в разработке? Самый простой ответ: все навыки, которые нужны в работе, но не связаны напрямую с написанием кода. Опасность такой формулировки в том, что можно подумать, будто софты — это что-то вторичное и не очень важное. На самом деле это не так.

Сейчас время командной разработки. Рынок требует хорошие, масштабируемые технические решения в довольно сжатые сроки. Это невозможно вытянуть в одиночку. Команда в долгосрочной перспективе всегда обойдёт гения-одиночку. Именно поэтому пробелы в софтовой части могут нивелировать ваши технические навыки в глазах работодателя.

Какие мягкие навыки ждут от мидл-разработчика

Самостоятельность

Это ключевой навык мидл-разработчика. Вы должны уметь самостоятельно решать свои задачи и проходить полный цикл написания кода: получение задания и уточнение требований, декомпозиция подзадачи, реализация в коде, тестирование, прохождение код-ревью. Принятые решения по задаче мидл должен уметь аргументировать и отстоять перед другими разработчикам.

Мидл не требует микроменеджмента. Контроля раз в день с формулировкой «как у тебя дела, что делаешь сейчас?» достаточно, чтобы быть уверенным, что задача будет выполнена.

Умение видеть проблему бизнеса в технической задаче

Мидл должен понимать, что его главная задача ― не просто писать код. Разработчику платят за техническое решение бизнес-задачи.

Бывают ситуации, когда нужно донести до команды факт, что задачу делать вообще не нужно. Или нужно, но не с поставленными изначально требованиями.

Например, вы видите, что на реализацию текущих требований команда бросает много важных ресурсов, но есть более простое решение. Чтобы донести свои мысли до коллег, понадобится не просто умение доказывать свои технические решения другим разработчикам. Нужно будет получить информацию от нетехнических участников команды и объяснить им технические ограничения.

Увлечённость разработкой

Покажите будущему тимлиду, что разработка вас драйвит. Объясните, почему вы делали проекты и задачи, которые записаны у вас в резюме. Даже тривиальные и обыденные вещи можно раскрыть через призму выводов и полученного опыта, а не с позиции «я просто писал код на Django на последней работе».

Как рассказать о задачах, которые вас действительно не драйвили, и не обмануть собеседника? Расскажите о том, какими задачами вы точно не хотите заниматься. Это тоже выводы и опыт, которые показывают вашу осознанность. Это ещё и возможность показать свои собственные pet-проекты, где вы реализовывали интересные вам задачи.

Саммари и заключение

  1. Единого понимания грейдов разработчиков в индустрии нет, и это нормально: разные команды выдвигают разные требования в зависимости от своих задач.
  2. Главный критерий роста разработчика — ответственность и сложность задач, которые он может решить самостоятельно.
  3. Мидл должен быть самостоятельным разработчиком и решать большинство падающих на него задач без помощи старших разработчиков.
  4. Фундаментальные навыки вроде умения разобраться с новым инструментом часто важнее, чем опыт работы с конкретной технологией.
  5. Сейчас век командной разработки, поэтому софты не менее важны, чем харды.

Следите за новыми постами по любимым темам

Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.

Курс Java c нуля

Java – универсальный язык программирования. На нем пишут серверную часть программ (backend), которая хорошо работает на разных платформах. Это базовый язык для продуктов Google, Microsoft, Facebook, Netflix, Spotify, LinkedIn, Amazon, Uber

$2825

Java – топ

230+ вакансий

Работа на удаленке

Интересные проекты

Лучшие условия

Для разработчика на Java всегда полно вакансий и безграничные карьерные перспективы. На курсе Java online ты освоишь профессию с нуля за 10 месяцев и сможешь работать в топовых IT-компаниях.

Записаться на курс

Что делает Java-разработчик

Это программист, который разрабатывает серверную часть веб-сайтов, программ и приложений. Мы пользуемся ими каждый день, когда работаем на компьютере, сидим в браузере, открываем смартфон или даже включаем мультиварку

Java – не только про компьютер. На Java работают миллионы гаджетов: от смарт-часов и игровых приставок, до умных домов и электрокаров. Это основной язык разработки в сфере интернета вещей

Записаться на курс

Программа курса

Что нужно знать Java-разработчику? Ответы ниже

Java Core

Начинаем с основ, а точнее, синтаксиса. Говоря образно, учим алфавит Java, пробуем составлять простые слова и предложения. В это время вы с командой начнете работать над первым проектом

Темы

  • Обзор языка Java, знакомство с Git
  • Переменные Java, типы данных, операторы
  • Массивы, условия, ввод из консоли
  • Циклы
  • ООП, классы, методы
  • Конструктор, блоки инициализации, внутренние классы
  • Работа со строками. Immutable objects
  • Интерфейсы и перечисления
  • Дженерики и коллекции
  • Потоки ввода-вывода. Работа с файлами
  • Функциональное программирование, Stream API
  • Многопоточность
  • Web, протоколы
  • +1 командный проект

Java Developer

От алфавита – к произведениям. Учимся работать с библиотеками, фреймворками и грамотно писать код. До конца курса вы с командой создадите вторую полноценную программу, которую сможешь положить в свое портфолио

Темы

  • Системы сбора и управления зависимостями
  • Unit testing
  • Реляционные СУБД. Язык SQL
  • Основы Java DataBase Connectivity (JDBC)
  • Расширенная работа с JDBC
  • CRUD, миграции баз данных
  • Клиент-серверная архитектура, протокол HTTP
  • Сервлеты: основы
  • Сервлеты: Cookies, Templates, Front Controller
  • ORM. Hibernate
  • Hibernate Entity Mapping. HQL
  • Spring Boot: Core
  • Spring Boot: MVC
  • Spring Data
  • Spring Boot: Security
  • CI/CD-процессы
  • +1 командный проект

Soft skills

Чтобы обойти других джунов, прокачаем твои мягкие навыки, карьерные навыки, подтянем инглиш на живых занятиях. Также подскажем, как найти компанию мечты и порекомендуем тебя нашим партнерам

Темы

  • Философия Agile
  • Методология Scrum
  • Работа в команде
  • Тайм-менеджмент
  • Аналитика проектов
  • English speaking club
  • Работа с EnglishDom Words
  • Занятия по трудоустройству
  • Составление грамотного резюме
  • Создание страницы на LinkedIn
  • Написание мотивационного письма
  • Площадки для поиска работы
  • Подготовка к HR-интервью
  • Подготовка к техническому интервью
  • Коммуникативные навыки
  • Тестовые собеседования

Проекты студентов

Подобные проекты в портфолио – твой билет в IT-сферу

Вебзастосунок Crypto-Benefit

Веб-приложение Crypto-Benefit

Группа Java 9 (online)

Во время обучения Java Core студенты создали веб-приложение для мониторинга криптовалютного рынка. Пользователь может отслеживать цены и смотреть динамику роста 9 популярных криптовалют в реальном времени. Также на сайте работает удобный поиск и сортировка.

  • Первый командный проект
  • Java 8
  • Maven
  • MySQL
  • Hibernate
  • Spring Boot
  • Spring Security/Email/REST
  • Thymeleaf
  • Jsoup
  • some crypto API’s

проєкт Currency bot

Currency bot

Группа Java 8 (online)

Приложение в виде Телеграм-бота, который сообщает о текущем курсе евро и доллара в Украине. Студенты добавили функцию выбора валюты и банка (Приват, Моно, НБУ). Также здесь можно выбрать время и настроить ежедневные оповещения. Управлять этим ботом очень просто: нажимаешь кнопку в чате и он мгновенно выполняет запрос.

  • Первый командный проект
  • Java 11
  • Maven
  • Telegram bots

Вебзастосунок E-Dobavki

Веб-приложение E-Dobavki

Группа Java 8 (online)

Это сервис для поиска информации о пищевых добавках. Пользователь может узнать о том, как разные вещества влияют на организм и где их используют. На сайте работает поиск добавок по коду и названию, а также сортировка по трем категориям.

  • Второй командный проект
  • Java 11
  • Maven
  • H2 (in memory)
  • Hibernate
  • Spring Boot
  • Thymeleaf
  • Spring Security/REST
  • Jsoup
  • additives API

Преподаватели курса

Java-разработке обучают сотрудники топовых IT-компаний

Іван Мельничук

Иван Мельничук

Director of Engineering в GoIT

15 лет в IT, программирует еще со школы. Это именно Иван написал программу курса Java. Сейчас он руководит 15 инженерами, которые пишут LMS-платформу GoIT, где учатся наши студенты. Выпустил уже 8 групп и рад, что его студенты работают в топовых компаниях

Софія Бондаренко

София Бондаренко

Senior Java Developer в GlobalLogic

Учитель математики в прошлом и настоящий генератор идей. На старте карьеры разработала обучающую онлайн-игру, которой заинтересовалось крупное издательство. С помощью крутого кода может ускорить загруженные страницы платформы в 10 раз

Саша Макаров

Саша Макаров

Senior Software Engineer в DigiAge inc.

Работает в американской компании, где разрабатывает страховые сервисы для рынков США и Канады. Также создавал веб-приложения в сферах ритейлинга и страхования. А еще Саша выступает ментором для людей, которые только запускают свои стартапы

Саша Слесар

Саша Слесар

Senior Java/Kotlin Developer в Overonix

13 лет в IT, пишет на Java и Kotlin. Сейчас разрабатывает архитектуру и оптимизирует работу интегратора платежных систем. Как-то на занятии забыл расшерить презентацию. Студенты пытались воспринимать тему на слух, но продержались всего 10 минут

Саша Янов

Саша Янов

Team Lead в аутсорсинговой компании

Разрабатывает архитектуру приложений для банковской и секьюрити-сферы. Преподает уже 3 года. На своем проекте Саша работает с двумя выпускницами GoIT и до сих пор в шоке от того, какая крутая база знаний у них после курсов

Курсы Java в GoIT – это обучение на практике и с поддержкой профессиональных менторов. Они помогут разобраться в теории, всегда подскажут и вдохновят. Но главная прелесть курса в том, что ты получаешь фидбэк по заданиям. А значит, растешь быстрее

Записаться на курс

Как мы учим

Фишки обучения на курсе Java online

Кабинет my.goit

Прямые эфиры

Общение в чате

Крутые менторы

Работа в IT

Кабинет my.goit

рабочая среда студентов и твой пожизненный доступ ко всем лекциям и материалам курса

Прямые эфиры

2-3 живых вебинара в неделю по вечерам, которые можно пересматривать в записи

Общение в чате

здесь ты получаешь фидбэк по заданиям и общаешься со своей группой

Крутые менторы

каждый день с тобой на связи, помогают с домашками и вдохновляют

Работа в IT

карьерный сервис GoIT помогает сделать резюме, искать вакансии, готовит к собеседованиям

Ты + GoIT = 100% совпадение!

Мы точно подходим друг другу, если тебе близки наши принципы

70%
практика

  • Работы в портфолио
  • Командные проекты
  • Личные проекты

20%
обратная связь

  • Автопроверка кода
  • Работа с ментором по ДЗ
  • Общение в чате с группой

10%
теория

  • Конспекты по всем темам
  • Живые занятия (вебинары)
  • Обучающие видео

GoIT – партнер ассоциации IT Ukraine. Это больше 100 компаний, которые открыты для наших студентов. Мы гордимся тем, что 80% выпускников находят работу в первые месяцы после курса

Записаться на курс

Твоя неделя на курсе

Занятия проходят онлайн по вечерам, их удобно совмещать с работой

  • Понедельник

Читаешь конспект, смотришь видео

  • Вторник, 19:30–21:30

Смотришь вебинар с преподавателем

Director of Engineering в GoIT

Работаешь с ботом (автопроверка кода)

  • Четверг, 19:30–21:30

Смотришь вебинар с преподавателем

Senior Java Developer в GlobalLogic

Делаешь ДЗ, получаешь фидбэк от ментора

Senior Java Developer в Webxloo

Делаешь ДЗ и готовишься к новому занятию

Senior Java Developer/DevOps в Luxoft

Вопросы и ответы

Если все еще останутся вопросы, закажи бесплатную консультацию

  • Можно оплатить обучение частями? Да, можно. Мы поможем тебе подобрать оптимальный способ оплаты через банков-партнеров. Для это свяжись, плиз, с нашим консультантом: +38 (067) 326-95-92 или +38 (050) 366-57-77
  • Почему обучение Java длится целых 10 месяцев? Курсы программирования по Java – это обучение с нуля. Также будет 2 командных проекта, занятия по soft skills, трудоустройству и английскому – без этого никак. Наша задача, чтобы после курса ты быстро нашел работу в IT. Учти, что это обучение part time, по 2-3 часа в день со свободными выходными. Так что 10 месяцев – довольно условный период (это не 6 месяцев обучения с 9:00 до 18:00).
  • Как мне спланировать обучение, как всё проходит? Два раза в неделю по вечерам ты будешь смотреть вебинары (прямой эфир). А в свободное время – делать домашние задания и общаться с ментором. Во время каждого из двух модулей студенты работают над командными проектами, так что постарайся быть на связи.
  • Что делать, если я пропущу занятие? В твоем учебном профиле будут сохраняться все материалы и записи вебинаров. Если пропустишь вебинар, его можно посмотреть в записи. По домашкам и другим вопросам в любое время ты сможешь писать ментору.
  • Java Developer – кто это и что он делает? Это программист, который создает серверный софт, программы для ПК и приложения для разных устройств. Чаще всего разработчики пишут на Java именно бэкенд (backend). Проще говоря, настраивают процессы так, чтобы разные компоненты программы понимали друг друга, взаимодействовал и обменивались данными. Также язык Java позволяет работать и с фронтендом (frontend). Например, на джаве можно сверстать сайт, создать онлайн-игру или полноценное приложение для Android.
  • Что такое Frontend и Backend? В чем разница? Frontend – это видимая часть продукта, с которой пользователь взаимодействует прямо в браузере. Представь страницу сайта, картинки, текст, формы, кнопки, анимацию – всё это относится к фронтенду. Задача программиста – «перенести» макет дизайнера на веб-страницу. Это и значит сверстать сайт. Backend – это внутренняя часть продукта или «начинка», которая скрыта от пользователя. Например, когда покупаешь кроссовки в интернет-магазине, то программа посылает запрос на сервер, обрабатывает данные и присылает обратно инфу о том, что товар оплачен. Продумать всю эту логику, написать код и настроить обмен данными – работа бэкендщика.
  • Что сложнее: Frontend или Backend? Новичкам проще работать над визуальной частью приложения (frontend), так как можно сразу увидеть все изменения программного кода на веб-странице. Тем не менее, многим программистам нравится создавать именно внутреннюю часть приложения (backend) – базу данных, архитектуру, программную логику. Для этого нужно знать минимум один язык программирования. Например, Python или Java. По статистике, зарплаты у бэкендщиков выше. А еще у них меньше конкуренции. К примеру, количество откликов на одну вакансию Java-разработчика почти втрое меньше, чем на вакансию Frontend-разработчика.
  • Как стать Java-разработчиком с нуля? Нужно владеть определенными техническими и мягкими навыками. Если учить backend самому, выделяя по 2-3 часа в день, на один только Java понадобится 12-18 месяцев. На курсе Java online ты освоишь профессию за 10 месяцев. Почему такая разница? Просто ты учишься по актуальной программе, работаешь с ментором и преподавателем, задаешь им вопросы, получаешь фидбэк. Кроме этого, во время обучения тебе помогают сделать резюме и страницу в LinkedIn. Ты подтягиваешь английский, тренируешься проходить собеседования (техническое и с рекрутером). Вот и весь секрет.
  • Сколько зарабатывает Java-разработчик? Вот статистика средних зарплат по Украине в 2022 году:
    • Junior Java Developer – $1000
    • Middle Java Developer – $2825
    • Senior Java Developer – $5000

    Важно понимать, что junior-специалист после курса – не равно junior-специалист с опытом работы в компании. Поэтому на старте карьеры в IT доход может составлять и 700 долларов в месяц. Это нормально. Зато со временем эта сумма будет расти гораздо быстрее, чем в других сферах.

    В профессии бэкендщика нет четкого потолка по зарплате или сроков перехода с одного уровня на другой. Можно за год-два стать мидлом с окладом больше $2000.

    /dev/energy

    Сайт о том, как стать программистом и как с этим жить потом

    Как развиваться Junior разработчику? Карьерный путь в IT

    Меня не может не радовать то, как сильно вырос онлайн в разделе Как стать программистом, поэтому я решил написать свежую статью именно в этот раздел моего блога, чтобы закрепить успех. Поговорим о том, как происходит рост от Junior ввысь/вглубь мира IT.

    Абсолютное большинство приходящих в сферу IT соискателей не стремятся оставаться на позиции младшего разработчика всю свою жизнь. Их цель — как минимум вырасти до стабильного, сильного разработчика уровня middle/senior. А кто-то пойдёт выше. И именно этот процесс хотелось бы обсудить в рамках статьи. Я постараюсь приводить примеры, основанные на своём опыте и опыте моих студентов.

    Trainee

    В современной индустрии IT с её перенасыщенным рынком понимание между Стажёром (Trainee) и Младшим программистом (Junior) смазалось. И многи часто путают эти два понятия, что неправильно.

    Стажёром может стать любой человек практически с нулевыми знаниями (всё зависит от программы стажировки, в которой он участвует). Но чаще всего компаниям интересны кандидаты, которые уже примерно понимают, как устроен мир программирования и могут написать простые вещи типа циклов и ветвлений.

    Чаще всего после курсов «с нуля» выпускники становятся именно стажёрами, так как у них по сути нет коммерческого опыта. В лучшем случае они могут стать Junior-ами (но об этом ниже).

    Со стороны компании стажёр — это не рабочая единица, а материал для роста, возможность вырастить себе сотрудника. Для самого стажёра — весомый вклад в будущую карьеру, так как именно здесь он получает то, что ему нужно — опыт.

    Чаще всего стажировки либо не оплачиваются вовсе (что, кстати, не совсем согласуется с ТК РФ), либо оплачиваются по минимальной границе. Но в текущей ситуации на рынке я бы рекомендовал обращать внимание на любые стажировки крупных компаний вне зависимости от финансовых условий — внимание стоит уделять условиям последующего найма и того, какие преференции даёт стажировка для кандидата.

    В роли стажёра Вы

    1. До конца оттачиваете знание базовых вещей в языке программирования.
    2. Получаете несколько направлений роста от своих наставников.
    3. Начинаете двигаться в сторону уже относительно самостоятельного программиста.

    Здесь и сейчас Вам важно набить руку в написании простых вещей, чтобы они не требовали у Вас постоянного подглядывания в документацию или Google.

    Обязательно узнайте при поступлении на стажировку, как описываются и фиксируются условия успешного её завершения, а также какие знания и навыки Вы получите.

    Для тех, кто хочет подробнее узнать о подходе компаний к найму стажёров, есть мой вебинар.

    Junior

    В условиях насыщенного рынка получение позиции Junior — это уже весомый успех. Он говорит о том, что в общей массе новичков Вы смогли выделиться. Эту картину надо не только сохранить, но и улучшить. В течение испытательного срока, который в нашей необъятной Родине длится обычно три месяца, Вам нужно будет сосредоточиться на следующих вещах (кстати, как и в позиции Trainee)

      1. Изучение процесса разработки в команде. Много общайтесь со старшими коллегами и узнавайте, как принято писать код, тестировать и отлаживать его, а также — как доставлять его на Production. Здесь Вы не только узнаете, как не попасть под раздачу во время Code Review, но и обнаружите множество новых для себя вещей, с которыми Вы ещё не успели познакомиться. Не переживайте — это нормально. Скорее всего, Вам предстоит узнать о таких вещах, как Git-Flow, Docker, CI, DI и прочие модные слова. Спросите у своих наставников о том, что лучше почитать/посмотреть на интересующую Вас тему, могут ли они рассказать Вам об этих вещах.
      2. Изучение нового и неизвестного. Узнать слова — только начало. Нужно изучать. Не бросайтесь на всё подряд. У Вас быстро сформируется список «пробелов». Приоритезируйте его вместе с коллегами и идите по шагам, убирая пункт за пунктом тогда, когда станете разбираться в них и применять на практике.
      3. Делайте больше. Додумывайте. Как бы ни хотелось надеяться на то, что ТЗ будут идеальными, а заказчики — лояльными, всегда и в каждой задаче будет оставаться место для небольшого подвига. Как говорил Колосс из вселенной Marvel: «Только несколько мгновений в жизни решают, герой ты или нет». Также и в задачах — добавление некоего небольшого, но полезного функционала увеличит ценность продукта и поднимет Вас в глазах пользователей.
    • Ориентируйтесь на ценность, а не на код. Да-да, код сам по себе никому не нужен и не стоит ровно ничего. Он полезен тогда и только тогда, когда логика, следующая ему, создаёт функциональную ценность для пользователей. Поэтому думайте в первую очередь ценностями пользователей, как бы ни хотелось в первую очередь сделать красивую архитектуру и создать ещё пару тысяч классов. Это не отменяет качества кода, но делает его нужным, а не «опять айтишники обновления выкатили :(«.
    • Общайтесь. Именно из общения Вы узнаете, что представляет ценность. С кем это обсуждать? С владельцами продуктов (Product owners), аналитиками, конечными пользователями. Именно они расскажут о том, «что болит», и дадут Вам пищу для роста и размышлений.
    • Пишите хороший код. Я специально употребил здесь максимально пространную фразу. В каждой команде свои стандарты кода, поэтому понятие «хороший код» будет варьироваться от команды к команде. Поэтому спрашивайте, общайтесь и учитесь. Именно этого от Вас ждут как от Junior-разработчика.

    Моя практика показывает, что в позиции Junior специалист обычно растёт от полугода до года. Конечно, этот срок может меняться в разумных рамках, но если после года работы Вы всё ещё не чувствуете себя «в своей тарелке», стоит задуматься о качестве Вашего роста. За это время в процессе активной работы сотрудник не менее активно растёт, начинает изучать фундаментальные понятия в программировании, такие как алгоритмы, оценки сложности, обеспечение работы под высокими нагрузками, устройство выбранного языка программирования и прочее. К концу этого периода уже можно смотреть в сторону позиции Middle.

    Если Вы решили изучать язык PHP, то можете взять за основу мой курс для самостоятельного изучения, который найдёте по ссылкам ниже. Он совершенно бесплатный и создан для того, чтобы помочь сделать первые шаги!

    А ещё можно найти себе ментора для того, чтобы иметь возможность задавать вопросы и уточнять правильность своего пути. Сделать это можно, например, здесь.

    Как понять, что я готов к позиции Middle?

    Не ждите, что Ваш шеф радостно ворвётся в Ваш open-space с тортом и шампанским и поздравит с повышением. Конечно, многие серьёзные компании проводят one-2-one встречи, следят за ростом сотрудников, но зачастую многие грешат тем, что исходят из принципа достаточности: человек работает, вот и славно. Зачем платить больше?

    Если Ваш руководитель не общается с Вами на тему роста, то нужно активно рефлексировать и анализировать свои навыки. Ответьте себе на вопросы:

    • Сколько задач я довёл до Production за последние 3 месяца?
    • Какова их ценность?
    • Сколько багов было в них? Почему произошли эти баги?
    • Какие были нарекания к продукту, который я выпускал?
    • Сколько задач релизят старшие коллеги? (Этот вопрос совершенно нормально задать самим коллегам, чтобы понимать уровень собственной производительности, если не окажется доступа к статистике таск-трекера команды)

    Если отвечали честно, то увидите сравнительную оценку себя и других разработчиков, что поможет либо вернуться к заполнению пробелов в знаниях, либо продолжить процедуру повышения.

    Ещё одним неплохим инструментом являются сайты поиска работы. Нет, это не означает, что надо ездить по собеседованиям. Но на них Вы сможете увидеть, чего ожидают от разработчиков Middle-уровня в Вашем стеке и какие зарплаты платятся в этом сегменте. В принципе, и на собеседование сходить можно, но будьте готовы к тому, что текущий работодатель, мягко говоря, удивится.

    В самом хорошем случае в компании есть практика one-2-one встреч. Это практика, при которой руководитель встречается с подчиненными один на один в закрытом формате и обсуждает все вопросы, связанные с рабочим процессом, без купюр. Оба могут говорить о том, что беспокоит, что радует, задавать вопросы. В таком случае рост обычно происходит гораздо проще и естественнее, так как на встрече всегда можно

    • Узнать, какие знания надо подтянуть?
    • Попросить дать фидбэк по работе
    • Обозначить желание расти и обсудить условия роста
    • Обговорить сроки роста, что немаловажно, если Вы не хотите питаться «завтраками»

    Как видите, маркеров и способов роста множество. Главное — учиться и расти постоянно, без остановки.

    Вот я Middle. Что дальше?

    Как ни странно, дальше рост очень похож за тем лишь исключением, что качественно меняются набираемые знания. Нужно уделять больше времени смежным системам (таким как ELK-стек, Docker, Kubernetes, кластеризация и скалирование), пониманию построения архитектур. Стоит написать что-то своё прямо с нуля, без фреймворков. Вне работы, но это будет крайне полезно для понимания принципов работы выбранного стека.

    В позиции Middle можно и нужно задерживаться дольше. Знаний для роста тут предостататочно, поэтому путь до Senior занимает около 2-3 лет. Конечно же, есть и более быстрые скачки, но это скорее исключение из правил.

    Дальнейший рост довольно интересен. За позицией Senior открывается несколько путей развития:

    1. Технический. Вы продолжаете прокачивать технические навыки (hard skills). В таком случае Вы обычно вырастаете до уровня Architect или Technical Leader. Вторая позиция подразумевает большего общения с людьми, чем первая, поэтому выбирать Вам, исходя из того, насколько хочется активного взаимодействия с окружающими.
    2. Организационный. Часть разработчиков с ростом чувствуют свою тягу к построению процессов и уходят в менеджмент. Так, например, крайне востребованы Scrum мастера и Agile коучи, которых довольно мало на рынке. Поэтому люди с подобными знаниями и техническим бэкграундом будут очень сильно востребованы на рынке.
    3. Менеджерский. И снова про организацию процессов, но уже с точки зрения роста в чистый классический менеджмент. Такие Senior-ы обычно вырастают в Team Leader-ов, затем в Head of Development, а потом в CTO (Технический директор). Здесь нужны очень хорошие навыки организатора, желание строить процессы и отстутсвие боязни общения с бизнесом, коего будет очень и очень много.

    Основная задача, которая будет стоять перед Вами здесь даже не про то, как расти. Она состоит в том, чтобы предельно честно ответить себе на вопрос: «А что дальше? Как я хочу расти? Зачем я буду развиваться в позиции N?». Изучайте истории разных известных представителей каждого из путей (благо, таких людей много, и они не очень-то прячутся). Это поможет Вам понять множество философских вещей относительно роста, которые точно находятся за рамками конкретно этой статьи.

    Кстати, про рост в роли Team Leader-а есть отличное выступление с конференции, которое Вы можете посмотреть ниже

    Резюме aka TL;DR

    1. Учитесь и систематизируйте знания
    2. Делайте это постоянно
    3. Чётко понимайте, зачем хотите расти
    4. Делайте чуточку больше и лучше, чем от Вас ждут
    5. Понимайте сроки и условия роста

    Надеюсь, что мои скромные рекомендации будут для Вас полезны!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *