This is a book about doing.

  • Programming is a craft. At its simplest, it comes down to getting a computer to do what you want it do to.
  • Pragmatism
    • 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
    • background stems from basic principles of CS, and experience from a wide range or practical projects

What makes a Pragmatic Programmer

  • Over time, each dev will craft their own personal environment, which will reflect their individuality.
  • But if you’re a pragmatic programmer you will share these characteristics
CharacteristicDescription
Early Adopter- You have an instinct for technology and techniques, and you love trying things out.
- When given something new, you can grasp it quickly and integrate it w/ the rest of your knowledge. Your confidence is born of experience.
InquisitiveAsk questions
Critical thinkerYou rarely take things as given without first getting the facts
RealisticYou try to understand the underlying nature of each problem you face (how difficult things are, how long things will take)
Jack of all tradesYou try hard to be familiar with a broad range of tech and environments, you will always be able to move on to new areas/challenges
Care about your craftYou feel that there is no point in developing software unless you care about doing it well
Think! about your work- You think about what you’re doing while you’re doing it
- It’s not a one time thing but an ongoing critical appraisal of every decision you make every day and on every project
- Never run on autopilot! always THINK!
  • Long term, the reward is a more active involvement with a job you love, a feeling of mastery over an increasing range of subjects, and pleasure in a feeling of continuous improvement

Individual pragmatists, large teams

  • software engineering in large teams does NOT exclude personal craftsmanship
  • within the overall structure of a project there is always room for individuality and craftsmanship
  • “Kaizen”
    • continuously making many small improvements
    • everyday, work to refine the skills you have and to add new tools to your repertoire