Files
CppDeveloperRoadmap/Grades/Middle.md
2021-09-26 22:37:17 +03:00

5.6 KiB
Raw Blame History

Middle C++

Кто это?

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

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

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

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

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

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

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

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