Hacker News new | ask | show | jobs
by toss1 1598 days ago
Yes, isolating design decisions and modules that can change independently is fundamental.

I also found one of the essential keys in the first paragraph, which unfortunately didn't seem well discussed in the paper: >> At implementation time each module and its inputs and outputs are well-defined, there is no confusion in the intended interface with other system modules

I've found it extremely useful to clearly and fully define the interfaces before coding. When this is done well, it should be the case that separate (module) teams can really develop and even test independently, as they are really just "throwing it over the wall" when communicating with another module. This also enables far easier scaling, as one can focus scaling (e.g., adding more hardware) to just the essential parts of the system. So, it ends up being worth it to even either deeply analyze the range of possible interactions between the modules, or even build small simulators or throwaway versions just to really understand at the outset the elements needed in the interface.