
The Pragmatic Programmer: From Journeyman to Master

It's not just what you've got, but also how you package it. Having the best ideas, the finest code, or the most pragmatic thinking is ultimately sterile unless you can communicate with other people. A good idea is an orphan without effective communication.
David Thomas • The Pragmatic Programmer: From Journeyman to Master
We feel that the best way to deal with this is to encourage active and frequent communication
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
Your knowledge becomes out of date as new techniques, languages, and environments are developed. Changing market forces may render your experience obsolete or irrelevant.
David Thomas • The Pragmatic Programmer: From Journeyman to Master
Great lawns need small amounts of daily care, and so do great programmers. Management consultants like to drop the word kaizen in conversations. "Kaizen" is a Japanese term that captures the concept of continuously making many small improvements.
David 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
You shouldn't be wedded to any particular technology, but have a broad enough background and experience base to allow you to choose good solutions in particular situations. Your background stems from an understanding of the basic principles of computer science, and your experience comes from a wide range of practical projects. Theory and practice c
... See moreDavid Thomas • The Pragmatic Programmer: From Journeyman to Master
The use of accessor functions ties in with Meyer's Uniform Access principle [Mey97b], which states that "All services offered by a module should be available through a uniform notation, which does not betray whether they are implemented through storage or through computation."