The effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer.
Each significant piece of functionality in a program should be implemented in just one place in the source code.
[Abstraction] tries to factor out details from a common pattern so that programmers can work close to the .highlight[level of human thought], leaving out details which matter in practice, but are .highlight[immaterial to the problem being solved].
Programs must be written for people to read, and only incidentally for machines to execute.
The more I modularize my code. The bigger it gets.
Yes, small modules are easier to write. Yes, they’re easier to test. These are all things that make your life as a library author easier. As we’ve seen, they come at a cost for others.