The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
Rate it:
Open Preview
4%
Flag icon
We who cut mere stones must always be envisioning cathedrals.
4%
Flag icon
“Kaizen” is a Japanese term that captures the concept of continuously making many small improvements.
4%
Flag icon
The greatest of all weaknesses is the fear of appearing weak.
5%
Flag icon
Responsibility is something you actively agree to.
5%
Flag icon
One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment—a sense that the powers that be don’t care about the building. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins. In a relatively short span of time, the building becomes damaged beyond the owner’s desire to fix it, and the sense of abandonment becomes reality.
5%
Flag icon
Take some action to prevent further damage and to show that you’re on top of the situation.
6%
Flag icon
if you take a frog and drop it into boiling water, it will jump straight back out again. However, if you place the frog in a pan of cold water, then gradually heat it, the frog won’t notice the slow increase in temperature and will stay put until cooked.
7%
Flag icon
As the value of your knowledge declines, so does your value to your company or client.
8%
Flag icon
If you can’t find the answer yourself, find out who can.
9%
Flag icon
Don’t just wait for questions: ask for them.
15%
Flag icon
What you’re trying to do is foster an environment where it’s easier to find and reuse existing stuff than to write it yourself. If it isn’t easy, people won’t do it.
15%
Flag icon
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 the interface.
16%
Flag icon
There is an easy test for orthogonal design. Once you have your components mapped out, ask yourself: If I dramatically change the requirements behind a particular function, how many modules are affected?
18%
Flag icon
With every critical decision, the project team commits to a smaller target—a narrower version of reality that has fewer options.
18%
Flag icon
Instead of carving decisions in stone, think of them more as being written in the sand at the beach. A big wave can come along and wipe them out at any time.
20%
Flag icon
Prototyping is a learning experience. Its value lies not in the code produced, but in the lessons learned. That’s really the point of prototyping.
20%
Flag icon
The limits of language are the limits of one’s world.
22%
Flag icon
don’t spend more effort than you save.
25%
Flag icon
Human-readable forms of data, and self-describing data, will outlive all other forms of data and the applications that created them. Period. As long as the data survives, you will have a chance to be able to use it—potentially long after the original application that wrote it is defunct.
29%
Flag icon
You must brutally test both boundary conditions and realistic end-user usage patterns.