Skip to content

Latest commit

 

History

History
124 lines (68 loc) · 4.68 KB

tpp.md

File metadata and controls

124 lines (68 loc) · 4.68 KB

The Pragmatic Programmer

The word pragmatic comes from the Latin pragmaticus--"skilled in business"--which in turn is derevied from the Greek $\pi\rho\alpha\gamma\mu\alpha\tau\iota\kappa'{\omicron}\sigma$, meaning "fit for use."

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.

1. A Pragmatic Philosophy

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.

It's Your Life

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.

The Cat Ate My Source

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

Software Entropy

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.

Stone Soup and Boiled Frogs

Tip

Tip 6: Be a Catalyst for Change

Tip

Tip 7: Remember the Big Picture

Good-Enough Software

Your Knowledge Portfolio

Communicate!

2. A Pragmatic Approach

The Essence of Good Design

DRY--The Evils of Duplication

Orthogonality

Reversibility

Tracer Bullets

Prototypes and Post-It Notes

Domain Languages

Estimating

3. Tha Basic Tools

Footnotes

  1. https://wiki.c2.com/?ChangeYourOrganization