Files
CppDeveloperRoadmap/Grades/Middle.md
2021-09-27 22:24:29 +03:00

5.6 KiB
Raw Blame History

Middle C++

Кто это?

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

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

Что ожидается по умению написания кода?

  • Компилятор и язык его больше не пугают и практически не приносят сюрпризов, а если и приносят, то способен самостоятельно генерировать гипотезы, проверять их и копать вглубь
  • Ориентируется в базовых концепциях языка и понимает, какие ещё языки существуют и чем они отличаются
  • Пишет понятный и поддерживаемый код
  • Знает базовые принципы дизайна и на их основе способен принять техническое решение
  • Понимает не только язык программирования, но и его технический контекст, то есть понимает весь технический цикл, через который проходит код и ориентируется в инструментах, которые помогают этот цикл поддерживать:
    • Написание кода (IDE, текстовые редакторы, практики программирования, качество кода)
    • Хранение исходного кода и продуктов (системы контроля версий, пакетные менеджеры, серверы)
    • Компиляция (компиляторы, системы сборки, библиотеки)
    • Тестирование (фреймворки, стратегии тестирования)
    • Доставка
    • Выполнение на целевой системе
  • Глубже понимает и знает базовую информатику (структуры данных, конечные автоматы, алгоритмы)

Что ожидается по общим навыкам?

  • Способен самостоятельно ориентироваться в технической части проекта и принимать решения, которые вписываются в него
  • Понимает, когда нужно остановиться, чтобы не переусложнить решение
  • Имеет практический опыт работы в команде
  • Способен формулировать и доносить идеи и мысли до других членов команды
  • Имеет практический опыт работы по различным методологиям: Kanban, Agile/Scrum, Waterfall и т.д.
  • Помогает другим членам команды

Рекомендации и советы

  • Основная ловушка для многих мидлов: фанбойство по технологиям, фреймворкам или подходам к разработке. Постарайтесь прагматично подходить к работе на проекте. Не нужно пытаться затянуть все последние новинки, только чтобы поиграться с ними или ради строчки в резюме.
  • Если вы действительно считаете, что проекту нужна новая библиотека или фреймворк - обсудите это с синьором/тимлидом. Предложите им попробовать создать прототип, где сможете проверить их в действии прежде чем втягивать в проект. Пожалуйста, никогда не втягивайте их в обход всей команды или втихаря! Для вас - это развлечение, но для проекта/тимлида это станет головной болью в будущем, т.к. это повысит стоимость поддержки проекта и принесёт неожиданные проблемы.
  • Начинайте прокачивать софт-скиллы, если хотите вырасти в синьора. На уровне синьора техническая экспертиза слегка отходит на второй план. Умение вести диалог и договариваться выходят на первый план. Хороший разработчик, не тот кто пишет много кода, а тот, кто понимает как решить проблему максимально просто и эффективно. В идеале - без написания нового кода, а ещё лучше - если ещё удалится пара десятков/сотен строк.