
The Pragmatic Programmer: From Journeyman to Master

Show them a glimpse of the future and you'll get them to rally around.[1]
David Thomas • The Pragmatic Programmer: From Journeyman to Master
In computing, the term has come to signify a kind of independence or decoupling. Two or more things are orthogonal if changes in one do not affect any of the others. In a well-designed system, the database code will be orthogonal to the user interface: you can change the interface without affecting the database, and swap databases without changing
... See moreDavid Thomas • The Pragmatic Programmer: From Journeyman to Master
every decision results in a different version of the future. How many possible futures can your code support?
David Thomas • The Pragmatic Programmer: From Journeyman to Master
Encourage people to talk by asking questions, or have them summarize what you tell them.
David Thomas • The Pragmatic Programmer: From Journeyman to Master
We want to design components that are self-contained: independent, and with a single, well-defined purpose (what Yourdon and Constantine call cohesion [YC86]). When components are isolated from one another, you know that you can change one without having to worry about the rest.
David Thomas • The Pragmatic Programmer: From Journeyman to Master
When you're faced with an important meeting or a phone call with a major client, jot down the ideas you want to communicate, and plan a couple of strategies for getting them across.
David Thomas • The Pragmatic Programmer: From Journeyman to Master
EVERY PIECE OF KNOWLEDGE MUST HAVE A SINGLE, UNAMBIGUOUS, AUTHORITATIVE REPRESENTATION WITHIN A SYSTEM.
David Thomas • The Pragmatic Programmer: From Journeyman to Master
You get two major benefits if you write orthogonal systems: increased productivity and reduced risk.
David Thomas • The Pragmatic Programmer: From Journeyman to Master
We can be proud of our abilities, but we must be honest about our shortcomings—our