|
Re: Software Reusability: Myth Or Reality?
|
Posted: Jan 29, 2007 8:13 AM
|
|
Arash, thanks for sharing your insights into what appears (to you and me at least) to be a widespread shortcoming in Java development organizations. Here are some thoughts on the very interesting questions you raised:
> 1. Is reusability something that one can train for? Is this something that can be taught in school.
Yes and yes, though I think this really gets to an even more fundamental question: Are Java developers sufficiently trained in OO Design? Without a proper grounding in design principles, developers tend to write code that's difficult or impossible to reuse. Worse, they generally fail to think in terms of layers, components, etc.. -- in fact, all too often, little thought seems to be given to anything beyond "How should I write this algorithm?"
As a result, much of the application code I've seen in real-world projects borders on the unmaintainable. Sadly, developers who are unable or unwilling to write maintainable (much less, flexible, extensible, etc.) code are in no danger of creating anything reusable, nor are they likely to even consider reuse.
2. Is reusability for key business objects and application modules a concept that has to be dictated as a requirement? I don't think so. I think the issue here is really one of leadership. Developers who are capable of noticing opportunities for reuse and able to exploit them effectively will generally do so without any urging. Those who are incapable will only make a hash of things if they are forced to make the attempt due to requirements.
Also, I have to say that I'm astonished that so many Java developers seem to think that using an open source framework or other third party product somehow constitutes reuse. To my mind, usage of third-party projects is 'use,' not 'reuse.' (And for that reason the old mechanic may be unable to provide much insight, since scavenging parts isn't all that analagous to creating reusable components).
|
|