А ещё мы создали Подбор: платформу, где собраны больше 400 000 профилей разработчиков из 10 открытых источников
Close
Juniors, Mid- и Senior'ы
В чем разница?
В чем сок: неважно, сколько разработчику лет и какой у него стаж программирования. Джуниор разработчик может быть ох как старше сеньора, и не обязательно иметь больше опыта — всё дело в скиллах. А Сеньор не должен быть экспертом во всём-чём-только-можно, но навыков у них будет явно больше, чем у джунов и миддлов. Не только уровень технологией отличает одних от других, ага.
Знания
Определяющий фактор в делении программистов по уровням. Для перехода на следующую "ступень" нужно неплохо потрудиться и изучать шаблоны проектирования, архитектуру, способы автоматического тестирования, почитать про производительность, короче прокачивать себя по всем фронтам. Желательно — параллельно.

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


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

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

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


Ху из ху?
Junior

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

Джуниоры неопытны, большинство — только выпустились из университетов и едва приступили к своей первой full-time работе. Но в этом-то и смысл: новичка с горящими глазами можно "вытачить" под себя, они часто работают сверхурочно и делают всё возможное, лишь бы прокачать свои навыки. Да, они косячат — но и стоят дешевле. Мышление джуна заточено на то, чтобы заставить код работать. Всё, что работает — то и хорошо.

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

Но: Junior должен знать язык, на котором ему предстоит писать. Не уметь-абсолютно-все, но чувствовать себя уверенно при получении тестового задания.
Senior

Глядя на код senior-разработчика, вы можете подумать: и что, это все? Где остальная часть кода?

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

Ну и где код?
включите воображение и представьте, что это вы такие
Есть такой суперский принцип KISS: Keep it simple, stupid! (англ. — будь проще, дурак!)

Принцип мышления сеньора кардинальным образом отличается от джуна. Код, написанный senior-разработчиком, будет создан с учетом удобства обслуживания и масштабируемости.

Еще раз: senior думает о людях, которые должны работать с кодом, а junior просто думает о том, как заставить код работать.
Короче, дело не только в коде

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

Джуны обычно выполняют самые простые задачи и простые задания. Они не занимаются архитектурой. И задают много вопросов.
Не ждите, что он сразу начнет делать работу без подсказок. При приеме на работу для разработчиков любого уровня и стажа наиболее важным фактором является возможность профессионально расти. 71% новичков ожидают, что им помогут в совершенствовании навыков. Будьте благосклонны и проконтролируйте, чтобы на нового сотрудника не обрушилась разом лавина задач, и кто-то в команде помог бы со всем разобраться, обеспечил бы ресурсами и запасом мотивирующих пинков. Задача тим-лида не прессовать неопытного разработчика, а помочь ему и наставлять на пути развития.

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

Миддлы занимаются рутинными задачами. Помощь обычно требуется по более сложным вопросам.


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

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

*по результатам опроса Hacker Rank
Самообучение является нормой для разработчиков любого уровня. Хотя у 69% разработчиков есть профильное образование, примерно 73% открыто говорят, что они, по крайней мере, частично самоучки.

В среднем разработчики знают 4 языка и хотят выучить еще 4.

Успешным может быть только тот разработчик, который совершенствует навыки, потому что технологии бегут вперед. И ему надо успевать. Любопытство и неподдельный интерес — тоже залог роста девелопера.
Заключение

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

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

Давайте не забывать, что все с чего-то начинали. Чтобы вырастить из джуна настоящего гуру нужно, чтобы вся команда разработки была готова помогать и обучать. А чтобы вырастить из миддла сеньора уже потребуется наметанный глаз рекрутера и тим-лида. Важно разглядеть того, кто готов расти, а не просто пригреться где-то.
Закончим цитатой Мартина Фоулера:

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."

// англ. — любой дурак может написать код, который поймет компьютер. Хороший разработчик пишет код, который могут понять люди.