Simple Design

Posted by Navin K on Dec 4, 2011

Cross post from my blog - original at http://novemberkilo.com/2011/12/principle-of-simple-design/

Yesterday I attended the Global Day of Code Retreat, 2011 in Sydney. We were incredibly privileged to have the creator of Code Retreat, Corey Haines facilitating.

I found the experience to be really very profound and recommend it without reserve to developers of all levels.

Here are some of the things I took from the day:

  • My C++/RUP based thinking of OO really needs a makeover
  • I thought I was practising Test Driven Development (TDD) but I now see how narrow my understanding of TDD was. The evil coder or Mute with Find the Loophole session of the retreat was simultaneously hilarious, frustrating and enlightening on how well tests actually serve as a specification for code
  • The principles of Simple Design (attributed to the best of my knowledge to Kent Beck and Ron Jeffries in the Extreme Programming book)

I’ve come across each of the 4 principles of simple design but when I heard Corey talk through them in sequence, it really made a difference to the way I understand them. I know that this understanding will change as I practice with them and I will not remember them as well when I am in the thick of the work day, so I’m writing them down here as a note to self:

  1. Runs all the tests
  2. Expresses every idea that we need to express
  3. Says everything once and only once
  4. Has no superfluous parts

I look forward to practicing the principles I learned at code retreat. I have no doubt that I have had a step change in my perspective as a programmer - more power to Corey’s efforts at coderetreat.org I say!