License: (CC 3.0) BY-NC-SA
Book
Andrew Hunt, David Thomas. The Pragmatic Programmer: from journeyman to master, first edition. Pearson Education, Inc, 2000.
Options
- 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 shell.
- Use a single editor well.
- Always use source code control.
- Fix the problem, not the blame.
- Don’t panic.
- “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.
- If it can’t happen, use assertions to ensure that it won’t.
- Use exception 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 ‘till all the tests run.
- Use saboteurs to test your testing.
- Test stage 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.