程序员修炼之道--从小工到专家

A Pragmatic Philosophy

  1. Provide options, don't make lame excuses
  2. Don't live with broken windows
  3. Be a catalyst for change(石头汤)
  4. Remember the big picture
  5. Make quality a requirement issue
  6. Invest regularly in your knowledge portfolio
  7. Critically analyze what you read and hear
  8. It's both what you say and the way you say it

A Pragmatic Approach

  1. DRY-Don't repeat yourself
  2. Make it easy to reuse
  3. Eliminate effects between unrelated things
  4. There are no final decisions
  5. Use tracer bullets to find the target
  6. Prototype to learn
  7. Program close to the problem domain
  8. Estimate to avoid surprises
  9. Iterate the schedule with the code

The Basic Tools

  1. Keep knowledge in plain text
  2. Use the power of command shells
  3. Use a single editor well
  4. Always use source code control
  5. Fix the problem, not the blame
  6. Don't panic
  7. "Select" isn't broken
  8. Don't assume it - prove it
  9. Learn a text manipulation language
  10. Write code that writes code

Pragmatic Paranoia

  1. You can't write perfect software
  2. Design with contracts(iContract)
  3. Crash early
  4. If it can't happen, use assertions to ensure that it won't
  5. Use exceptions for exceptional problems
  6. Finish what you start

Bend, or Break

  1. Minimize coupling between modules
  2. Configure, don't integrate
  3. Put abstractions in code, details in metadata
  4. Analyze workflow to improve concurrency
  5. Design using services
  6. Always design for concurrency
  7. Separate views from models
  8. Use Blackboards to Coordinate workflow

While you are coding

  1. Don't program by coincidence
  2. Estimate the order of your algorithms
  3. Test your estimates
  4. Refactor early, refactor often
  5. Design to test
  6. Test your software, or your users will
  7. Don't use wizard code you don't understand

Before the project

  1. Don't gather requirements - dig for them
  2. Work with a user to think like a user
  3. Abstractions live longer than details
  4. Use a project glossary
  5. Don't think outside the box - find the box
  6. Start when you're ready
  7. Some things are better done than described
  8. Don't be a slave to formal methods
  9. Costly tools don't produce better designs

Pragmatic projects

  1. Organize teams around functionality
  2. Don't use manual procedures
  3. Test early, test often, test automatically
  4. Coding ain't done till all the tests run
  5. Use saboteurs to test your testing
  6. Test state coverage, not code coverage
  7. Find bugs once
  8. English is just a programming language
  9. Buid documentation in, don't build it on
  10. Gently exceed your users' expectations
  11. Sign your work

你可能感兴趣的:(程序员修炼之道--从小工到专家)