Spaghetti Design is like having high complexity at the project architecture level, rather than in a single method or file. That shift from the micro to the macro makes it so much worse, because now instead of trying to take in a single large method and keep it all in your head, you've got to comprehend the convolutions of an entire project.

New developers on the team (and even some developers who've been on the project a while) will have a hard time understanding how the project is organized, and where new code should be put. And if they have a hard time understanding it, they'll have an even harder time successfully modifying it, and using its existing methods, structures, and utilities. Best case, they'll make a hash of any new code, which will quickly be caught in testing. Worst case, they'll perpetuate the madness by creating their own redundant structures and utilities.


Several ways to hunt for bad design and architecture are available: