It's a cold and rainy weekend, and I need something to do, so I open up my laptop and procrastinate for a while. That is to say, I avoid being productive in the fear that being productive might be boring. After a little while, I decide to open up the Mockito-Collections project I started a while ago but haven't looked at for a while. After staring at some code I realise I've forgotten what I was doing and where I was up to. Luckily I wrote a bunch of stories in the form of integration tests, surely those will refresh my memory. Oh yes it all starts to coming back to me. There's just one thing in my mind now, what was I thinking!
The Mockito-Collections project is supposed to be TDD all the way, this should, amongst a great many other things, keep me focused and on track. But as I look at the annotations which form the core of the project I realise that I've been putting all my future ideas into the project too early. I've essentially created a bunch of requirements that will need to be fulfilled before I can make an initial release. I start to wonder, whereelse have I gone wrong?
I fire up the handy little Spoiklin Soice utility to take a closer look at the form of the code. Everything looks to be in order, a few sails are present around the HashOrderedSet, but it doesn't look like the end of the world, the package view certainly looks good.
How about a quick test coverage report, hmmm not so good as I was expecting, mockito-collections-core is reporting 86%. A closer look reveals a few things I was aware of and knew needed fixing (I'd been doing some experimentation without testing - I should have done this somewhere else). I also notice that the Java Asserts I've been using are being included in the code coverage but aren't tested as I'm using them as internal documentation more than anything. I'm not too worried by this, a bit of work to fix this up and we'll be back on track.
So the code appears to be well formed and test coverage is okay; but those annotations are worrying me. It feels as though I've been trying to run too early. At someones suggestion I have been adding stories in the form of integration tests, these aren't complete yet, but when I look at them, I notice something significant. The simplist functionality that I wanted out of this project is already there. In fact, if I could deliver that functionality, and only that functionality, I would already have a working product.
Now I have to simplify Mockito-Collections, I'm choosing to go backwards before going forwards. The moral of this blog is to remind me to stay on track, and to write stories (in whatever form) to help me do so. I'm already using TDD keeping me on track at a very fine grained level, and I'm playing with Preemptive Commit Comments keeping me on track at a coarser grained level, and now I'm adding stories. Perhaps I'll stop procrastinating now, and do some work...