3 ms·
Which is why simplicity remains the ultimate sophistication in software architectures. At some point, you cannot continue writing code without structure. Then y
by mattgreenrocks 12y ago
Which is why simplicity remains the ultimate sophistication in software architectures. At some point, you cannot continue writing code without structure. Then you slowly and deliberately introduce meaningful abstractions along the necessary dimensions.
And no more.
Abstractions are also useful to separate the arrangement of work from the actual work itself. These boundaries are useful for dividing up work among colleagues.
- mtdewcmu 12y agoKnuth argues that programming is a form of writing. I agree. Therefore, you should organize code like a book or article, since those are forms of writing that have benefitted from centuries of use and refinement. Even books and articles on complex subjects are fairly light on structure.
- mtdewcmu 12y agoNot sure if you'll come back and read this, but here's my current theory on structure. In a piece of software, there are many schemes by which you might organize the source code: - Organize by author of code - Organize by chronological order of appearance (e.g. what version or patch # this appeared in) - ... by order of execution (of course, this is only a partial order) - ... by library - ... by importance - ... by some arbitrary property of the code (by algorithm, by what data it touches, etc.) Each one makes sense in a different context, and you can't have all at once. But you don't want to double-down on one choice at the expense of other, equally-valid choices with excess structure.