The word pragmatic comes from the Latin pragmaticus--"skilled in business"--which in turn is derevied from the Greek
There are no easy answer. There can only systems that are more appropriate in a particular set of circumstances.
This is where pragmatism comes in.
You adjust your approach to suit the current circumstances and environment.
The book is aimed at people who want to become more effective and more productive programmers.
A Pragmatic programmer has the following characteristics:
- Early adopter/fast adapter
- Inquisitive
- Critical thinker
- Realistic
- Jack of all trades
Tip
Tip 1: Care about your craft
Tip
Tip 2: Think! About your work
Individual Pragmatists, Large Teams
There should be engineering in software construction. Within the overall structure of a project there is always room for individuality and craftsmanship.
It's a Continuous Process
"Kaizen" is a Japanese term that captures te concept of continuously making many small improvements. Every day, work to refine the skills you have and to add new tools to your repertoire.
It's your career, and more importantly, It's Your Life.
What distinguishes Pragmatic Programmers? We feel it's an attitude, a style, a philosophy of approaching problems and their solutions. They think beyond the immediate problem, placing it in its larger context and seeking out the bigger picture.
Another key to their success is that Pragmatic Programmers take responsibility for everything they do, which we discuss in The Cat At My Source Code. Being responsible, Pragmatic Programmers won't sit idly by and watch their projects fall apart through neglect. In Software Entropy, we tell you how to keep your projects pristine.
Many people find change difficult, sometimes for good reasons, sometimes because of plain old inertia. In Stone Soup and Boiled Frogs, we look at a strategy for instigating change and (in the interests of balance) present the cautionary tale of an amphibian that ignored the dangers of gradual change.
One of the benefits of understanding the context is that it becomes easier to know just how good your software has to be. Often there are trade-offs involved. We explore this in Good-Enough Software
You need to have a broad base of knowledge and experience to pull all of this off. Leaning is a continuous and ongoing process. In Your Knowledge Portfolio, we discuss some strategies for keeping the momentum up.
We all spend a large amount of time interacting with others. Communicate! lists ways we can do this better.
Tip
Tip 3: You Have Agency
Does your work environment suck? Is your job boring? Try to fix it. But don't try forever. As Martin Fowler says, "you can change your organization or change your organization1."
The industry gives you remarkable set of opportunities. Be proactive, and take them.
One of the cornerstones of the pragmatic philosophy is the idea of taking responsibility for yourself and you actions in terms of your career advancement, your learning and education, your project, and your day-to-day work.
Team Trust
Above all, your team needs to be able to trust and rely on you--and you need to be comfortable relying on each of them as well.
Take Responsibility
Responsibility is something you actively agree on.
When you do accept the responsibility for an outcome, you should expect to be held accountable for it.
Tip
Tip 4: Provide Options, Don't Make Lame Excuses
When disorder increases in software, we call it "software rot." Some folks might call it by the more optimistic term, "technical debt," with the implied notion that they'll pay it back someday.
Tip
Tip 5: Don't Live with Broken Windows
Don't leave "broken windows" (bad designs, wrong decisions, or poor code) unrepaired.
First, Do No Harm
Don't cause collateral damage just because there's a crisis of some sort.
Tip
Tip 6: Be a Catalyst for Change
Tip
Tip 7: Remember the Big Picture