It seems to me that almost every technology publication these days is talking about how innovative Company X is, how non-innovative Company Y is and how innovation is the difference between what makes a company good or great. I would also argue that public perception of how sound a company appears to be is largely driven by their ability to innovate.
Innovation is something that I feel needs to be fostered in a company from the top down. By making an investment in their people to support innovation from them, I'd be very surprised if that investment turned out to be a bad idea in the end.
This got me to thinking about how we as developers contribute to the process of innovation and how the coding community in a company is such a huge asset to its success. At face value, the question is fairly easy to answer, but when you really stop and think about it, it's kind of tough to quantify how a developer contributes to the innovation of a solution or idea. After all, in non-technical circles, I think the common perception is that coding is largely an instructive task with little input into how an idea becomes something more tangible.
At a high level, the process of making ideas into a software reality moves typically from business idea to funding/capital investment to solution design (i.e.: solution architecture) to coding to testing to deployment and then, finally, maintenance. Sounds pretty typical at a macro-level, right? Well, look at this process a little closer to find out where developers fit in.
The no-brainer answer is in the coding phase. At the core of it, we as developers program solutions. But looking a little deeper, you could argue that developers have a large voice in the solution architecture, testing, deployment and maintenance phases as well. In many cases (both in large and small companies), it's a developer that comes up with the business idea and goes through the process of funding it, either through departmental budget requests, securing venture capital investment or through his/her own personal bank account.
What this tells me is that developers have the opportunity to really come up with or affect the direction great ideas, therefore being a real player in innovation. I'm sure most (if not all) of you have seen examples of this first hand just like I have. I've been in positions where I've been I've been a developer and given a voice into how to make a good product even better. I've been an application architect where reviewing draft designs with the developers has created outcomes of incredibly elegant solutions to potentially big problems. And finally, I've been in positions of management where developers have come to me with ideas that, quite frankly, blew me away and once implemented, made a real difference to the company.
Having said all that, you need to have boundaries as to how the innovation process works. It's important to realize that an off-the-wall solution is not always innovative. Innovative software solutions are ones that are great ideas that become great software implementations. This does not necessarily mean the solution needs to be different than any other solution out there - it just needs to be a compelling solution that affects positively how a user makes use of your software.
As a developer, you touch virtually all aspects of the solution, not just the coding aspects. And that puts you as a developer in a very powerful position to drive not just technical innovation, but also business idea innovation as well. From personal experience, having had a voice in making an idea great and innovative was very empowering both professionally and personally. Knowing that you can make a difference and be able to point to something innovative and say "I was part of that" is such an amazing feeling and is a really great motivator.
What are your thoughts on the role of the developer in innovation? Do you agree or disagree with my thoughts? I'd love to hear from you! Leave me a comment to this post and start a dialogue!
[Edited: Added tags.]