Saturday, February 21, 2009

Basic software development principles

There are basic principles that every software developer follows in our profession everyday, some of them are known by the whole community and they seem to be pretty obvious by some people but still I think is a good idea to spread the word about what's right and what's not, so take a look at this link to an infoq presentation by Robert C. Martin (Uncle Bob) recorded at JAOO on Septemer 2007.

Here is a summary of the principles described on the presentation, I think they should be printed and posted on the wall at every developer's team room, even if it's a group of senior developer's this list is a nice reminder of the basic rules to follow on any project and with a little bit of work they can even be exported and implemented on different areas far away from IT:

  • Short iterations
  • Don't wait for definition
  • Abstract away volatility
  • Decouple from others
  • Comission > Omission
  • Never be blocked
  • Avoid turgid viscous architectures
  • Incremental improvement
  • No grand redesign
  • Progressive widening
  • Progressive deepening
  • Don't write bad code
  • Clean code
  • TDD
  • QA should find nothing
  • 100% code coverage
  • Avoid debugging
  • Manual test scripts are immoral
  • Definition of done
  • Test through right interface
  • Apprenticeship