The goal of software architecture is to minimize the amount of knowledge you need to have in order to build a system.
The best way to debug a program is to make it work.