Don’t be like the frog. Keep an eye on the big picture. Constantly review what’s happening around you, not just what you personally are doing.
The amount of surprise you feel when something goes wrong is directly proportional to the amount of trust and faith you have in the code being run.
One hundred years from now, our engineering may seem as archaic as the techniques used by medieval cathedral builders seem to today’s civil engineers, while our craftsmanship will still be honored.
But while you can always write ‘spaghetti code’ in a procedural language, object-oriented languages used poorly can add meatballs to your spaghetti.
We who cut mere stones must always be envisioning cathedrals. – Quarry worker’s creed.
Have you noticed how some project teams are efficient, with everyone knowing what to do and contributing fully, while the members of other teams are constantly bickering and don’t seem able to get out of each other’s way? Often this is an orthogonality issue. When teams are organized with lots of overlap, members are confused about responsibilities. Every change needs a meeting of the entire team, because any one of them might be affected.
Don’t rely on the properties of things you can’t control.
Entropy is a term from physics that refers to the amount of “disorder” in a system.
By coding at a higher level of abstraction, you are free to concentrate on solving domain problems, and can ignore petty implementation details.
Great software today is often preferable to perfect software tomorrow. If you give your users something to play with early, their feedback will often lead you to a better eventual solution.
In some ways, programming is like painting. You start with a blank canvas and certain basic raw materials. You use a combination of science, art, and craft to determine what to do with them.
Often this is an orthogonality issue. When teams are organized with lots of overlap, members are confused about responsibilities. Every change needs a meeting of the entire team, because any one of them might be affected.
The DRY principle tells us to keep the low-level knowledge in the code, where it belongs, and reserve the comments for other, high-level explanations.
There is a luxury in self-reproach. When we blame ourselves we feel no one else has a right to blame us.
Within the overall structure of a project there is always room for individuality and craftsmanship.
Nothing is more dangerous than an idea if it’s the only one you have.
In the same way a woodworker invests the time in a jig, a programmer can build a code generator. Once built, it can be used throughout the life of the project at virtually no cost.
One of the cornerstones of the pragmatic philosophy is the idea of taking responsibility for yourself and your actions in terms of your career advancement, your project, and your day-to-day work.
A Pragmatic Programmer takes charge of his or her own career, and isn’t afraid to admit ignorance or error.
One broken window – a badly designed piece of code, a poor management decision that the team must live with for the duration of the project – is all it takes to start the decline. If you find yourself working on a project with quite a few broken windows, it’s all too easy to slip into the mindset of “All the rest of this code is crap, I’ll just follow suit.