- It's easier to re-build a system from its tests than to re-build the tests from their system.
- You can measure code complexity, adherence to standards and test coverage; you can't measure quality of design.
- Formal and flexible are not mutually exclusive.
- The tests should pass, first time, every time (unless you're changing them or the code).
- Flexing your Right BICEP is a sure-fire way to quality tests.
- Test code is production code and it deserves the same level of care.
- Prototypes should always be thrown away.
- Documentation is good, self documenting code is better, code that doesn't need documentation is best.
- If you're getting bogged down in the process then the process is wrong.
- Agility without structure is just hacking.
- Pairing allows good practices to spread.
- Pairing allows bad practices to spread.
- Cycling the pairs every day is hard work.
- Team leaders should be inside the team, not outside it.
- Project Managers are there to facilitate the practice of developing software, not to control it.
- Your customers are not idiots; they always know their business far better than you ever will.
- A long list of referrals for a piece of software does not increase the chances of it being right for you, and shouldn't be considered when evaluating it.
- You can't solve a problem until you know what the problem is. You can't answer a question until the question's been asked.
- Software development is not complex by accident, it's complex by essence.
- Always is never right, and never is always wrong.
- Interesting is not the same as useful.
- Clever is not the same as right.
- The simplest thing that will work is not always the same as the easiest thing that will work.
- It's easier to make readable code correct than it is to make clever code readable.
- If you can't read your tests, then you can't read your documentation.
- There's no better specification document than the customer's voice.
- You can't make your brain bigger, so make your code simpler.
- Sometimes multiple exit points are OK. The same is not true of multiple entry points.
- Collective responsibility means that everyone involved is individually responsible for everything.
- Sometimes it's complex because it needs to be; but you should never be afraid to check.
- If every time you step forward you get shot down you're fighting for the wrong army.
- If you're always learning you're never bored.
- There are no such things as "Best Practices". Every practice can be improved upon.
- Nothing is exempt from testing. Not even database upgrades.
- It's not enough to collect data, you need to analyse, understand and act upon that data once you have it.
- A long code freeze means a broken process.
- A test hasn't passed until it has failed.
- If you give someone a job, you can't guarantee they'll do it well; If you give someone two jobs you can guarantee they'll do both badly
- Every meeting should start with a statement on its purpose and context, even if everyone in the meeting already knows.
More than 2 decades of writing software, and still loving it...
Saturday, March 29, 2008
Things I believe in
Labels:
Principles
Subscribe to:
Post Comments (Atom)
2 comments:
Excellent list! I'll be passing it around the team. Thanks.
Post a Comment