Заметил такую слабость за собой:

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

После такой итерации свое решение внедрить становится сложнее, и этот ком растет и растет, пока не начинает влиять на скорость добаления новой функциональности. Этого никто не замечает, потому что существующее решение не только накладывает ограничения на то, что можно сделать, но она также не дает и помыслить о том что можно сделать.

Стоит ли всегда внедрять прорывные, порой рискованные решения. Наверное, нет. Стоит ли всегда фиксить плохое решение, ну тоже наверное нет. Люди выступающие за фиксы, оправдывают это бизнес составляющей, но при этом если бизнес от этого не выигрывает в постоянной конкурентной гонке, что становится очевидно не сразу, то это оправдание не работает.