Junior, middle и senior разработчики в чём отличие — отвечают эксперты


Оглавление (нажмите, чтобы открыть):

Кто такой джуниор и стоит ли идти им работать?

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

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

Градации программистов и фулстек

Есть четы­ре гра­да­ции в про­грам­ми­ро­ва­нии: ста­жёр, джу­ни­ор, мидл и сеньор (Junior, Middle, Senior).

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

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

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

За опытом

Если хоти­те быст­ро про­ка­чать­ся в язы­ке про­грам­ми­ро­ва­ния, быть джу­ном — иде­аль­ный вари­ант. Есть ком­па­нии, кото­рые не гото­вы пла­тить мно­го нович­кам, но гото­вы вкла­ды­вать­ся в их раз­ви­тие, что­бы вырас­тить себе силь­но­го про­грам­ми­ста. Они пла­тят по 30–40 тысяч руб­лей, но помо­га­ют вам осво­ить язык: ком­мен­ти­ру­ют код, дают кура­то­ров, обу­ча­ют. При этом вы тоже буде­те делать что-то полез­ное для ком­па­нии.

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

За деньгами

Вто­рой вари­ант рабо­ты джу­ни­о­ром — сра­зу начать зара­ба­ты­вать, но тут слож­нее. Немно­гие ком­па­нии гото­вы сра­зу пла­тить нор­маль­ные день­ги нович­кам в надеж­де, что они сами все­му научат­ся. Мож­но рас­счи­ты­вать на зар­пла­ту все­го на 10–15 тысяч боль­ше, чем в пер­вом вари­ан­те, но тре­бо­ва­ния тут дру­гие. От вас будут ждать, что вы сами спо­соб­ны выдать рабо­чий код. Побла­жек на то, что вы толь­ко начи­на­е­те, не будет.

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

Медианные зарплаты джунов

Мы посмот­ре­ли на ста­ти­сти­ку зар­плат в каль­ку­ля­то­ре «Мое­го кру­га». Дан­ные на нача­ло 2020 года:

Для срав­не­ния: меди­ан­ная зар­пла­та фулстек-мидла — 80 тысяч.

Что в итоге

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

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

Если не бро­сать раз­ви­тие и про­грам­ми­ро­ва­ние, мож­но вырас­ти в мид­ла с зар­пла­той и воз­мож­но­стя­ми поболь­ше, но о них — в дру­гой раз.

Топ 15 вопросов о разработчиках: просто о сложном

Разработка ПО: в чем отличия junior, middle и senior разработчиков?

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

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

По уровню квалификации разработчиков можно разделить на три группы: junior, middle и senior.

Кто такой junior developer?

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

Чем занимается middle developer?

Миддл (от англ. Middle developer — pазработчик среднего уровня). Обладает глубокими знаниями одного, а чаще нескольких языков программирования, активно применяя в своей работе фреймворки, библиотеки данных, клиент-серверные технологии. Имеет понимание логики программирования сложных проектов, помимо реализации функциональных особенностей программ решает задачи обеспечения безопасности и устойчивости к пиковым нагрузкам разрабатываемых систем.

Как правило, миддл-разработчик это программист в классическом понимании процессов. Он много работает с кодом, выполняя основной объем программирования в проекте.

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

За что отвечает senior developer?

Ведущий разработчик ( англ. Senior developer) это наиболее ценный специалист в IT-компании. Ведущий разработчик отлично знаком с методами и инструментами анализа и проектирования, процессами разработки программного обеспечения и языками программирования, хорошо разбирается в клиент-серверных технологиях, работе браузера, серверах веб-приложений, базах данных, операционных системах и офисных пакетах. Для него это база, на фундаменте которой принимаются решения по внедрению многоуровневых систем.

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

Именно синьор — главное лицо, которое несет ответственность за качество и сроки разработки. Следующий шаг на карьерной лестнице над senior-developer — это руководитель IT-отдела или технический директор фирмы.

Разработчики мобильных приложений — это обычные программисты или особенные?

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

Чаще всего, под мобильной разработкой подразумевается разработка для определенной мобильной платформы (iOS, Android). Такие приложения называются нативными. Они требуют использования специальных языков программирования и опыта работы по стандартам, выдвигаемым каждой платформой.

iOS vs Android разработчики:

  • iOS разработчики пишут приложения на SWIFT и Objective C для iPhone, iPad и других устройств на платформе Apple;
  • Android разработчики работают с Java (официальным языком Android Studio), Kotlin, BASIC, Python, PhoneGap и т. д. Используют комплекты разработки для Android (NDK, SDK, Android OREO и другие альтернативные среды для Android).

И хотя логика подходов к программированию на мобильных устройствах общая, база знаний разработчиков iOS и Android, как и стандарты АйОС и Андроид сильно различаются.

Кто такие веб-разработчики?

Веб-разработчики создают и поддерживают сайты, порталы и веб-приложения. Их основные языки — это HTML5 (язык структурной разметки данных) и CSS3 (таблицы для управления стилями отображаемых в браузерах элементов), а также JS и PHP — языки программирования, которые используются для создания пользовательских интерфейсов и оперативного выполнения команд, вводимых пользователем в интерфейсе программы без применения сложной процедуры клиент-серверных технологий, требующих знания верхнеуровневых языков программирования.

Опытные web разработчики также владеют дополнительными языками программирования, такими как Python, Ruby, Perl, .NET.

Чем занимаются web разработчики?

Создание систем управления контентом

Языки программирования

Frontend и backend программирование

  • Фронтендеры создают ту часть сайта, которую видит пользователь. Они отвечают за реализацию пользовательского интерфейса и визуализацию сайта.

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

Разработчик — веб-мастер — программист: как найти отличия?

Изучая вакансии на рынке или просматривая резюме, вы могли встретить такие термины как : веб-разработчик, веб-мастер, веб-программист и разработчик. Давайте разберемся, кто есть кто.

Web разработчик

Веб-мастер

Web программист

Кто такие веб-дизайнеры?

Довольно часто термин web дизайнер используется как синоним разработчика веб-сайта. В профессиональной среде это два разных термина.

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

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

Junior, middle и senior разработчики: в чём отличие — отвечают эксперты

Нам пришел вопрос от подписчика Tproger, которым мы хотим поделиться с вами:

«Чем отличаются junior, middle и senior разработчики? Как происходит переход между этими уровнями?»

Мы обратились за разъяснением к нашим экспертам, а полученные ответы предоставляем вашему вниманию.

Дмитрий Рогов, директор по технологическому развитию ИТ-компании «АйДи – Технологии управления»

Junior, middle и senior разработчики – градация, которую чаще всего используют на ИТ-рынке, но далеко не всегда понимают, как именно она строится. Обычно junior-разработчика определяют как новичка с реальным опытом работы до 1-1,5 лет, middle-программиста – как все еще обучающегося специалиста с опытом 1-3 года, а senior – как профессионала, проработавшего в компании добрых 5-6 лет.

На самом деле эта градация не совсем корректна. Есть те, кого можно и через 4 года работы в компании отнести к разряду новичков, а есть настоящие «бриллианты», которые всего через несколько месяцев после выхода на рынок уже проявляют самостоятельность и не бегают каждые 5 минут с вопросами к старшим коллегам. Поэтому, на мой взгляд, иерархию ИТ-специалистов можно и нужно выстраивать в зависимости от тех профессиональных навыков, которые они осваивают.

Так, junior – это обычно человек с маленьким опытом разработки или вообще без него. Конечно, он обладает теоретическими знаниями и, вполне вероятно, профессиональным образованием или, как минимум, освоенной программой курсов по программированию. Часто – понимает основы алгоритмизации и основные структуры данных, возможности выбранного языка программирования и выбранного 1-2 фреймворков. Однако эти знания, как правило, не систематизированы, обрывочны и не подкреплены практическим применением. Поэтому работать ему приходится под присмотром руководителей или старших товарищей: код, который он пишет, нуждается в проверке со стороны более опытных специалистов.

Middle-разработчик обычно обладает практическим опытом разработки. Как правило, при этом он знает несколько языков программирования/фреймворков. И благодаря тому, что его знания систематизированы, такой специалист способен самостоятельно решать задачи – за ним почти не приходится переписывать код – и даже может передавать свои знания junior-разработчикам.

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

Мастер Йода рекомендует:  VK API на Python часть 3, делаем чат-бота

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

Чтобы развиваться в ИТ, нужно понимать, что придется постоянно держать руку на пульсе – технологии развиваются настолько стремительно, что даже профессионалы своего дела вынуждены постоянно заниматься самообразованием: читать новые статьи и исследования по теме, тестировать новые продукты и технологии. Любые знания в этой сфере полностью устаревают уже через 3-5 лет, и если нет постоянного роста, можно из senior снова «скатиться» на позицию middle.

Михаил Кауфман, директор флагманского проекта Galenos компании «ТехЛАБ»

В разных компаниях названия должностей программистов могут различаться – все зависит от принятых корпоративных стандартов. Не принципиально, каким словом принято пользоваться – специалист, инженер, разработчик, или каким-то другим. Для учета ранга сотрудникам чаще всего применяют трехступенчатую систему в виде привычных нашему уху «младший специалист, специалист, старший специалист» или идентичных по смыслу интернациональных «junior, middle, senior developer».

К примеру, разработчик, проработавший более года-двух и уже ответственный за разработку каких-то спецификаций ИТ-систем, может называться в одних организациях middle-разработчиком, а в других – инженером-программистом.

Junior – это, как правило, специалист, умеющий на базовом уровне работать с принятыми в проекте технологиями, но не имеющий за плечами ни «багажа» из пары лет опыта, ни знаний по текущему проекту. «Юниор» обычно работает под строгим присмотром старших коллег. Главная задача новичка на этом этапе – максимально глубоко погрузиться в специфику деятельности компании, поэтому можно и нужно задавать вопросы товарищам по цеху, интересоваться деталями рабочих процессов и вообще всячески путаться у всех под ногами. Для него важно показать, что он может одинаково результативно учиться и выполнять профессиональные задачи. Именно в это время на новичка обычно готовы тратить время и усилия, чтобы максимально быстро и эффективно ввести в работу – и такую редкую возможность нужно использовать по полной программе.

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

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

«ТехЛАБ» вступил в Ассоциацию «Национальная база медицинских знаний»

Российский разработчик ИТ-систем для здравоохранения «ТехЛАБ» стал участником Ассоциации «НБМЗ». Она объединяет разработчиков и пользователей искусственного интеллекта в медицине. Вступление в Ассоциацию позволит «ТехЛАБ» получить доступ к новым валидированным биомедицинским данным, а также делиться с другими участниками своим опытом, связанным с разработкой ИТ-решений и их внедрением в медучреждениях.

«Системный софт» предложит клиентам решения ownCloud

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

Accenture: 69% покупателей готовы отказаться от бренда из-за агрессивного сбора данных

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

«Нетрика» создала региональную экосистему для разработчиков медицинских информационных систем

Компания «Нетрика» представила экосистему для разработчиков медицинских информационных систем на основе своего флагманского продукта «N3.Здравоохранение». «Нетрика» расширяет возможности государственных информационных систем в сфере здравоохранения (ГИСЗ) путём включения в цифровой контур специализированных решений. Такой подход позволяет на уровне региона создать экосистему из разработчиков информационных систем для медицины, которые имеют глубокую экспертизу в отдельных областях медицинских знаний.

«Инпро Технолоджис» и «АМДтехнологии» заключили партнерское соглашение

Компании «Инпро Технолоджис» и «АМДтехнологии» заключили партнерское соглашение для совместной реализации проектов по строительству дата-центров, использующих технологию непосредственного жидкостного охлаждения.

ООО “Информационно-Аналитический Центр”

2007 — 2020. Все права защищены

Вся информация на данном сайте носит исключительно справочный характер и не является публичной офертой или рекламой

Карьерный рост: в чем разница между Junior, M >

В форме «вопрос-ответ» сайт proglib.io кратко изложил ключевые особенности карьерного роста разработчика и отличия позиций Junior, Middle и Senior.

Имеется ли российский аналог разделения позиций Junior, Middle и Senior?

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

Почему чаще применяют разделение на Junior, Middle и Senior?

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

Существует ли какой-то способ объективизации разделения позиций?

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

Может ли данное разделение приводить к занижению зарплаты?

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

Зависит ли скорость карьерного роста от области программирования?

Зависит. Чем специфичнее область, тем медленнее рост. То есть, например, в вэбе в среднем становятся Senior быстрее, чем в геймдеве. Реальный уровень определяется разнообразием задач в практике программирования. Распространены случаи, когда специалисты делают в течение длительного времени однообразный код, и остаются по опыту на позиции Junior. Зачастую это вина не только самих разработчиков, но и компании.

Что в среднем представляют собой позиции Junior, Middle и Senior?


Junior: студент старших курсов или выпускник, без существенного опыта работы, обычно 0.5-1.5 года реального опыта. Решает стандартные задачи с незначительными рисками. Джуниору нужно помогать и проверять результаты, не давать слишком сложные и длительные задания. После выполнения приходится регулярно делать code review. Владение предметной областью неполное. Нужно понимать, что часть задач требует дополнительного времени для освоения инструментария. Однако человек должен сам к этому стремиться.

Middle: Основной работник, умеющий самостоятельно выполнять поставленные перед ним задачи. Обычно 1-3 года опыта. Простые задачи можно не ревьюить. Разработчик может делать длительные таски на 1-2 недели и принимать архитектурные решения. Справляется с нестандартными задачами, а стандартные делает быстрее и с меньшим количеством багов, чем джуниор. Предметной областью владеет достаточно, чтобы обсуждать с коллегами, спорить и находить решения. То есть уверенно знает ключевые технологии.

Senior: работник, хорошо знающий предметную область. Опыт фултайма 4-7 лет. Проводит code review, мыслит проектом на уровне архитектуры и понимает долгосрочные последствия технических решений. Умеет предложить глобальные решения и (если это имеет смысл) альтернативные стеки технологий. Нередко совмещается с управляющими должностями.

Junior, Middle, Senior — в чем разница и куда дальше?

Привет всем! Меня зовут Александр Демура, в IT я работаю с 2004 года, сейчас руковожу центром разработки DataArt в Одессе (сам я из Питера, но это — отдельная история). В мои непосредственные обязанности входят найм и развитие наших специалистов, поэтому рассуждения на тему «синьёрности» сотрудников и качествах, необходимых для той или иной роли, для меня актуальны и привычны. Позволю себе традиционный дисклеймер — в этой статье изложен мой персональный взгляд (к счастью, в DataArt так можно — необязательно всем ходить строем по линейке). Написанный мной текст не претендует на истину в последней инстанции и вряд ли станет откровением для людей, уже разбирающихся в вопросе. Зато он будет полезен тем, кто только начинает путь в IT или не очень понимает, как и куда развиваться дальше, чувствует себя недооцененным или просто хочет расширить кругозор.

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

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

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

Интерн

В DataArt есть практикантская программа, куда мы берем людей даже без опыта работы. У них есть три месяца, чтобы под руководством опытного ментора дорасти до уровня «джуниор». Для позиции интерна есть два основных требования:

  1. Хороший английский.
  2. Понимание выбранного инструмента и умение им пользоваться.

Требование к знанию английского у нас, на самом деле, общее для всех. DataArt — международная организация, большинство наших заказчиков находятся в США и Западной Европе, и даже внутренние коммуникации уже все больше на английском. Если человек — грамотный технический специалист, мы поможем ему разговориться и подтянуть язык — для этого есть корпоративные курсы и куча дополнительных инициатив. Но если человек без технического опыта (а интерн — как раз такой) еще и слабо знает английский, ему нужно обладать уникальными качествами, которые перекроют оба этих недостатка.

Про инструмент мысль тоже, мне кажется, простая. Если вы приходите на роль программиста, инструмент для вас — язык программирования со средствами разработки, которыми нужно уметь пользоваться. Если потенциальный интерн хочет разрабатывать на .NET, но не может объяснить, что делает CLR, чем «Equals» отличается от «==» или реализовать простейший алгоритм — шансов у него нет никаких. Приходить с нулевыми знаниями и надеяться, что всему научат на месте, параллельно выплачивая зарплату, бесполезно — слишком большой конкурс. За плечами многих кандидатов профессиональные курсы, они с легкостью отвечают на все теоретические вопросы и даже имеют опыт программирования «для себя». Конечно, таких людей берут в первую очередь.

Junior

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

Для джуна важны следующие качества:

  1. Желание развиваться и учиться (а на своих ошибках — особенно).
  2. Энергия и целеустремленность.
  3. Способность спокойно относиться к критике.

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

Middle

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

  1. Мидл-разработчик понимает, что именно делает приложение. Это позволяет глубже понять задачу, а, значит, точнее ее оценить и качественнее реализовать. Если требования не полностью покрывают какой-то сценарий, хороший разработчик обратит на это внимание на этапе планирования. А не когда приложение начнет валиться при любом нестандартном действии пользователя.
  2. Мидл-разработчик знаком со стандартными шаблонами и решениями при построении приложения в своей области, понимает, зачем они нужны, и умеет их применять. Стандартизация решений имеет большое значение при коллективной разработке кода, т. к. позволяет новому человеку быстрее разобраться, что к чему, и минимизирует количество ошибок. Понимание структуры типового приложения делает задачу его построения с нуля достаточно тривиальной, позволяет рассуждать о принципах правильной реализации и отличать хороший код от плохого.
  3. Мидл-разработчик понимает, что работает не один. Он умеет взаимодействовать с другими членами команды: может обсудить сложный момент с дизайнером, уточнить у бизнес-аналитика неполные требования или согласовать какое-то важное техническое решение с архитектором проекта (если такой есть) и, конечно, владеет соответствующими инструментами коллективной разработки.
Мастер Йода рекомендует:  10 браузерных игр, которые помогут изучить веб-разработку

Senior

Синьор — опытный разработчик, повидавший много кода, набивший кучу шишек и сумевший сделать из этого правильные выводы. Основная задача синьора — принимать правильные технологические решения в проекте. «Правильные» — это такие, которые приносят максимальную пользу бизнесу и минимизируют затраты. Хороший синьор не только понимает, что разрабатывает команда, но думает, какие задачи должно решить готовое приложение. Разрабатывая площадку для аукциона, синьор всегда задается вопросом о пиковой нагрузке и старается предусмотреть попытки конкурентной записи в таблицы БД. Он заранее думает об узких местах системы, о возможности ее масштабирования, помнит об уязвимостях и проблемах, вызванных неправильным использованием инструментов.

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

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

  1. Способность решать несколько более сложные задачи, делать это быстрее или лучше, чем средний разработчик, не имеет практически ничего общего с синьорностью. В нашей классификации человек, который это умеет, называется “Strong Middle”.
  2. Звание синьора невозможно получить быстро. Нужно наработать обширный опыт и понять, что отличает хорошо сделанный продукт от тяп-ляп-разработки, как проявляет себя технический долг, сколько стоит рефакторинг, зачем на самом деле нужны паттерны, и так ли необходимы бесконечные уровни абстракции. Необходимо самостоятельно принять важные решения и дать им пройти испытание временем, иначе оценить их не получится.
  3. Синьору необходимы хорошие коммуникативные навыки, потому что он должен не только предложить правильное решение, но и убедить в своей правоте заказчика и команду. Если вы не смогли отстоять хорошее решение и вместо него было принято плохое, винить в этом придется самого себя. Вариант «я же говорил» на уровне Senior уже не работает. С командой то же самое — мало знать, как надо, нужно еще и уметь это доходчиво объяснить. Тогда команда быстро растет и набирается опыта, избегая болезненных ошибок. Авторитарный подход («делайте, как я сказал») зачастую приводит к внутренним конфликтам, и ситуацию на проекте отнюдь не улучшает —нужно стараться этого избегать.
  4. Синьор не может обойтись без понимания устройства библиотек и фреймворков. Если инструмент разработки для вас — черный ящик, и вы составляете приложение из готовых частей, не зная, что у каждой из них под капотом, продукт всегда будет неустойчивым и непредсказуемым.

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

Что дальше?

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

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

Куда же развиваться синьорам? Многие программисты любят рассуждать о «потолке» — когда внутренний рейт (т. е. деньги, которые вы получаете за работу) приближается к внешнему (счету, выставленному клиенту за вашу работу) с минимальной маржинальностью. Они считают, что в этом случае дальнейший рост специалиста становится нецелесообразным для работодателя. Однако это не так, есть множество способов и дальше увеличивать свою ценность (по крайней мере, в DataArt). Поэтому позицию Senior Developer стоит рассматривать не как карьерное плато, а как плацдарм для дальнейшего развития, например, в одном из следующих направлений:

Технический эксперт

Статус технического эксперта подразумевает глубокое знание отдельной и специфической области. Например, можно быть экспертом в Azure/AWS и знать разнообразные сервисы, которые предоставляют эти платформы. Уметь делать Machine Learning или Computer Vision, знать все про уязвимости в вебе, понимать, как работают криптовалюты или правильно готовить Sharepoint. Такие задачи встречаются не каждый день, но, когда появляются, наступает звездный час технических экспертов. Без них подобные проекты были бы просто невозможны, и компания зачастую готова доплачивать за эти уникальные знания.

Индустриальный эксперт

DataArt старается развиваться в определенных доменных областях (путешествия, финансы, здравоохранение и т. п.). В каждом проекте программисты не только приобретают собственно технические знания, но и получают возможность заглянуть в бизнес заказчика, понять, как устроена индустрия, узнать характерные для нее проблемы и решения. Чего стоит построить свою платежную систему вроде PayPal? Зачем нужна система Sabre? Или что такое HIPAA, и какие ограничения она накладывает на разработку решений в области здравоохранения в США? Люди, которые обладают подобными знаниями, зачастую формируют костяк проекта и приносят компании и клиенту огромную дополнительную пользу. Поэтому его компенсация может превышать внешний рейт — компании сами готовы доплачивать таким людям сверх счета, выставленного заказчику проекта.

Фронтмен

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

Тимлид

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

Архитектор

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

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

Дополнительно: работа без посредников

Я хочу отдельно написать о работе без посредников, которую некоторые воспринимают как Святой Грааль для программиста. Казалось бы, все логично: находим заказчика, предоставляем ему свои услуги напрямую, весь рейт забираем себе — профит! Однако нужно понимать, что, кроме прибылей, на программиста в этом случае падают все сопутствующие риски. Нужно внимательно читать пункт контракта об ответственности сторон, знать законодательную и налоговую базу, придумывать механизм получения денег, действовать, если клиент не заплатил или неожиданно свернул работу. В DataArt эти вопросы решают специально обученные люди (продавцы, юристы, бухгалтеры), и даже если заказчик разорился и вышел из бизнеса с сумасшедшими долгами, разработчики все равно получат деньги в срок и спокойно перейдут в следующий проект. При работе напрямую — каждый оказывается сам за себя. Кроме того, большинство компаний тратят весьма осязаемые бюджеты на привлечение новых клиентов, поэтому прямые отношения с заказчиками, которых нашла компания, запрещены контрактом с той и другой стороны.

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

Junior, m >06.08.2020

На вопрос портала Tproger отвечает Сергей Дьяченко, заместитель директора по разработке программного обеспечения компании «Аэроклуб ИТ»:

Прежде всего, хочу сразу сказать — для нас данные уровни означают не только технические навыки (hard skills), но и навыки общения с людьми, работы в команде, готовность отвечать за свои решения (soft skills). Чем выше уровень разработчика, тем выше требования к нему в части soft-skills.

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

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


Middle-разработчики уже обычно имеют некоторый опыт, достаточный для решения типичных задач, могут аргументировать и объяснить свои решения, это командные «игроки».
Senior-разработчики в свою очередь обладают опытом и навыками, которые позволяют им участвовать в проектировании систем, обосновывать и принимать решения, влияющие на общую инфраструктуру. Также мы ожидаем от сотрудников этого уровня активного участия в обучении других членов команды.

В чем разница между junior-, middle- и senior-разработчиками

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

Знания

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

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

Работа с кодом

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

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

6-8 декабря 2020 пройдет хакатон Rosbank Tech.Madness. Нужно просто зарегистрироваться до 24.11 и ждать отбора. Описание идеи в заявке не требуется.

Как вычислить джуниора?

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

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

А что насчет сеньора?

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

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

Больше, чем просто программирование

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

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

Мастер Йода рекомендует:  Крутой мастер-класс по информационной безопасности

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

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

Переход на следующий уровень

От джуниора к мидлу

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

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

От мидла к сеньору

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

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

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

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

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Junior, Middle, Senior (уровни дизайнеров)

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

Junior — Jun — Джуниор

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

Наличие хотя бы 1 работы для примеров

Начальное понимание: композиции, теории цвета, типографики

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

В основном решает простые задачи длительно, в дизайне встречаются “банальные” ошибки.

Как перейти на следующий уровень?

Читать профессиональную литературу по веб-дизайну — подчеркнете фундаментальные основы и технические аспекты в веб-дизайне;

Ежедневно анализировать работы других дизайнеров — так вы накопите представления для решений разнообразных задач;

Читать статьи, желательно максимально эффективные и недавние — поможет оставаться в тренде, осваивать новые технологии;

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

M >Есть достаточно опыта, постоянно держит себя в тренде. Есть база готовых решений и задачи выполняет в разы быстрее Джуниора. Может критически анализировать веб-дизайны.

Наличие полноценного портфолио (минимум 4-6 работ) качественно оформленных презентаций дизайнов сайтов

Как перейти на следующий уровень?

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

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

Изучать английский хотя бы до уровня понимания брифа или ТЗ. Это как раз средний уровень владения языком.

Пробовать писать тематические статьи.

Развиваться в графическом дизайне.

Senior — Sen — Сеньор

Профессионал своего дела. Самостоятельно придумывает решения для выполнения задачи сайта.

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


В каждой работе из портфолио просматриваются необычные тематики (новые сервисы), нестандартные решения (которые применяются с помощью Front-end, Game-design, 3D-graphics и тому подобное, взятые извне и наоборот нечто визуально новое, инновационное или просто креативно)

Практически все “элитные” дизайны, которые выполняет Сеньор, скорее всего, имеет целевую аудиторию англоязычную, поэтому знание английского среднее и в целом разговорный сеньоры уже имеют в рукаве. Исключением являются те, у которых есть в команде специалисты, занимающиеся переводом.

Как держать себя “в форме” и развивать сферу веб-дизайна?

Анализировать решения своих “коллег” в топовом веб-дизайне, поддерживать дискуссии, выискивать проблемы современного дизайна, искать решения и внедрять их.

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

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

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

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

Помните о том, что выбирая данное направлениe развития, Вашей профессиональной необходимостью будет развиваться творчески, креативно. Записывайте свои идеи, улучшайте их со временем, старайтесь с помощью своей профессии сделать нашу отрасль максимально полезной для человечества. Помните:

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

Ранги разработчиков. Что означает Junior, M >01.04.2020, 18:45. Просмотров 5180. Ответов 6

01.04.2020, 18:45

Уровень программиста (Junior Developer, Middle Developer, Senior Developer), как проверить?
Доброго времени суток. Какие есть тесты для проверки своего уровня программирования(может на хабре.

Какие требования нужно выполнить, чтобы стать Junior developer, Middle и Senior developer?
Быть может не совсем в ту ветку форума написал, но мне показалось, что здесь я смогу получить.

JavaScript Developer (Junior / Middle / Senior), М/МО
В российский офис компании Wiley (крупная американская издательская компания, www.wiley.com).

Требуется Senior/Middle/Junior C# (web) Developer
Требуется: Senior/Middle/Junior C# (web) Developer (можно удаленно) для IT-компании Virtoway. О.

Java developer (Junior/Middle/Senior), Москва/МО/Нижний Новгород
В российский офис крупной американской издательской компании “John Wiley & Sons, Inc.”.

01.04.2020, 19:15 2

Решение

Это условности, их пишут в вакансиях. Что они означают
1. junior — нам нужен человек, который под контролем более опытного сможет писать г**нокод, но он будет как-то работать и мы ожидаем, что этот человек поумнеет.
2. middle нам — нам нужен человек, который сможет хорошо работать без надзора, а под надзором нашего крутого спеца сможет решить любую задачу
3. senior — нам нужен человек, который реально понимают чем программисты занимаются на работе для того, чтобы думать за других.

По факту например в конторе, где я работал, у всех в трудовых было написано «инженер», а у некоторых «старший инженер».

Junior и Senior: в чём разница?

Я годами пытался понять, что отличает Senior-специалиста от Junior-специалиста. 10 лет опыта работы с Java или .NET? Докторская степень в информационных технологиях? Количество законченных проектов?

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

А потом до меня дошло. Я участвовал в конференции IDDDTour в Бельгии, где обсуждались вопросы проблемно-ориентированного программирования. Знаете, что меня удивило? Помещение почему-то не было наполнено молодыми специалистами, которые впитывали мудрость опытных разработчиков.

В аудитории сидело 70 опытных экспертов, которых действительно волновала та область, в которой они работали. Они обменивались знаниями и идеями, причём отвечали друг другу на вопросы из разряда «почему?», а не «как?». Они вышли за технические границы своей области, и были сфокусированы на бизнес-ценности своего продукта.

Вот такой подход и определяет настоящего сениора.

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

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

Всё-таки «джуниор» звучит достаточно… ммм… снисходительно. Джуниорство не имеет ничего общего с возрастом, только с уровнем навыков.

Вспомним о модели Дрейфуса

(пятиступенчатая модель умственной деятельности, задействованной в приобретении навыков)

Немного предыстории для тех, кто не в курсе.

В начале 1980-х гг. два учёных брата, Хьюберт и Стюарт Дрейфус, выступили с докладом в научно-исследовательском центре воздушных сил США, посвящённому подготовке пилотов. Изначально братья изучали проблемы искусственного интеллекта, а потом перешли к исследованию процесса познания как такового. Так появилась модель приобретения навыков, названная их именем. Эта модель существенно отличается от многих подобных построенных матриц компетентности. Во-первых, тем, что она была успешно применена на практике в сфере здравоохранения при интенсивном обучении медсестёр. Во-вторых, тем, что эта модель описывает не только сами стадии развития навыков, но и обратную реакцию человека.

Как это работает в реальной жизни?

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

Разбить текст на предложения и выделить все предложения, содержащие в себе определённые слова.

Эффективность разных мини-групп различалась в десятки раз.

Самая быстрая команда нашла решение за 30 секунд:

return
source.Split(‘.’, ‘!’, ‘?’)
.Select(_ => _.Trim())
.Where(_ => searchFor.All(_.Contains));

Самая медленная команда из трёх программистов не решила задачу и за 45 минут (!). Все тесты были зелёными, но программный код не работал. Тем не менее, после окончания упражнения они всё равно были довольны: ведь тесты были в порядке. Эта команда так и не поняла, что они удалили несколько операторов, и верификация получалась ложной.

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

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

Бельгийский разработчик и основатель своего дела Том Янссенс пишет об уровнях приобретённых навыков так:

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

Новичок. Спросит, как должен выглядеть проводник и начнёт рассказывать о реализации.

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

Специалист. Затронет вопросы безопасности браузера и проблемы сетевых драйверов.

Профессионал. Спросит, зачем вам нужна эта функциональность, реализованная именно таким образом.

Эксперт. Поставит под сомнение принятое решение и потребует использовать кнопку загрузки как наиболее оптимальный вариант в данной ситуации».

Здесь явно виден не линейный рост продуктивности, а экспоненциальный.

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

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

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

Миру нужны разработчики, которые стремятся к простоте.

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

Что в итоге?

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

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

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

Перевод: Люся Ширшова. По материалам блога Marco Heimeshoff.

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