Somehow I've been writing code for a living for 20 odd years now. During that time I think I've spent some time as almost all of the stereotypical developer types, including:
- The new guy who thinks he knows better than everyone else.
- The old hand with a whopping two years experience who definitely knows it all now.
- The team leader who has to deal with newbies who think they know everything.
And so on.
As old workmates, especially my old managers will attest, the one aspect of being a developer that I've always shunned is the commercial and business side.
In the last few years though there's been a bit of a change. Well, more of a complete u-turn worthy of a politician really. I now stand with a foot firmly in each of the technical and commercial camps of software development. I still write code occasionally, but I also work with directors and sales talking to clients and helping to shape our offerings with an eye on the bottom line.
Whilst this previously horrified me, I now see it as a greater challenge than coding alone. There are only so many times you can write database access code, or an XML web service before it loses it's appeal. Yes, new languages, frameworks and technologies come along and my interest is sparked again (iOS and Microsoft MVC have got my coding juices going at the moment) but there's still the need for a greater challenge.
Now, instead of seeing a problem along the lines of 'how do we write an online course booking system?', I see it as 'can we build a course booking system that meets the clients needs cheaply enough so that we can charge a reasonable per-transaction fee to get the clients business off the ground, pay for our development, and have the business earn enough to be sustainable?'
That's very different problem. Yes, there are coding aspects to consider but having to factor in business considerations such as 'what's the smallest amount of code we have to write in order to satisfy the clients investors?' makes it much more interesting.
Why didn't I realise this before?!
I expect that there are wise old heads reading this and nodding who have known this all along but it seems I'm quite slow on the uptake.
The thing is - does adding some commercial awareness always make for a better developer?
I think that if a developer is being paid by a business, then yes, some commercial awareness will make them a better developer - as far as the business is concerned.
"The business” is an important point. A better developer according to who, and by what metric? Most developers think they are the best programmer in the world and won't really care what any non-technical management think.
The thing that has taken me a long time to appreciate is that those non-technical management types are probably working very hard to ensure that the company has enough work to keep those developers in a job. And in order to keep doing that they have to make decisions that keep clients happy and the money coming in. When viewed from a purely technical aspect a lot of those decisions will seem crazy.
So I’d say a degree of commercial awareness will help all developers. At the very least, it will help them appreciate other areas of the business and not take their salary for granted. At the most, it’ll make them a lot more effective and the job way more interesting.