if you are following DDD and/or clean architecture, this article would be giving you terrible advice. You go vertical but the moment you need a type/utility from another place it stops making sense.
In the short term, a small amount of duplication to prevent bad abstraction spaghetti is worth it
In the medium term, true duplications are better extracted after the fact rather than correctly guessing future reusability.
In the long term, total extraction into separate vertical or external package, as suggested by the author.
Over time, this progression is natural and unforced. If you don’t need an abstraction to be de-deuplicated, then don’t. If you don’t need to promote an abstraction into its own vertical/package, then don’t.
if you are following DDD and/or clean architecture, this article would be giving you terrible advice. You go vertical but the moment you need a type/utility from another place it stops making sense.
In the short term, a small amount of duplication to prevent bad abstraction spaghetti is worth it
In the medium term, true duplications are better extracted after the fact rather than correctly guessing future reusability.
In the long term, total extraction into separate vertical or external package, as suggested by the author.
Over time, this progression is natural and unforced. If you don’t need an abstraction to be de-deuplicated, then don’t. If you don’t need to promote an abstraction into its own vertical/package, then don’t.
and they wrote a section on that
https://tkdodo.eu/blog/the-vertical-codebase#but-what-about-shared-code