Friday, February 27, 2009

A Detour

Part of yesterday and all of today were spent working on a little software project that took entirely too long.

I created a class library which contains one primary function. It makes an HttpWebRequest, parses the Response, and returns some useful information to the caller. I deployed this into SQL Server as a CLR stored procedure.

This was optional work; not an absolute requirement for my primary project. It was related - as it would help in testing. But an astute outsider or casual agile head would recognize this for what it was – a detour along the path to shipping the product.

The work covered new ground for me. I had not written any CLR code for SQL Server and I had never deployed a DLL assembly into SQL Server. Now, after some information immersion and helpful guidance from a co-worker, I have done both.

Tonight, I’ve been replaying the struggles and asking myself why it took so long. All the information needed to solve this was available. Google searches, MSDN documentation, SQL Server documentation – it was all there. It just took several hours to piece together enough bits to finally make it all work.

Part of the problem is my tendency for trial and error progressions. Just try something, watch it fail in the debugger, read a little, then try something else and watch it fail again.

Here is something I’ll try next time. Before I start any work, I’ll take a deep breath, push back from the keyboard, and have a conversation with myself; something like this:

Ok, this is a new problem. It will require some learning. What is the best and fastest way to get the learning, before I burn too many work cycles? What do I want I the end? What is the shortest distance to “the answer?” Would a bunch or reading be best or should I seek an experienced co-worker? Well, not only that…should I even begin on this? Perhaps deferring this to another sprint would be best?

For me, software development is engaging. The feedback of seeing your work “perform” is compelling. Could it be that taming this feedback addiction might be a productivity boost?