мидл уровень что значит
Кто такой мидл и как им стать
Если вы это читаете, у вас больше шансов, чем у остальных.
Послушать аудиоверсию этой статьи (6 минут):
Чем мидл отличается от джуниора
Джуниор — новичок или стажёр, который пришёл в компанию и только учится работать в команде. У него мало опыта, он не в курсе всех тонкостей проекта, поэтому ему поручают только мелкие или несложные задачи: поправить размер кнопки, проверить, приходят ли на сервер нужные данные, или написать проверку для формы на сайте. Если что-то не так, джуниор идёт к старшим товарищам за советом.
Мидл — полноценный командный игрок. Ему уже не нужно помогать каждый день и отвечать на очевидные вопросы. Наоборот, он сам часто помогает джуниорам в сложных ситуациях. Он хорошо знает проект, сам пишет основной код и решает большинство задач самостоятельно.
Мидл по сути и есть программист в общепринятом смысле, самостоятельный и квалифицированный. Он сам ищет ответы, сам следит за новыми решениями в отрасли и сам понимает, когда стоит дополнительно чему-то научиться.
В чём сила мидла
Мидл сразу пишет рабочий код и не требует к себе много внимания, как джуниор. Суперсила мидла в том, что он думает уже на следующем уровне: не о том, как просто написать рабочий код, а о том, как написать его так, чтобы потом было его легко поддерживать. Потому что поддерживать часто ему, и такого кода на поддержку будет много.
Джуниоры обычно решают задачу «сделать так, чтобы код работал», а мидлы — «сделать так, чтобы код не только работал, но и был понятен остальным программистам». Чтобы так уметь, нужны опыт, квалификация и отличное владение инструментами.
Почти весь основной код в каждом проекте написан мидлами.
Как им стать
Иногда говорят, что есть формальные критерии для мидла и что через 2–3 года работы джуниором человек автоматически становится мидлом, но это не так. Чтобы перейти на следующую ступень, программист должен освоить все рабочие инструменты и понимать, когда применить каждый из них.
Например, если это фронтенд, то мидл должен отлично знать HTML, CSS, JavaScript, PHP, уметь работать с препроцессорами, базами данных и знать отличия в отображении страниц в разных браузерах. А если мы говорим про бэкенд-разработчика, то к этому добавится Python, API нужных сервисов, фреймворки для решения разных задач и знание серверных приложений.
Вот что ещё может делать мидл в компании:
Самое главное — мидл понимает, почему он делает именно так и почему это будет оптимальное решение для проекта.
Сколько зарабатывает мидл
Мы посмотрели зарплаты мидлов разных направлений на Хабр Карьере за второе полугодие 2019 года:
Это в полтора-два раза выше, чем у джуниоров.
Что дальше
Если мидл будет и дальше расти и прокачиваться в своих навыках, то он может дорасти до сеньора. Это выше по деньгам, но больше ответственности в проектах. Но для карьеры программиста это естественный путь наверх.
О том, кто такие сеньоры — в следующей статье.
Разница между «джуном», «мидлом» и «сеньором». И что делать, чтобы перейти на уровень выше
Уровень разработчика не обязательно определяется многолетним опытом программирования: «джун» вполне может быть старше «сеньора», — всё сводится к профессиональным навыкам. Это не означает, что старший разработчик должен быть специалистом во всём, но можно с уверенностью сказать, что навыки у него гораздо более развиты, чем у разработчиков младшего и среднего уровня.
Но разработчиков различных уровней отличает нечто большее, чем умение собственно программировать. Так в чем именно кроются различия?
Знания
Очевидно, что старший разработчик обладает гораздо более обширными знаниями. Для младшего разработчика изучить шаблоны проектирования, архитектуру, автоматизацию тестирования, методы повышения производительности и обеспечения безопасности и т. д. — отличный способ сократить этот разрыв в знаниях.
Важно знать, как должно создаваться программное обеспечение. Но просто знать всё это — не значит быть разработчиком более высокого уровня. Знания — это не ключевое отличие, а лишь один из факторов.
Фото — Clem Onojeghuo, площадка Unsplash
Программирование
Несмотря на мнение большинства обычных людей, программирование — это не общение с компьютером. Программировать — значит общаться с людьми и отдавать указания компьютерам. Ведь код в итоге компилируется и превращается в нули и единицы.
Код должен нести в себе смысл для тех, кто будет работать с ним в будущем. Команда, подхватившая за кем-то другим проект, должна иметь возможность открыть его исходный код и начать работать над новыми функциями или исправлением ошибок. И здесь кроется существенная разница между «джуном» и «сеньором».
Разработчиков среднего уровня в этом сравнении я учитывать не буду, поскольку в отношении навыков программирования они представляют собой своего рода переходную область — скорее ближе к уровню старшего разработчика. В основном «промежуточное» положение определяется опытом, поскольку обычно «мидл» успевает пройти весь цикл разработки хотя бы раз, а также совершить множество простейших ошибок и извлечь из них уроки.
Как вычислить «джуна»
Младшие разработчики неопытны: иногда это выпускники, которые только начинают работать на полную ставку. В их голове основная задача — заставить код работать. Если приложение работает — значит, оно хорошее.
Писать простой код — это сложная задача. И младшие разработчики этого делать не умеют: обычно код у них довольно своеобразный. Узнать их можно по причудливым однострочникам и чрезмерно сложным абстракциям — так «джуны» стремятся показать себя и пытаются дать понять другим, насколько хорошо они умеют программировать. Но это неверный подход.
Младшие разработчики сосредотачиваются на «компьютерной» части кода, упуская из виду «человеческую».
Как пишут код «сеньоры»
Глядя на код старшего разработчика, можно подумать: и это всё? А где остальное? Достаточно опытный разработчик пишет простой, понятный и, возможно, местами даже чересчур прямолинейный код — и это одно из самых важных качеств, если говорить о программировании. «Сеньор» следует принципу KISS, гласящему, что код должен быть простым и понятным: «Keep it simple, stupid»
Поэтому у старшего разработчика совершенно другой подход к написанию кода: он учитывает удобство дальнейшей поддержки и масштабируемость. Это совершенно не похоже на мышление младшего разработчика: «сеньор» думает о тех, кто будет работать с кодом, а «джуну» важно в первую очередь заставить код работать.
Не программированием единым
Помимо навыков программирования, есть и другие факторы, которые могут подсказать, что за разработчик перед вами.
Младшие разработчики, как правило, выполняют самые простые и не самые важные задачи; они не занимаются разработкой архитектуры. Разработчики среднего уровня тоже не разрабатывают решения, а просто выполняют задачи, однако их меньше контролируют — если задание довольно типовое. А вот «сеньоры» могут разработать приложение совершенно самостоятельно.
Это не значит, что у старшего разработчика по ходу дела не возникает вопросов: у любого из нас каждый день появляется множество вопросов, и «сеньоры» тут не исключение.
Разница в том, что последние знают, как задавать правильные вопросы и что делать с полученными ответами. Менее опытные разработчики могут задавать правильные вопросы, если речь идет о привычных им задачах, но в более сложных случаях им приходится обращаться за помощью.
Старший разработчик никогда не теряется и знает, как правильно действовать, получив ответ на вопрос. Это не значит, что он не будет просить совета у других — иногда лучшим решением бывает именно обратиться за помощью к тем, кто имеет больше опыта в данной области.
Разработчик среднего уровня также должен уметь задавать правильные вопросы, если только это не очень сложные задачи, требующие глубокого уровня знаний.
А вот в случае «джунов» не следует ожидать, что они смогут задавать нужные вопросы: у них недостаточно практики, поэтому ими должны руководить более опытные коллеги. Младшего разработчика следует обеспечить необходимыми ресурсами или хорошенько подтолкнуть в правильном направлении.
Переход на следующий уровень
Мы все хотим совершенствоваться, в том числе профессионально. Но какие шаги можно предпринять, чтобы перейти на следующий уровень?
От «джуна» — к «мидлу»
Начинающие разработчики не обладают богатым опытом, поэтому важно хотя бы пару раз пройти весь цикл разработки — таким образом вы сможете встретить на своем пути множество ловушек и научитесь их избегать.
Что касается программирования — следует научиться писать простой код: представьте, что после вас над проектом будет работать другой человек. Кроме того, придется научиться заниматься отладкой — это углубит понимание того, что происходит во время работы программы.
Также необходимо ознакомиться с лучшими методиками и побольше узнать об архитектуре, производительности, безопасности и т. д. Закройте пробел в знаниях, отделяющий вас от среднего уровня.
От «мидла» — к «сеньору»
Разработчикам среднего уровня подняться выше может быть довольно сложно: некоторые остаются на этом уровне всю свою карьеру.
Старший разработчик знает, в каких случаях можно пойти на компромисс, и когда этого делать ни в коем случае нельзя — потому что он успел проверить это на собственном горьком опыте.
Чтобы перейти на уровень «сеньора», нужно быть готовым к выполнению задач, за которые никто понятия не имеет, как браться. Нужно знать и уметь больше, чем просто делать свою работу.
Кроме того, как старший разработчик вы должны помогать менее опытным: вы для остальных — спасательный круг, за который можно ухватиться, когда не знаешь, как что-то сделать.
В свете этого неудивительно, что «сеньоры» полностью владеют своим техническим стеком. Нужно не просто уметь программировать, а знать все инструменты и приложения, которые используются в нанявшей вас компании.
Заключение
Разница между «джуном», «мидлом» и «сеньором» заключается не только в многолетнем опыте. Да, можно с уверенностью сказать, что у последнего навыки гораздо более развиты, чем у разработчиков младшего и среднего уровня. Но знание — не самый важный фактор.
Опытные разработчики пишут более простой код и подходят к этому иначе. Но кроме того, чтобы уметь программировать, очень важно также знать, какие вопросы задавать и что делать с полученными ответами. Именно старший разработчик — тот человек, чей богатый опыт позволяет не растеряться и в любой ситуации найти решение.
«Джуну», чтобы расти дальше, нужно постараться научиться писать простой код и пройти через несколько полных циклов разработки. Чтобы подняться выше среднего уровня, нужно сосредоточиться на изучении чего-то большего, чем просто рутинные задачи по исправлению ошибок. Вы должны быть готовы брать на себя самые сложные задачи и полностью овладеть своим техническим стеком. Еще одна обязанность старшего разработчика — выручать менее опытных.
Напоследок процитирую Мартина Фаулера:
«Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку»
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
16 вопросов мидлу: что должен знать Middle-разработчик
Что должен знать Middle-разработчик? Этот вопрос актуален как для тех, кто претендует на вакансию мидла, так и для тех, кто посматривает в сторону продвижения.
Стоит отметить, что несмотря на то что в IT выработана шкала для оценки программистов (trainee, junior, middle, senior, lead), с которой более или менее все согласны, с точным определением каждого уровня общего мнения среди компаний пока нет. Поэтому каждая компания устанавливает внутренние требования к навыкам каждого уровня.
Тем не менее есть основной набор знаний и навыков, по которому в целом можно ориентироваться, оценивая себя. Многие специалисты утверждают, что сегодня требования к мидлам несколько завышены:
Позиция Middle-разработчика предполагает не только уверенное знание языка программирования, но и широчайшие познания в смежных технологиях. Позиция Middle накладывает на специалиста ответственность не только программировать «всё что угодно», но и обучать, оптимизировать код, разбирать и поддерживать чужой код, как будто родной. Фактически сейчас для вакансий Middle-разработчика предъявляются требования, как несколько лет назад для Senior.
Мы выяснили, что должен знать Middle-программист в 2020 году, и собрали общие вопросы с собеседований, по ответам на которые работодатели определяют, «дорос» кандидат до мидла или нет.
Hard skills
Каков ваш уровень владения языком программирования и сопутствующими инструментами?
От программиста-джуна ожидается знание всех конструкций языка, знание большей части стандартной библиотеки. Знакомство с фреймворками (хотя бы с одним), инструментами коллективной разработки (систем контроля версий, таск- и баг- трекеров, естественно, IDE и др.). Требования к мидлам существенно выше. Как правило, ожидается доскональное знание базы (в том числе синтаксиса используемых языков), опыт работы и уверенные теоретические знания стандартных библиотек, необходимых фреймворков и инструментов.
В каких проектах вы участвовали? Сколько из них вели сами?
Не стоит удивляться: опытные джуниоры уже вполне могут вести свои проекты. Не без поддержки более опытных коллег, но это не отменяет самостоятельности младшего разработчика. Так что если вы продвигаетесь по карьерной лестнице, в вашем портфолио уже должны поселиться свои проекты.
Показывайте решения, которые лучше других продемонстрируют ваши знания и навыки. Выбирайте самые сложные и комплексные таски, рассказывайте, как вы их выполняли и как планировали выполнение.
Каков ваш навык работы с базами данных?
Работаете с бэкендом? В таком случае вы должны свободно обращаться к базам данных, иметь навыки работы с одной или несколькими СУБД.
Знать и уметь строить оптимальную архитектуру БД. БД зачастую является самым узким местом производительности проекта. Менять архитектуру БД на живом проекте очень проблематично и дорого.
Это основное из того, что должен знать Middle-разработчик. Не стоит забывать и о нормализации, денормализации и характеристиках каждой нормальной формы.
Расскажите о своём уровне владения выбранной IDE
Нужно уметь без проблем подключать к проекту библиотеки, знать главные преимущества и недостатки среды, свободно настраивать и использовать горячие клавиши. Это то, что должен знать Middle-разработчик на уровне IDE.
Другие технические навыки
Тут всё зависит от конкретной специальности, но эксперты сходятся в том, что знания должны быть продвинутыми: больше, чем одна библиотека и пара хинтов.
Что касается технических навыков Middle-разработчика по frontend JavaScript, то специалист такого уровня должен:
Также есть дополнительные навыки, которые дают преимущества. Большим плюсом в работе будут:
Самое важное для мидла, это знать, как изнутри работает используемая тобой технология, твой фреймворк. Не то, как он производит рендер (с помощью VDOM и т. п.), а как код написан, как происходит магия. Открой GitHub, посмотри исходники React, как, например, this.setState заставляет компонент делать рендер.
Какие методологии разработки вы знаете? По каким из них работали?
Одной теории недостаточно. Вы уже должны были участвовать в проектах «под ключ» и понять, как работает та или иная методология. Хорошо, если у вас был опыт работы по нескольким методологиям: если так, обязательно проведите сравнение плюсов и минусов, исходя из практики.
Что ещё должен знать Middle-разработчик
Soft skills
Насколько вы коммуникабельны?
Если в случае с Junior-программистом коммуникативные навыки просто важны, то для Middle-разработчика они обязательны.
Думаю, что Middle-программист не должен принимать решения по архитектуре проекта, согласовывать требования с заказчиком и решать вопросы по блокерам, так как это входит в компетенции аналитика, PM и сеньора.
Несмотря на это, во многих компаниях перед мидлом часто ставится задача самостоятельно разобраться, чего хочет заказчик, как решить его проблему и какую архитектуру построить. На базе этих сведений формируется полноценное ТЗ, которое затем передаётся команде разработчиков.
Ваши навыки работы в команде
С точки зрения soft скиллов Middle-разработчику, конечно, нужно осваивать компетенции: ведение переговоров, общение с командой, иметь представление об управлении командой. Эти навыки пригодятся в дальнейшем карьерном росте.
Умеете ли вы разрешать конфликты?
Этот навык также является частью коммуникации. Разногласия могут возникнуть и с заказчиком, и внутри команды. Если вам поручили роль наставника над младшими специалистами в проекте — в обязанности войдёт и урегулирование конфликтов.
Несмотря на то что мы, разработчики, чаще сами по себе и сами в себе — нужно развивать коммуникации и другие мягкие навыки. Не во всех компаниях есть менеджер, который выполняет роль медиатора между отделами — чтобы тебя поняли и чтобы ты просто смог нормально рассказать о своей работе, нужны — эмпатия, умение договариваться, гибкость в процессах.
Каков ваш уровень английского языка?
Уровень владения английским языком Middle-программиста должен быть не ниже Upper-Intermediate, так как этот специалист постоянно участвует в созвонах, конференциях, должен свободно читать и составлять техническую документацию.
Способны ли вы доступно доносить свои идеи, убеждать в их правильности?
Что касается «софтскиллс», они необходимы для выполнения многочисленных ролей в команде — разработчик, ментор, докладчик, тимлид и другие. Что для этого понадобится специалисту? Убеждать коллег и клиентов. Иногда даже продавать — идеи, решения, преимущества. Презентовать свои идеи. Обучать. Планировать свою деятельность, ставить задачи перед подчинёнными, контролировать их выполнение. Для этого и много другого нужно развивать соответствующие навыки.
Можно ли вас охарактеризовать, как внимательного человека?
Очень хорошее качество, которое надо развивать разработчику, — это внимательность. Она позволит вовремя заметить, что с «канарейкой» что-то не то. Грамотный Middle-разработчик должен непрерывно отслеживать «жизненные показатели» проекта, чтобы вовремя понять, что «чирикает» после недавнего коммита он уже не так бодро.
Если возникла проблема, как вы будете её решать?
Перед разработчиком среднего уровня стоит задача самостоятельно находить, обрабатывать и использовать информацию, и только в самых сложных ситуациях обращаться к коллегам-сеньорам.
На первом месте здесь стоит умение искать информацию. Перед собеседованием вспомните основные источники информации, к которым вы обращаетесь в первую очередь (после документации, разумеется).
Можете ли вы оценить время выполнения задачи?
Это то, что должен уметь Middle-разработчик, особенно если речь идёт о работе в команде: в этом случае необходимо оценить время, исходя из знаний и навыков каждого участника проекта. Следует учиться правильно определять сроки выполнения работы.
Мидл уже имеет достаточный опыт работы, что позволяет ему декомпозировать задачи более-менее правильно. Мидл умеет декомпозировать, а значит он может точнее оценивать задачи. Он должен уметь соблюдать сроки. Это умение нельзя переоценить.
Планируете ли вы развиваться до сеньора или тимлида?
Плох тот солдат, что не мечтает стать генералом. Перефразируем: плох тот мидл, что не мечтает стать сеньором/архитектором/тимлидом. Мидл должен всегда хотеть развиваться. Жажда саморазвития будет вытаскивать мидла из его рутины (а у него будет рутина) и отправлять развиваться дальше.
Выводы
Так завышены ли сегодня требования к мидлам? На этот счёт мнения расходятся, но почти все специалисты сходятся во мнении, что каждая компания диктует свои правила, и то, что должен знать Middle-разработчик, будет напрямую зависеть в том числе от должности, на которую он претендует.
Не завышены ли требования к мидлам? Возможно, кто-то из IT-специалистов сталкивался с тем, что, уже несколько лет будучи мидлом, на собеседовании в какой-либо компании его оценивают как джуниора. Связано это, как правило, с двумя факторами: первое — разные требования в разных компаниях. Второе — часто в уровень квалификации, кроме перечисленных выше hard и soft skills, ещё включают погружённость сотрудника в предметную область, знание специфики бизнеса. Эти знания делают сотрудника ценным для текущей организации, но могут значить меньше в новой для него организации.
Подводя итоги, Middle-разработчик должен свободно плавать в теории, хорошо знать необходимый стек технологий и иметь по нему богатый опыт, не просто коммуницировать, но также оценивать трудозатраты, сроки, обучать и управлять ходом разработки. Опыт работы с базами данных, Git и уверенное владение английским языком обязательны по умолчанию.
Кто такие Junior, Middle и Senior специалисты, и чем они отличаются?
Не понимаете как делят специалистов на junior, middle, senior? Объяснили, как это происходит в России. Спойлер: чётких рамок нет.
Наверное, каждый хотя бы раз задавался вопросом, а как определить, когда ты ещё Junior, а когда уже Senior? Ведь зачастую это решает, сколько вы сможете заработать. В этой статье мы объясняем, что всё это значит.
Объяснение
Стоит начать с того, что эти понятия были придуманы в западных странах. В России же ранее было принято делить специалистов по категориям (к примеру, инженер-программист высшей категории, как правило, один из главных сотрудников в компании). В документах, указывается, что в зависимости от категории определённый сотрудник должен обладать определёнными компетенциями или опытом. К примеру, какой-нибудь сотрудник второй категории должен иметь опыт работы от 1 года и образование по специальности. Все эти формальности зачастую соблюдаются лишь в государственных структурах. В частных же компаниях понимают, что это всё не то.
Так и получается, что в разных организациях специалиста оценивают по-разному. В одной, вы могли бы работать, как senior, а в другой лишь как middle.
Иногда работодатели умышленно ставят сотрудника на позицию middle, вместо senior, или долго держат на одной и той же позиции, с целью снижения зарплаты. Но здесь нужно правильно оценивать себя, возможно вы уже давно выросли из старой категории, здесь нужно основываться на собственных навыках и опыте, а также том, сколько в денежном выражении вы приносите компании. Да, можно быть junior, но получать зарплату, как middle в другой компании. В солидных организациях этот момент чётко обозначен, вы знаете, сколько всего нужно сделать, чтобы повысить свою категорию.
Конечно, есть те, кто пытается поднять свой статус, кто-то наоборот не уверен в себе и понижает категорию. Чтобы найти что-то среднее, достаточно просто посмотреть вакансии по вашему профилю, требования к кандидатам и определить, кем вы являетесь.
Как HR-менеджеры подразделяют специалистов
Junior — студент последних курсов практически без опыта работы. Тот, кого скорее всего нужно постоянно растить, кому нельзя доверять чего-то стратегически важного, не работал в данной сфере. Способен качественно выполнить 80% от задач. Обычно, на этой позиции держатся около 1-1,5 лет.
Middle — работает быстро, можно доверять как ответственную, так и не очень работу, может помогать Juniorам. Достаточно отработал, чтобы разбираться в своей сфере и развиваться дальше, обсуждать с командой общие вопросы. Способен качественно выполнять всю свои работу. На этой позиции можно задержаться надолго, если не предпринимать усилий расти.
Senior — обычно очень крутой специалист-профессионал, один из лучших сотрудников в компании, но бывает, что это те middle-специалисты, которых повысили, чтобы их не схантили другие. Способен выполнить работу на 146%. Иногда имеет опционы в компании и занимает руководящие позиции. Чтобы дорасти до позиции необходим опыт работы порядка 5-7 лет.
Есть некоторые различия в этих определениях для разных сфер. К примеру, веб-разработчики быстро растут, а gamedev наоборот, долго, так как нужно больше времени, чтобы набить руку.
Возможно, вас заинтересует следующая статья: