Simple and Predictable
There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. – C.A.R. Hoare[4]
To make a product feel simple, every time a person takes a particular action, they should see the same result. That predictability means the user always understands their place in a product.
There’s an added bonus here: not only is predictability key to simplicity, predictability is also a substitute for control.[1]
A tool should strive for
- orthogonality - single entry and exit point with no side effects
- predictability - the user can intuit what will happen when it is used
- simplicity - the user can hold the majority of use cases in their head, referring to a manual for the edge cases if necessary
Beware of Hype
there is no silver bullet[.] any single tool, no matter how good it is, must be evaluated from the engineering point of view of pros and cons. Everything has a cost, and implies compromises. It's a matter of ROI. Which is hard to evaluate without experience.[5]
References
- https://amivora.substack.com/p/to-make-something-simple-make-it?s=r
- http://stanleylieber.com/2022/04/03/0/
- https://en.wikipedia.org/wiki/The_Art_of_Unix_Programming
- https://scribe.rip/m/global-identity?redirectUrl=https%3A%2F%2Fblog.francoisfournier.eu%2Ftwo-ways-of-constructing-a-software-design-82f58c6d45aa
- XML is the future
Last modified: 202401050416