October 2020
Intermediate to advanced
336 pages
8h 15m
English
Designing a system is fundamentally a different task from designing or implementing a single function. Developing a concise function can, at best, be a linear process. You consider the inputs, the expected outputs, and the possible errors, and if you’re very lucky, you can stub it out and write it in a relatively linear fashion, working from the inputs to the outputs. While this might seem an oversimplification of the process of writing code, it’s not too far from the truth for most koders, and it is definitely not the process most people would describe when designing any system of significant scale.
Well-designed systems depend heavily on one of the tenets ...