mirror of
https://github.com/salmer/CppDeveloperRoadmap.git
synced 2025-12-18 04:54:38 +03:00
5.6 KiB
5.6 KiB
Middle C++
Кто это?
Это разработчик, который понимает технический контекст разработки и способен создать дизайн и решения для функционала внутри компонента/приложения даже в случае неполноты требований. Также имеет практический опыт работы на проектах и в рамках принятых бизнес-процессов.
В основном решает технические задачи, но, в отличие от джуна, способен делать это самостоятельно или под менторством синьора/тимлида.
Что ожидается по умению написания кода?
- Компилятор и язык его больше не пугают и практически не приносят сюрпризов, а если и приносят, то способен самостоятельно генерировать гипотезы, проверять их и копать вглубь
- Ориентируется в базовых концепциях языка и понимает, какие ещё языки существуют и чем они отличаются
- Пишет понятный и поддерживаемый код
- Знает базовые принципы дизайна и на их основе способен принять техническое решение
- Понимает не только язык программирования, но и его технический контекст, то есть понимает весь технический цикл, через который проходит код и ориентируется в инструментах, которые помогают этот цикл поддерживать:
- Написание кода (IDE, текстовые редакторы, практики программирования, качество кода)
- Хранение исходного кода и продуктов (системы контроля версий, пакетные менеджеры, серверы)
- Компиляция (компиляторы, системы сборки, библиотеки)
- Тестирование (фреймворки, стратегии тестирования)
- Доставка
- Выполнение на целевой системе
- Глубже понимает и знает базовую информатику (структуры данных, конечные автоматы, алгоритмы)
Что ожидается по общим навыкам?
- Способен самостоятельно ориентироваться в технической части проекта и принимать решения, которые вписываются в него
- Понимает, когда нужно остановиться, чтобы не переусложнить решение
- Имеет практический опыт работы в команде
- Способен формулировать и доносить идеи и мысли до других членов команды
- Имеет практический опыт работы по различным методологиям: Kanban, Agile/Scrum, Waterfall и т.д.
- Помогает другим членам команды
Рекомендации и советы
- Основная ловушка для многих мидлов: фанбойство по технологиям, фреймворкам или подходам к разработке. Постарайтесь прагматично подходить к работе на проекте. Не нужно пытаться затянуть все последние новинки, только чтобы поиграться с ними или ради строчки в резюме.
- Если вы действительно считаете, что проекту нужна новая библиотека или фреймворк - обсудите это с синьором/тимлидом. Предложите им попробовать создать прототип, где сможете проверить их в действии прежде чем втягивать в проект. Пожалуйста, никогда не втягивайте их в обход всей команды или втихаря! Для вас - это развлечение, но для проекта/тимлида это станет головной болью в будущем, т.к. это повысит стоимость поддержки проекта и принесёт неожиданные проблемы.
- Начинайте прокачивать софт-скиллы, если хотите вырасти в синьора. На уровне синьора техническая экспертиза слегка отходит на второй план. Умение вести диалог и договариваться выходят на первый план. Хороший разработчик, не тот кто пишет много кода, а тот, кто понимает как решить проблему максимально просто и эффективно. В идеале - без написания нового кода, а ещё лучше - если ещё удалится пара десятков/сотен строк.