Ловушки джуна: переусложнение и синдром самозванца

Джуна тянет усложнять код и обесценивать себя — две противоположные ловушки с общим корнем: незрелая самооценка своего уровня.

Переусложнение (overengineering) — добавление абстракций, гибкости и «задела на будущее», которые не нужны текущей задаче и только повышают сложность.

Ловушка третья: переусложнение

Узнав про паттерны, абстракции и «правильную архитектуру», junior начинает применять их везде. Простую функцию обрастает фабриками, интерфейсами и слоями «на случай, если понадобится». Это выглядит как зрелость, но на деле наоборот: senior пишет максимально просто, потому что знает цену сложности — её придётся читать, поддерживать и отлаживать.

Задача: посчитать сумму заказа.

  junior-overengineer: AbstractOrderTotalStrategyFactory + 4 интерфейса
                       "вдруг появятся новые типы расчёта"
  middle:              функция order_total(items) с одним циклом
                       абстракцию добавлю, КОГДА появится второй тип

Правило: добавляйте гибкость в момент реальной потребности, а не заранее. Преждевременная абстракция — это технический долг, замаскированный под предусмотрительность.

Полезно знать, что у синдрома самозванца есть закономерная динамика. Сильнее всего он бьёт в моменты роста: новая работа, повышение, незнакомая область. Это логично — вы оказались там, где ещё не мастер, и мозг трактует временную некомпетентность как «обман». Понимание этой динамики обезоруживает: если вас накрыло чувством самозванца сразу после повышения, это не сигнал, что вас повысили зря, а ожидаемый спутник выхода на новый уровень. Он отступает по мере того, как вы осваиваетесь.

Ловушка четвёртая: синдром самозванца

Параллельно живёт обратное чувство: «я ничего не умею, меня вот-вот разоблачат». Синдром самозванца — это разрыв между реальной компетентностью и её внутренней оценкой. Важно понимать: его испытывают и senior, и опытнейшие инженеры. Само наличие сомнений не говорит о вашем уровне — оно говорит о том, что вы видите, как много ещё не знаете (а это как раз признак роста).

Как работает под капотом

Оба чувства искажают калибровку. Эффект Даннинга — Крюгера: на старте знаний мало, и кажется, что всё понятно (отсюда переусложнение «я знаю как правильно»). По мере роста вы видите всё больше неизвестного, и уверенность падает (отсюда самозванец). Лекарство одно — внешние объективные опоры: матрица компетенций, фидбэк, факты о ваших результатах, а не ощущения.

ЛовушкаСигналОпора
Переусложнение«Сделаю гибко на будущее»YAGNI: добавь, когда понадобится
Самозванец«Меня разоблачат»Факты о результатах, фидбэк, матрица

Принципы против переусложнения

У индустрии есть короткие принципы, которые удерживают от переусложнения. YAGNI («You Aren't Gonna Need It» — тебе это не понадобится) говорит: не добавляй функциональность и гибкость, пока в них нет реальной потребности прямо сейчас. KISS («Keep It Simple, Stupid») напоминает: при прочих равных выбирай простейшее работающее решение. Эти принципы не запрещают абстракции вообще — они требуют, чтобы абстракция оплачивалась настоящей, а не воображаемой потребностью. Правило большого пальца: вводи абстракцию, когда у тебя появился второй или третий конкретный случай, а не в ожидании первого.

С синдромом самозванца помогает простое упражнение: ведите «файл побед» — список конкретных вещей, которые вы сделали и которые работают. Когда накатывает чувство «я ничего не умею», перечитайте список фактов. Самозванец оперирует эмоциями («кажется, что я хуже всех»), а факты эмоциям не подчиняются. Ещё помогает помнить про эффект «сравнения с фасадом»: вы видите отполированный чужой результат — готовый PR, уверенный доклад — но не видите часов сомнений, неудачных попыток и помощи, которые за ним стоят. Сравнивать свой закулисный процесс с чужой витриной — гарантированный способ почувствовать себя самозванцем.

Частые ошибки

  • Путать сложность с качеством. Чем проще решение при той же задаче, тем оно лучше, а не наоборот.
  • Принимать решения на основе тревоги. «Боюсь спросить о повышении, вдруг не заслужил» — это самозванец говорит, а не факты.
  • Сравнивать себя с чужим фасадом. Вы видите готовый код и доклады других, но не их часы борьбы и сомнений.

Итоги

  • Senior пишет просто, потому что знает цену сложности.
  • Гибкость добавляйте в момент потребности (YAGNI), не заранее.
  • Синдром самозванца есть у всех уровней и не отражает реальный уровень.
  • Опирайтесь на факты и матрицу, а не на ощущения уверенности.
Проверьте себя
1. Почему senior обычно пишет более простой код, чем переусложняющий junior?
AНе знает паттернов
BЗнает цену сложности: её придётся читать, поддерживать и отлаживать
CЕму лень
DПростой код быстрее печатать
2. Что говорит о вашем уровне наличие синдрома самозванца?
AЧто вы действительно некомпетентны
BПочти ничего: его испытывают инженеры всех уровней
CЧто пора уволиться
DЧто вы не годитесь для профессии