Skip to content

Latest commit

 

History

History
231 lines (197 loc) · 13.7 KB

grades.md

File metadata and controls

231 lines (197 loc) · 13.7 KB

Kolesa Group. Backend Department Grading System

Interns

Интерн - первый шаг на дорожной карте разработчика в Kolesa Group.

Hard Skills

  • Язык программирования (любой)
  • Знание что такое PHP (Go, Python, Java, 1C и т.д. в зависимости от команды) и готовность его изучать

Обязанности

  • Иметь бешеное желание стать Back-end разработчиком
  • Стремительно развиваться
  • Быть ответственным
  • Уметь формулировать вопросы
  • Уметь гуглить
  • Взаимодействовать с членами своей команды
  • Следовать внутренним правилам разработки программного обеспечения

Juniors

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

Junior 1

Hard Skills

  • Язык программирования PHP (Go, Python, Java, 1C и т.д. в зависимости от команды)
    • Базовый синтаксис
    • Типы данных
  • Базовые навыки вёрстки (CSS, HTML)
  • Git (pull, commit, push, branch, checkout)
  • ООП: объекты, классы, интерфейсы
  • Понимание MVC
  • Базовый синтаксис SQL (select, update, insert, delete)
  • Linux
    • Базовое понимание работы ОС: директории, пользователи
    • Команды cd, ls, cat, mv, cp, rm, ssh
    • Умение работать в окружении разработки по ssh
  • Инструменты
    • IDE (PhpStorm, VSCode, GoLand, IDEA, EDT для 1C)
    • Клиенты MySQL (например: DataGrip, HeidiSQL, MySQL Workbench)

Обязанности

  • Анализировать и уточнять требования к задаче
  • Взаимодействовать с QA-инженерами
  • Иметь желание делать лучший в мире продукт
  • Исправлять баги
  • Участвовать в codereview
  • Писать unit-тесты
  • Писать рекомендации к тестированию
  • Соблюдать поставленные сроки

Junior 2

Hard Skills

  • Фреймворки (PHP, Go, Python, Java, 1C и т.д. в зависимости от команды)
    • Формы
    • Валидаторы
    • Роутинг
    • Файлы конфигурации
  • Отладка кода
    • echo, printf, var_dump (xdebug, clockwork для PHP)
    • curl, postman
    • Логирование
  • Обработка ошибок
    • Исключения
    • Учёт негативных сценариев
  • Linux
    • Понимание работы ОС: процессы
    • Установка ПО (apt или аналогичные команды на вашей ОС)
    • ps, tail, grep
    • консольный текстовый редактор (nano или vim)

Обязанности

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

Junior 3

Hard Skills

  • Понимание клиент-серверной архитектуры
    • HTTP запросы и ответы, жизненный цикл запроса
    • Роли клиента и сервера
  • Linux
    • df, du, free, top, htop, chmod, chown, scp
    • запуск bash скриптов
  • ООП: абстракции, инкапсуляция, полиморфизм
  • Базовое знание NoSQL баз данных
    • Elasticsearch
    • MongoDb
  • Базовое знание docker (pull, run, ps, rm)
  • Знание структуры Dockerfile
  • Использование инструментов мониторинга (Graylog, Grafana, Zabbix)

Обязанности

  • Декомпозировать и планировать ход реализации задачи
  • Улучшать кодовую базу проекта
  • Информировать тимлида о проблемах, решение которых вне своей компетенции
  • Сопровождать релиз своей задачи

Middles

Middle это серьёзный промежуточный шаг на дорожной карте разработчика. Middle разработчик - самостоятельная единица команды с четкими зонами ответственности и полномочий. Обычно специалист уровня middle влияет своей экспертизой на весь продукт и приносит существенный вклад в свой отдел.

Middle 1

Hard Skills

  • Рефакторинг: улучшение существующего кода
  • Язык программирования:
    • Опыт работы с популярными расширениями и библиотеками
    • Опыт конфигурирования интерпретатора
  • Паттерны проектирования:
    • Внедрение зависимостей
    • Порождающие паттерны
  • Linux:
    • systemd service unit
    • полноценное знание bash
  • SOLID и DRY
  • Базовое понимание kubernetes
    • Deployments, pods, services
    • Просмотр информации об объектах kubernetes
  • Инструменты:
    • kubectl
    • docker-compose
    • cron
  • Уверенное использование фреймворка вашего проекта (phalcon, symfony, yii, laravel)
  • Базы данных:
    • Оптимизация запросов, устранение лишних запросов
    • Применение индексов
  • Использование моков в тестировании

Обязанности

  • Понимать как задача влияет на достижение целей бизнеса
  • Участвовать в менторстве более младших по рангу разработчиков
  • Устранять и предотвращать аварии
  • Взаимодействовать с системными администраторами
  • Проектировать крупные фичи
  • Искать слабые места проекта
  • Решать сложные баги
  • Покрывать проект техническими метриками

Middle 2

Hard Skills

  • Написание надежного, расширяемого и тестируемого кода
  • Выделение часто используемые фрагменты кода в библиотеки
  • Расширение функциональности фреймворка
  • Создание и изменение деплой/билд планов (CI/CD)
  • Создание production ready docker образов
  • Создание и изменение kubernetes манифестов
  • Понимание и поддержка микросервисной архитектуры
  • Дополнительный язык программирования (Go, Python)
  • Elasticsearch (маппинг, индексация, поиск)

Обязанности

  • Делиться знаниями, навыками, выступать на конференциях и/или писать статьи
  • Находить простые способы решения задач
  • Писать техническую документацию (swagger, confluence, readme.md)

Middle 3

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

Hard Skills

  • Паттерны проектирования
  • Понимание Domain Driven Design (подразумеваем, что применит подход если будет строить архитектуру)
  • Docker оркестрация, Kubernetes
  • Чтение и редактирование Ansible плейбуков и ролей
  • Понимание механизма транзакций, репликации, шардинга
  • Понимание инструментов балансировки запросов (nginx, haproxy, envoy, ingress)

Обязанности

  • Решать сложные задачи:
    • с применением паттернов проектирования
    • с покрытием разными видами тестов (интеграционные, нагрузочные)
  • Делиться знаниями на внешних платформах (писать статьи, выступать на конференциях)
  • Помогать в постановке сроков
  • Оптимизировать и ускорять сборки проектов (CI/CD)

Seniors

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

Senior 1

Hard Skills

  • Понимание взаимодействия сервисов и систем в компании и её продуктах
  • Выявление и решение архитектурных проблем
  • Понимание принципов взаимодействия компонентов Kubernetes кластера
  • Принятие осознанных решений при выборе технологий
  • Формирование технических метрик и контроль их значений

Обязанности

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

Senior 2

Hard Skills

  • Знание принципов и опыт построения распределенных систем
  • Создание сервисов, используемых несколькими проектами сразу
  • Понимание внутреннего устройства систем хранения данных:
    • mysql (понимать разницу MyISAM, InnoDB, XtraDB)
    • mongodb (InMemory, WiredTiger)
    • ceph
    • elasticsearch

Обязанности

  • Соблюдать баланс между архитектурными новшествами и достижениями целей бизнеса
  • Давать экспертную оценку сроков в команде
  • Оптимизировать архитектуру кода, работу с данными и сетью
  • Поддерживать open-source библиотеки без ущерба для других обязанностей
  • Принимать архитектурные решения для проектов
  • Заменять тим-лида/тех-лида

Senior 3

Hard Skills

  • Осведомлённость о современных технологических трендах
  • Внедрение инновационных подходов/технологий с учётом интересов бизнеса и технических рисков
  • Опыт построения архитектуры нового проекта с нуля

Обязанности

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