Business value
Anybody that has worked with me knows that I tend to be an early adopter of technology. I love playing with Beta, Alpha, CTP and “Here is my bin folder” builds. But sometimes as an early adopter I run into trouble. Not the kind of “This build borked my machine” types of trouble, but more along the lines of “Boy this is neat but what value does it give me?” kind of trouble. If I can’t find the business value in a piece of code or new technology it’s nothing more than a geeky toy.
As a developer it’s our job not to just write really awesome code, but to make sure that code adds value to the core business. Sometimes I struggle with that. When I’m adding some lame excel exporting feature instead of playing with Aspect Oriented Programming or when I’m fixing some edge case bug instead of doing some crazy Meta-Programming I have to remind myself that the things I am doing are increasing productivity in some other part of the business.
Sometimes though, we need to take a step back and look at those new technologies (I just came back from PDC so my brain is FILLED with new stuff). Do these new technologies increase business value? How-so? Sometimes the question is easy enough to answer (Windows will crash less), other times it’s harder (Oslo will help you create textual DSLs). Whenever I’m in this position, the first thing I do is play with the technology. How long is taking me to understand it? Is it lowering the amount of code that I have to write, or just moving it around (C# to Xml configuration)? Is it lowering the amount of friction in my day-to-day life? Once I can answer those questions I can move forward and confidently promote new technologies to the business (or not as the case may be).
When you start to think of terms of business value interesting changes start to take place. When you are what feels like a death march project you start to ask around. What value are we providing? Who needs this software? What is this application going to do for them day-to-day? Are we really making work easier? The answer to those questions will either motivate you because you know you are providing value, or the questions start to float up the chain of command and project goals start to get re-aligned. There have been a few projects in my life that as stake-holders and priorities changed no one was really sure why the application was being built. Asking questions has helped to get those projects back on the right tracks.
In the end, my point is simply that when you are implementing a new feature, fixing a bug or working with brand new technology try to keep your focus on business value and not what shiny new toys you want to play with.