The Pragmatic Programmer:\From Journeyman to Master\\\\Andy Hunt and Dave Thomas\1999
system
Care About Your Craft
Think! About Your Work
Provide Options,\Don't Make Lame Excuses
Don't Live with Broken Windows
Be a Catalyst for Change
Remember the Big Picture
Make Quality a Requirements Issue
Invest Regularly\in Your Knowledge Portfolio
Critically Analyze\What You Read and Hear
It's Both What You Say\and the Way You Say It
DRY-Don't Repeat Yourself
Make It Easy to Reuse
Eliminate Effects\Between Unrelated Things
There Are No Final Decisions
Use Tracer Bullets to Find the Target
Prototype to Learn
Program Close to the Problem Domain
Estimate to Avoid Surprises
Iterate the Schedule with the Code
Keep Knowledge in Plain Text
Use the Power of Command Shells
Use a Single Editor Well
Always Use Source Code Control
Fix the Problem,\Not the Blame
Don't Panic When Debugging
<select> Isn't Broken
Don't Assume It-Prove It
Learn a Text Manipulation Language
Write Code That Writes Code
You Can't Write Perfect Software
Design with Contracts
Crash Early
Use Assertions\to Prevent the Impossible
Use Exceptions\for Exceptional Problems
Finish What You Start
Minimize Coupling Between Modules
Configure,\Don't Integrate
Put Abstractions in Code,\Details in Metadata
Analyze Workflow\to Improve Concurrency
Design Using Services
Always Design for Concurrency
Separate Views from Models
Use Blackboards\to Coordinate Workflow
Don't Program by Coincidence
Estimate\the Order of Your Algorithms
Test Your Estimates
Refactor Early,\Refactor Often
Design to Test
Test Your Software,\or Your Users Will
Don't Use Wizard Code\You Don't Understand
Don't Gather Requirements\-Dig for Them
Work with a User\to Think Like a User
Abstractions Live Longer than Details
Use a Project Glossary
Don't Think Outside the Box\-Find the Box
Start When You're Ready
Some Things Are Better Done\than Described
Don't Be a Slave\to Formal Methods
Costly Tools\Don't Produce Better Designs
Organize Teams Around Functionality
Don't Use Manual Procedures
Test Early.\Test Often.\Test Automatically
Coding Ain't Done 'Til All the Tests Run
Use Saboteurs\to Test Your Testing
Test State Coverage,\Not Code Coverage
Find Bugs Once
English\is Just a Programming Language
Build Documentation In,\Don't Bolt It On
Gently Exceed Your Users' Expectations
Sign Your Work
