Files
CppDeveloperRoadmap/Russian/Grades/Middle.md
2023-01-31 21:57:43 +01:00

7.6 KiB
Raw Blame History

Middle C++

Кто это?

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

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

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

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

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

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

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

Про обучение

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

Про опыт

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

На предыдущую страницу | На главную страницу