Система грейдов разработчиков — front-end программист

front-end developer

Посмотреть наши предыдущие статьи по рейдам можно тут: грейды общими словами, хард-скиллы, грейды full-stack и back-end разработчиков

Тут мы рассмотрим грейды фронт-энд разработчика со стеком технологий:

  • Javascript, Sass, React, Redux, Chromium браузерные расширения

А теперь — подробнее и с различением по уровням

  1. Джуниор

Комментарии: принимаем на этот уровень новичков без значимого опыта. На этот уровень не подымаются по системе грейдов.

  1. Джуниор+
  • Сильная экспертиза в следующих технологиях и инструментах: html, css
  • отличное владение функционалом препроцессора sass, использование css Variables
  • Верстка: респонсивная, адаптивная, кроссбраузерная, pixel-perfect верстка
  • базовое знание css анимаций, понимание принципа «mobile first»
  • Средний уровень знания в следующих технологиях  и инструментах: JavaScript, bootstrap, jQuery

Комментарии: по сути, это основы. С чего начинают фронт-енд разработчики веб-сайтов. Хорошая и эффективная верстка

  1. Джуниор++
  • Разбирается в основном проекте
  • Сильная экспертиза в следующих технологиях и инструментах: JavaScript (знание особенностей работы в браузером окружении, работа с DOM) , Redux, Git
  • Понимание следующих терминов/концепций: Иммутабельность, Чистая функция, Рекурсия, Замыкание
  • Уверенная работа с инструментами разработчика в браузере (dev-tools)
  • Средний уровень знания в следующих технологиях  и инструментах: React, webpack, gulp (на уровне настройки существующей сборки)

Комментарии: чтобы подняться на этот уровень, начинаем углубляться в front-end. Конфигурация сборок проекта

  1. Мидл
  • Разбирается в основном проекте на уровне, что может пояснять бизнес процессы коллегам
  • Помощь менеджерам в формировании более полных требований с технической точки зрения.
  • Понимание устройства и работы браузерных расширений. 
  • Создание React Component-ов, рефакторинг существующих компонентов.
  • Продвинутая работа с состоянием приложений: написаны состояние и экшены для целой страницы или крупной фичи. 
  • Сильная экспертиза в следующих технологиях  и инструментах: React (классовые/функциональные компоненты, жизненный цикл компонентов, использование возможностей стандартных хуков библиотеки react), redux-thunk, webext-redux

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

  1. Мидл+
  • Приличная экспертиза в Frontend части одного из проектов из экосистемы (наряду с основным проектом), уверенное выполнение задач
  • Написать кастомный React Hook, который используется в проекте.
  • Написана статья в Confluence об используемых ранее технологиях (разбор типичных ошибок, практики хорошего кода)
  • Сильная экспертиза в следующих технологиях и инструментах: React Hooks (написание кастомных хуков, оптимизация рендера компонентов — ускорение загрузки, уменьшение вычислительных затрат), 
  • webpack, gulp (на уровне самостоятельной разработки сборки проекта и автоматизации процессов), babel
  • Придерживается принципам программирования: YAGNI (You Ain’t Gonna Need It)

Комментарии: Еще глубже погружаемся в фронт-энд. Документируем опыт. Работаем с пакетными менеджерами и сборками. Экспертиза мидлов не ограничивается кодированием, т.е. активно применяет общепринятые принципы программирования и чистого кода

  1. Мидл++
  • Разбираться в бизнес-процессах одного из эко-системных продуктов на уровне чтобы передать знания
  • Опыт в оптимизации загрузки страниц сервиса. Понимание SSR & CSR в контексте оптимизации загрузки. 
  • Оптимизирована скорость загрузки (уменьшена в 1.5-2 раза) одной из ключевых точек проекта (страница).
  • Продвинутая работа с css/js анимациями. 
  • Сильная экспертиза в следующих технологиях и инструментах: Vue.js, Service Worker, Web Worker 
  • Придерживается принципам программирования: KISS (Keep It Simple, Stupid)

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

  1. Сеньор
  • Не менее 5 лет работы в программировании (включая предыдущий опыт)
  • Написан новый крупный компонент (соизмеримый с проектом из микро-сервисной архитектуры) или проект, или сделан рефакторинг крупного компонента
  • Наставничество: ученик был повышен на 2 грейда
  • Сильная экспертиза в следующих технологиях и инструментах: SSR, CSR, SSG (знание плюсов, минусов, умение правильно выбрать подход для конкретного случая)
  • Понимание работы разных сетевых протоколов (HTTP, WebSocket)
  • Придерживается принципам программирования: DRY (Don’t Repeat Yourself)

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

  1. Сеньор+
  • Сильная экспертиза в следующих технологиях  и инструментах: Node.js, Создание npm пакетов
  • Создан полезный для проекта npm-пакет, который используется в нашем проекте.
  • Написана статья об этом компоненте или того же уровня в общедоступном айти ресурсе с большой аудиторией (habr или что-то подобное) от корпоративного аккаунта, на этом грейде или ранее
  • Занимается релизами в проекте над которым работают 2+ человек
  • Наставник 2+ человек, делает код ревью их кода
  • Придерживается принципам программирования: SOLID

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

  1. Сеньор++
  • Наставничество: ученик был повышен с Мидла до Мидла++
  • Создано несколько полезных для проекта npm-пакетов, которые используются в нескольких проектах из микро-сервисной архитектуры
  • Сильная экспертиза следующих технологиях и инструментах: Node.js, koajs, mySQL, Jenkins

Комментарии: еще больше взаимной пользы. И программисту и компании

Система грейдов разработчиков — профессиональные скиллы

Programmer hard skills

В целом, система трейдов была рассмотрена в статье Общие положения грейдов. 

А в этой статье, рассмотрим прогресс по знаниям разработчика в его профессии

  1. В общем

Самое полезное, что компания ждет от разработчика, — это его знания и опыт в выбранное профессии. Чем он опытнее, тем быстрее будет выполнять задачи. Тем самым, двигая прогресс компании и принося прибыть.

  1. Стеки технологий — специализация

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

Сперва разделим разработчиков на такие категории (наиболее часто встречающиеся):

  • Фронт-енд разработчик
  • Бэк-енд разработчик
  • Фул-стек разработчик
  • Разработчик десктопных приложения
  • Разработчик приложения под Android
  • Разработчик приложения под iOS

Но и теже Бекенд разработчики не знают всех бекенд языков (PHP, Python, Java, Go, Ruby, NodeJS, C# и многие другие) и технологий (Linux, Windows, Docker, Nginx, Apache, MySQL, PostgreSQL, MongoDB, MS SQL, GraphQL, React, Vue.js, Sphinx, Elastic Search, Redis, MQ Rabbit, Machine Learning и многие другие).

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

В следующих статьях будут примеры для PHP Бэк-енд разработчика (Linux + PHP + MySQL), Фронт-енд (JS, React, Node) и Android-разработчика, Фул-стек программиста.

  1. Общие концепции программирования

Но, есть такие технологии и концепции которые применяются во многих стеках или являются стандартном для любого стека

Это, например 

  • git, git-low, 
  • ООП, 
  • REST-Api, 
  • Agile, Scrum
  • YAGNI, KISS, DRY, SOLID 
  • Юнит-тесты
  • CI/CD
  • SSH
  • и многое другое. 

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

  1. Лидерство и наставничество

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

В качестве требования для перехода на высокие уровни (мидл++, сеньор), можно включать:

  • Наставничество: повышение ученика с X на Y уровень
  • Код-ревью и Релизы
  • Статьи во внутренних (локальная wiki, Confluence) или внешних источниках (Habr, форумы, сообщества, бумажные статьи в сборниках)
  • Выступления на конференциях от имени компании

5. Вопросы безопасности кода

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