Open your IDE. You see a file tree. Directories and files, neatly organized. This is a lie.
Your codebase isn't a tree. It's a graph. And until you see it as a graph, you'll keep making the same mistakes: breaking things you didn't know were connected, duplicating logic that already exists somewhere, and estimating 2 days for work that takes 2 weeks.
The File Tree Illusion
File systems impose a hierarchy on code. Every file lives in exactly one directory. This creates an illusion of organization: "auth stuff is in /auth, billing is in /billing, utils are in /utils."
But code doesn't respect directory boundaries. imports from which depends on which shares a connection pool with which is used by . The "auth stuff" and the "billing stuff" are connected through 3 intermediate dependencies.