WHERE IS A GOOD EVANGELIST WHEN YOU NEED ONE
This may be a bit of a rant but I think it needs to be said anyway. I'm getting pretty tired of hearing about reuse and how it is such a good idea. Fine… it is a good idea and yes we should all hold hands and sing songs and start reusing each others components and or web services. However, when it comes to the execution of these ideas in the real world we always fall short. I mean where the rubber really hits the road there seem to be a real lack of communication between those that have the vision and those that actually do the work. Joel Spolsky's use of the term Architecture Astronauts applies to what I'm saying here.
What I've see in my travels has been an architect or non-technical manager that has a great idea for a way in which we can reuse a component or use web services across applications. Everyone gets excited in a meeting or two and then nothing gets done. The reason nothing gets done is because it is hard to convert a strategic vision about reuse into a tactical plan for actually doing it. How the hell is a manager who calls himself technical, because for two years in the 1980's he programmed COBOL, going to create an effective plan for reusing components across an organization. It just isn't going to happen.
The only time I have see a plan for reusing pre-built components within a company was when I worked for Click2Learn.com. The reason it worked there was because we had a couple of managers in the engineering department that were truly technical. They could talk to senior level managers and convince them that it was a good idea to spend extra time building these components so they could be reused across multiple projects. In those meetings the strategic vision, so to speak, was set. After that those same two managers would do some hands-on work and create a proof of concept that they could show to the software developers in the Custom Services Department. We would look at these things they had built and talk about them and how they should be used. After that we would all go away and try and built our own components or improve on those that had already been created. It was cool and when someone came up with something everyone wanted to reuse the original developer got to name the component. It sounds stupid now but at the time I found pride in naming a component that everyone else in the company would use.
What those two managers were at Click2Learn.com were Evangelists. That were able to communicate a vision to the business and then had will and the technical abilities to actually create something that could be used. They were unique and they did a really good job. Their communication skills impressed the business and their technical skills impressed the developers that worked for them. I haven't met many people that can do those types of things and be good at both of them. Maybe there is another way to make things work without those special people but I haven't seen it done myself.