Ah, before I forget, some news for the Informix fans out there. It hasn't escaped my attention that some ex-Informix people aren't entirely enthused by the IBM takeover and doubt IBM's real level of commitment to the product.
My impression is that Informix is doing just fine with IBM - and in support of this, I'll mention that Steve Mills (senior VP and Group Executive, IBM Software) used it as an example of component reuse in IBM at his RSDC 2008 keynote. Apparently, Informix IDS technology has been reused and/or bundled with 39 other IBM products, which seems to bode well for its future.
Steve was explaining that he runs a tight ship and has outlawed the "reinvention of the wheel" at IBM. Sounds like a great idea to me and I wish him luck.
However, one of the penalties of growing old in IT is constantly seeing ideas and technologies that you've seen before trotted out again and again. Often without reference to what went before (I have a horrible feeling that things really are re-invented from scratch, with a new name, in many cases) and without any attempt to address the issues that caused previous efforts to fail. Only IT could turn wheel reinvention into a formal development process.
OK, I exaggerate slightly but I'm now impressed by Steve's figures: WebSphere Application Server technology is apparently reused in or bundled with 126 other products; DB2 scores 175 products; WebSphere Portal scores 15; and Cloudscape database 253+. It's not so much the absolute numbers that impress me, but that he obviously has metrics for re-use and his developers are expected to take notice of them. IBM has plenty of database technology already, for example; Steve doesn't want to pay people to write any new databases for its new products.
I like reuse. It isn't easy (unless you are a mature metrics-focussed organisation that measures and rewards reuse, and even then, it takes effort) and you need to invest in and design for reuse - accept a short-term hit in exchange for long-term benefits.
But, managed properly reuse delivers productivity and steadily improving quality, as reusable components bed down in production. Refactoring reusable components to make them better is allowed, even encouraged; although it helps if you can measure the improvement from refactoring against the effort required.
However, back to reinventing wheels; or failing to learn from the past. I remember when Structured Programming promised reuse some 30 years ago. It didn't deliver, partly because people measured development cost, not total lifecycle costs, so if you developed for reuse, you came in over budget; while your fellow programmers got all the kudos from using your components to come in under budget. However, another barrier to reuse was the difficulty of actually finding reusable components just using their domain-specific names; and the poor design of components which often packaged several functions together, only one of which you needed when you came to reuse them.
Then along came Object Oriented Programming, which sold to the Board of the bank I was working at because of the object reuse it promised. That promise wasn't delivered on either (although, since no-one was measuring reuse much, how would anyone know). Once again, people weren't rewarded for building reusable objects because the focus was on delivery cost, not whole lifecycle cost; object cohesion wasn't generally very good - and no-one could find objects outside of the system they were developed for anyway. Nevertheless, a certain degree of localised object reuse was achieved and C++ libraries represent reuse of a sort (although reuse of badly designed, inefficient, badly partitioned objects produced a lot of the bloatware we now have).
Then along came component based development. And reusable
services. And a bit more reuse was achieved, but programmers still felt happier redeveloping everything from scratch, mostly for the same old reasons
And now IBM is measuring and enforcing reuse of fundamental middleware and data access technologies. Good for IBM - but this excellent idea of not reinventing the wheel has been a long time coming....
Perhaps 2008 will be the year when reuse finally becomes the accepted norm everywhere - but I'm not holding my breath.
Twitter Hashtag: #RSDC