Saturday, December 11, 2010

Technical innovation within a company, how do we approach it?

What does it mean to say technology innovation within the context of a company? Is it the the ability to create the next break through innovative project? Is it about creating the next best framework for development? 
It can be so many things. But if you look at it, innovation should be looked at from the ground up approach. We cannot have technology innovation without first improving the skill levels of the existing and the newly joining developers within the company. True that only a few may be involved in creating the next best framework, but there should be proper processes in place so that newly joined people are given thorough knowledge on what goes on the inside of these frameworks.

I often meet people who uses highly optimized, efficient frameworks that are put together by people within a company using the current technologies working together pretty well. So i had a chat with this developer who was working in this project using this framework. This is how it went down;

Me : "Hey this looks pretty neat... How is this functionality handled within the framework?"
New guy : "Oh thats easy, i just put this entry to this file and it works just like that..."
Me: " :S ....."

Thats a puzzled face btw :) ... It was pretty clear that he/she had no idea what was going on in the inside of the framework. In the frameworks point of view this was great because it hides alot of complex details from the developer and handles it internally which is why we standardize good frameworks, but if you look at it from the companies perspective, now we have a few developers who just dont understand what goes on within the framework. So how is that a problem some might ask ( specially the management ;) ).

To the management its great because they see that any new developer can come in and start working on the project from day one which results in maximum efficiency right? WRONG.... If any issue comes up whilst working, they would have no ground knowledge to figure out where it is going wrong. 

Im not saying that every developer should know in and out of the framework their project is working, but at least the high level understanding should be there so that when a problem arise, they will at least know where to start from to find the issue.

So how do we achieve this? When we start off with a particular framework for a project we should ask the main people involved in creating the framework to have a few slides explaining the high level details of why certain things were done the way they are in the current framework. And have at least a one day work shop organised for people who join newly to the respective project.This way the load on the technical leads will be less as they now have new people with a fare amount of knowledge on whats going on in the inside of the project which will prevent them from doing something radical which would break the whole concept of the framework.

And in terms of the company technology innovation has taken place, but this time its not just involving few people who develop the frameworks, but every one including the new people are included as part of the innovation. I believe innovation cannot happen unless the whole set of developers are inline with what we have achieved.

Innovation is a must in every IT company, in this post i just wanted to layout some basics that need to be in place for technical innovation to take place.  If everyone knows where we are heading as a company then the path we should take is clear and transparent to everyone.