How I’m Growing Object-Oriented Software, Guided by Tests


Growing Object-Oriented Software, Guided by Tests (that’s #goos on Twitter) by Steve Freeman and Nat Pryce is a book about test-driven development. Here are a few notes on my experiences of following its methods.

The Story So Far

I was fortunate enough to start work on a new desktop application in the middle of last year, around the time I read through the freely-available online version of the book before it was finally published in November. This was an ideal opportunity to put TDD into practice so I started by building a “walking skeleton” using Prism, CruiseControl.NET, WiX, Gallio, MbUnit, NCover and White as a wrapper around UI Automation for the acceptance tests, and took it from there.

I’ll admit that there was a slow start (WPF/Prism and White/UI Automation were new to me too) but development speed has been steadily increasing ever since, and now I’m able to get what feels like a lot done each day. And that’s pretty much every day; it’s been a long time since I’ve had to halt progress for a significant amount of time in order to squash a bug or redo a chunk of work.

Where am I now?

I’m still learning. It’s easy to slip back into changing code then updating the tests to match, and I do find myself doing that sometimes. I’m also finding it hard to perform only one refactoring step at a time (oh, let me just rename that class while I’m here…), and the acceptance tests can be brittle and sometimes feel like a burden to write. But what doesn’t kill you makes you stronger, right? It’s getting noticeably easier as I learn and improve, and every bit of pain along the way has been worth it.

Does it work?

For me, yes. Test-driven development feels so right that I don’t think I could ever go back to hacking stuff together without building the safety net of tests to fall back on as I go. I am sure that my design is much better than anything I have produced before, and that I have far fewer bugs than usual, too :)

So this experience has been nothing short of (professional) life-changing. I have read similar stuff before, but GOOS was the one that finally made me “get it.”

, ,

1 Comment

Hello again, World!

GraemeF.com has been around in one form or another since 2001, but I had a poke around the blog content and decided that each bit fell into one or more of the following categories:

  1. Outdated technical posts that would be downright misleading now;
  2. Personal stuff that the Interwebs should not be interested in;
  3. Links auto-posted from my Del.icio.us account;
  4. Factually inaccurate bullshit.

So, rather than actually create categories for the above, I decided to reboot my blog, and now all of the old content is gone.

So what now?

It’s time for a fresh start. Having dabbled with product management for a while and ultimately decided that it’s not for me, I’m back to being a full-time software developer, and that’s what I intend to write about.

However, what’s more likely to happen is:

  1. I start off well, with a couple of posts about test driven development and the like;
  2. The posts get shorter and shorter and are spaced farther and farther apart;
  3. In a year’s time I’ve all but forgotten about it when the hosting charge is applied to my debit card, for which my wife never forgives me.

Sounds like a plan! :)

No Comments