Paul W. Homer is a software developer, writer, and occasional photographer, who was drawn into software development several decades ago and has been struggling ever since with trying to build increasingly complex systems.
AS SOFTWARE DEVELOPERS we initially understand software as a system of commands, functions, and algorithms. This instruction-oriented view of software aids us in learning how to build software, but it is this very same perspective that starts to hamper us when we try to build bigger systems.
If you stand back a little, a computer is nothing more than a fancy tool to help you access and manipulate piles of data. It is the structure of this data that lies at the heart of understanding how to manage complexity in a huge system. Millions of instructions are intrinsically complicated, but underneath we can easily get our brains around a smaller set of basic data structures.
For instance, if you want to understand the Unix operating system, digging through the source code line-by-line is unlikely to help. If, however, you read a book outlining the primary internal data structures for handling things like processes and the filesystem, you’ll have a better chance of understanding how UNIX works underneath. The data is conceptually smaller than the code and considerably less complicated.
As code is running in a computer, the ...