- Разница между «джуном», «мидлом» и «сеньором». И что делать, чтобы перейти на уровень выше
- Знания
- Программирование
- Как вычислить «джуна»
- Как пишут код «сеньоры»
- Не программированием единым
- Переход на следующий уровень
- От «джуна» — к «мидлу»
- От «мидла» — к «сеньору»
- Заключение
- Чем различаются между собой различные категории программистов (Junior, Middle, Senior и т.д.)
Разница между «джуном», «мидлом» и «сеньором». И что делать, чтобы перейти на уровень выше
Уровень разработчика не обязательно определяется многолетним опытом программирования: «джун» вполне может быть старше «сеньора», — всё сводится к профессиональным навыкам. Это не означает, что старший разработчик должен быть специалистом во всём, но можно с уверенностью сказать, что навыки у него гораздо более развиты, чем у разработчиков младшего и среднего уровня.
Но разработчиков различных уровней отличает нечто большее, чем умение собственно программировать. Так в чем именно кроются различия?
Знания
Очевидно, что старший разработчик обладает гораздо более обширными знаниями. Для младшего разработчика изучить шаблоны проектирования, архитектуру, автоматизацию тестирования, методы повышения производительности и обеспечения безопасности и т. д. — отличный способ сократить этот разрыв в знаниях.
Важно знать, как должно создаваться программное обеспечение. Но просто знать всё это — не значит быть разработчиком более высокого уровня. Знания — это не ключевое отличие, а лишь один из факторов.
Фото — Clem Onojeghuo, площадка Unsplash
Программирование
Несмотря на мнение большинства обычных людей, программирование — это не общение с компьютером. Программировать — значит общаться с людьми и отдавать указания компьютерам. Ведь код в итоге компилируется и превращается в нули и единицы.
Код должен нести в себе смысл для тех, кто будет работать с ним в будущем. Команда, подхватившая за кем-то другим проект, должна иметь возможность открыть его исходный код и начать работать над новыми функциями или исправлением ошибок. И здесь кроется существенная разница между «джуном» и «сеньором».
Разработчиков среднего уровня в этом сравнении я учитывать не буду, поскольку в отношении навыков программирования они представляют собой своего рода переходную область — скорее ближе к уровню старшего разработчика. В основном «промежуточное» положение определяется опытом, поскольку обычно «мидл» успевает пройти весь цикл разработки хотя бы раз, а также совершить множество простейших ошибок и извлечь из них уроки.
Как вычислить «джуна»
Младшие разработчики неопытны: иногда это выпускники, которые только начинают работать на полную ставку. В их голове основная задача — заставить код работать. Если приложение работает — значит, оно хорошее.
Писать простой код — это сложная задача. И младшие разработчики этого делать не умеют: обычно код у них довольно своеобразный. Узнать их можно по причудливым однострочникам и чрезмерно сложным абстракциям — так «джуны» стремятся показать себя и пытаются дать понять другим, насколько хорошо они умеют программировать. Но это неверный подход.
Младшие разработчики сосредотачиваются на «компьютерной» части кода, упуская из виду «человеческую».
Как пишут код «сеньоры»
Глядя на код старшего разработчика, можно подумать: и это всё? А где остальное? Достаточно опытный разработчик пишет простой, понятный и, возможно, местами даже чересчур прямолинейный код — и это одно из самых важных качеств, если говорить о программировании. «Сеньор» следует принципу KISS, гласящему, что код должен быть простым и понятным: «Keep it simple, stupid»
Поэтому у старшего разработчика совершенно другой подход к написанию кода: он учитывает удобство дальнейшей поддержки и масштабируемость. Это совершенно не похоже на мышление младшего разработчика: «сеньор» думает о тех, кто будет работать с кодом, а «джуну» важно в первую очередь заставить код работать.
Не программированием единым
Помимо навыков программирования, есть и другие факторы, которые могут подсказать, что за разработчик перед вами.
Младшие разработчики, как правило, выполняют самые простые и не самые важные задачи; они не занимаются разработкой архитектуры. Разработчики среднего уровня тоже не разрабатывают решения, а просто выполняют задачи, однако их меньше контролируют — если задание довольно типовое. А вот «сеньоры» могут разработать приложение совершенно самостоятельно.
Это не значит, что у старшего разработчика по ходу дела не возникает вопросов: у любого из нас каждый день появляется множество вопросов, и «сеньоры» тут не исключение.
Разница в том, что последние знают, как задавать правильные вопросы и что делать с полученными ответами. Менее опытные разработчики могут задавать правильные вопросы, если речь идет о привычных им задачах, но в более сложных случаях им приходится обращаться за помощью.
Старший разработчик никогда не теряется и знает, как правильно действовать, получив ответ на вопрос. Это не значит, что он не будет просить совета у других — иногда лучшим решением бывает именно обратиться за помощью к тем, кто имеет больше опыта в данной области.
Разработчик среднего уровня также должен уметь задавать правильные вопросы, если только это не очень сложные задачи, требующие глубокого уровня знаний.
А вот в случае «джунов» не следует ожидать, что они смогут задавать нужные вопросы: у них недостаточно практики, поэтому ими должны руководить более опытные коллеги. Младшего разработчика следует обеспечить необходимыми ресурсами или хорошенько подтолкнуть в правильном направлении.
Переход на следующий уровень
Мы все хотим совершенствоваться, в том числе профессионально. Но какие шаги можно предпринять, чтобы перейти на следующий уровень?
От «джуна» — к «мидлу»
Начинающие разработчики не обладают богатым опытом, поэтому важно хотя бы пару раз пройти весь цикл разработки — таким образом вы сможете встретить на своем пути множество ловушек и научитесь их избегать.
Что касается программирования — следует научиться писать простой код: представьте, что после вас над проектом будет работать другой человек. Кроме того, придется научиться заниматься отладкой — это углубит понимание того, что происходит во время работы программы.
Также необходимо ознакомиться с лучшими методиками и побольше узнать об архитектуре, производительности, безопасности и т. д. Закройте пробел в знаниях, отделяющий вас от среднего уровня.
От «мидла» — к «сеньору»
Разработчикам среднего уровня подняться выше может быть довольно сложно: некоторые остаются на этом уровне всю свою карьеру.
Старший разработчик знает, в каких случаях можно пойти на компромисс, и когда этого делать ни в коем случае нельзя — потому что он успел проверить это на собственном горьком опыте.
Чтобы перейти на уровень «сеньора», нужно быть готовым к выполнению задач, за которые никто понятия не имеет, как браться. Нужно знать и уметь больше, чем просто делать свою работу.
Кроме того, как старший разработчик вы должны помогать менее опытным: вы для остальных — спасательный круг, за который можно ухватиться, когда не знаешь, как что-то сделать.
В свете этого неудивительно, что «сеньоры» полностью владеют своим техническим стеком. Нужно не просто уметь программировать, а знать все инструменты и приложения, которые используются в нанявшей вас компании.
Заключение
Разница между «джуном», «мидлом» и «сеньором» заключается не только в многолетнем опыте. Да, можно с уверенностью сказать, что у последнего навыки гораздо более развиты, чем у разработчиков младшего и среднего уровня. Но знание — не самый важный фактор.
Опытные разработчики пишут более простой код и подходят к этому иначе. Но кроме того, чтобы уметь программировать, очень важно также знать, какие вопросы задавать и что делать с полученными ответами. Именно старший разработчик — тот человек, чей богатый опыт позволяет не растеряться и в любой ситуации найти решение.
«Джуну», чтобы расти дальше, нужно постараться научиться писать простой код и пройти через несколько полных циклов разработки. Чтобы подняться выше среднего уровня, нужно сосредоточиться на изучении чего-то большего, чем просто рутинные задачи по исправлению ошибок. Вы должны быть готовы брать на себя самые сложные задачи и полностью овладеть своим техническим стеком. Еще одна обязанность старшего разработчика — выручать менее опытных.
Напоследок процитирую Мартина Фаулера:
«Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку»
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
Источник
Чем различаются между собой различные категории программистов (Junior, Middle, Senior и т.д.)
В сфере разработки программного обеспечения сложилась определённая градация специалистов по категориям. Чем отличаются эти категории друг от друга (помимо зарплаты)?
На самом деле эти отличия довольно условны, так как очень сильно зависят от специфики компании и проекта. Вполне может оказаться, что один и тот же специалист в одной компании будет соответствовать позиции middle, а в другой его знания и навыки более подходят для senior.
Также категории программистов довольно слабо, если вообще связаны со стеком технологий, потому что они отражают совершенно другие профессиональные и личные качества. Кроме того, стек технологий имеет свойство со временем меняться по различным причинам, но наработанный опыт и т.д. остаётся с человеком практически всю его жизнь.
Так какие же бывают категории программистов и чем они отличаются.
Trainee
Читается как «трейни». Именно эта (а вовсе не junior) самая первая категория, с которой начинает свой путь любой программист.
Лучше всего её можно охарактеризовать цитатой из знаменитого фильма: «Я не волшебник. Я только учусь».
По своей сути trainee это ученик или стажёр. Он только осваивает основы профессии и потому самостоятельно может решать только учебные задачи. Рабочие задачи ему пока не по силам.
Junior
«Джуниор» или «джун». Молодой специалист.
Самое важное здесь слово именно «специалист», т.к. в распоряжении «джуна» уже имеется минимально необходимый «багаж» знаний и навыков для самостоятельного выполнения рабочих задач.
Опыт у него обычно также минимальный или отсутствует вовсе.
«Джуну» уже нет необходимости объяснять базовые вещи, в то же время у «джуна» вопросов ещё значительно больше, чем возможностей в плане работы. Поэтому «джуны» чаще всего выполняют простые и некритичные для проекта задачи под присмотром более опытных коллег.
Middle
Как следует из названия («middle» в переводе с английского означает «средний») к этой категории относятся программисты средней руки.
«Мидл» это первая категория, в которой допускается самостоятельная работа.
На стадии «мидла» у программиста уже достаточно знаний и опыта для того, чтобы без посторонней помощи разработать тот или иной функционал или исправить ошибку по чётко сформулированному техническому заданию. Но, для более сложных задач квалификации пока не хватает.
Также «мидлы» по праву являются основной «рабочей единицей» во многих (если не в большинстве) проектах и компаниях потому что очень часто большинство задач по сопровождению и даже по разработке новых программ представляют собой рутину с которой «джун» не справится, а «сеньора» привлекать слишком затратно, т.к. работу в необходимом качестве может выполнить и «мидл».
Senior
«Сеньор» или старший программист. Опытный специалист высокой квалификации, обладающий обширными знаниями не только по программированию или по проекту в рамках своей компетенции, но и в смежных областях. Это позволяет «сеньору» видеть не только в рамках своего участка, но далеко за его пределами.
«Сеньорам» могут быть поручены задачи самой различной степени сложности не только по разработке или сопровождению, но и по проектированию, но обычно им достаётся сложность выше средней (иногда даже нетривиальные задачи). «Сеньору» можно поставить задачу в общих чертах (он сам сможет найти недостающие части головоломки и при необходимости задать нужным людям правильные вопросы).
Также «сеньор» способен не только сам проникнуться задачей, но и объяснить её младшим коллегам. Поэтому «сеньоры» нередко становятся наставниками «джунов» или помогают тимлидам.
Начиная с «сеньора» программист может не просто самостоятельно работать, но и вести проекты.
Lead
«Lead», «лид» или «ведущий». Следующая за «сеньором» категория программистов.
«Лид» уже накопил достаточно знаний и опыта чтобы вести сложные проекты и даже управлять процессами, связанными с разработкой.
На этой ступени развития программист оказывается перед выбором одного из двух путей.
Первый путь – это рост в направлении менеджмента. После позиции тимлида уйти в руководители проектов и т.д.
Второй путь – продолжать развиваться как технический специалист и стать так называемым «техлидом». Высококвалифицированными специалистом, который способен принимать ключевые решения по архитектуре и программной реализации всего проекта. Продолжая своё развитие дальше «техлид» может полностью уйти в область проектирования и стать системным архитектором (system architect).
Системный архитектор
Или иногда просто «архитектор». Специалист с очень большим опытом и очень высокой квалификацией, который отвечает за проектирование программного обеспечения.
В ряде компаний системный архитектор может также участвовать в написании кода. Некоторые системные архитекторы сами не хотят оставлять программирование, чтобы не растерять навыки или просто потому, что им очень нравится программировать. Однако, как бы там ни было основная сфера деятельности системного архитектора — это проектирование.
Как правило системные архитекторы работают над крупными проектами в больших корпорациях. Там, где специалистам подобного уровня есть где развернуться. И, собственно, наряду с требованиями к знаниям и опыту это одна из причин почему специалистов данной категории довольно мало.
Переход между категориями
Переход между категориями возможен как «снизу вверх», так и «сверху вниз». Вначале рассмотрим первый вариант.
Самый простой переход между trainee и «джуном». Выпускники ВУЗов и даже просто курсов программирования вполне могут получить статус «джуна» автоматически.
Переход из «джунов» в «мидлы» несколько сложнее, но и здесь тоже ничего особенного не требуется. Обычно необходимые для этого знания и опыт можно накопить за 1-3 года работы. Более того специалисты с опытом более 3 лет вполне могут рассчитывать стать «мидлами» уже на «старте» своей работы в компании.
Стать «сеньором», «лидом» и, тем более системным архитектором уже гораздо труднее. Т.к. для этого помимо соответствующих знаний и опыта требуются умении их правильно применять и соответствующий психологический склад (назовём это так).
Что касается перехода между категориями «сверху вниз».
Такое в основном происходит при смене стека технологий, когда приходится осваивать принципиально новый инструментарий, особенности работы с которым ещё не известны, или длительного перерыва, когда многое просто забыто.
Категория и должность
В своих размышлениях относительно карьерного роста в программировании многие ошибочно полагают, что для того, чтобы занять ту или иную позицию нужно обязательно достигнуть соответствующего профессионального уровня. И следовательно, если кто-то эту позицию в компании занимает, значит он профессионал соответствующей категории.
К сожалению, это далеко не всегда так.
Дело в том, что должность это по сути лишь условное название для той или иной тарифной ставки в штатном расписании компании. Должность можно назвать как угодно и закрепить за ней какие угодно полномочия. Также при желании можно кого угодно на неё назначить.
Поэтому, если человек занимает должность «сеньора» или «лида», то это ещё не гарантирует, что перед вами высококлассный специалист и наоборот если человек в должности «мидла» это ещё не говорит о том, что это «серая офисная мышь».
Справедливости ради стоит отметить, что есть и не мало адекватных проектов, и компаний, где соблюдается корреляция между уровнем профессионализма и должностью. Но, вопросы карьерного роста, это уже тема для отдельной статьи.
Источник