Rewrite or Duct Tape?
I have several theses or threads running through this site, one of which is you cannot be a IT manager without being a programmer.
It is a little bit controversial, mostly amoungst IT Managers who cannot program. I stand by the idea though - its a little like expecting an illiterate to edit a newspaper, it is theoretically doable, but, why ?
One of the times when being a programmer is absolutely necessary is the perennial "Should we re-write this hunk of junk to be better / cleaner / more manageable?"
The correct answer will not be apparent till months or years later, but just as an author will sometimes have to ask "should I re-write the manuscript" this decision is one that can only be made by someone who has read it. And if you cannot write code you are cedeing the most important decisions to those who can.
Its usually a bad idea to re-write
The famous example (made so perhaps by Joel Spolsky) is Netscape, who decided to take 5 years, lose almost all market share and the company, in order to re-write their web browser. They produced Mozilla, which in the end is winning the battle, but destroyed Netscape in the process.
Other examples include
Examples situation - California COBOL rewrite, Netscape, http://weblog.infoworld.com/fatalexception/archives/2008/08/californias_leg.html joelonsoftware
However there is a caveat. This is the "stop everything, have nothing releaseable" approach. There is a different approach, that of ensuring there is a releaseable candidate available at all times. This is the preferred approach and
Is this a feasible research project? What would the answer be how to break down criteria? How much could be replaced / overlaid etc? in fact its not too bad as research.
Simple enough to fit in one brain
On what criteria should we make these decisions. My vote is a simple one - at the point at which the system no longer fits neatly into one brain.
This is the limit of complexity - anything more complex and it really cannot be used. Boeing is best example - there are one or two people in Boeing who understand how the whole plane fits together. Every part. They may not be able to tell you the spec of the left hand wing nut 145 but they can tell you that as it is in the rear of the wing and is riveted at 2cm distances it must have a sheering strength of ... let me think, 2.5 times 300Kg, yeah. 47.'
SOmeone who understands the system as a whole. Now if boeing decided to put swing wing aircraft with sunroofs and MRI scanners then one person whoule not be able to know enough fundamentals to keep it all in their head. and then there would be no-one who could say 'hold on, that new idea just will not work'
There MUST be, for any single system, one person who understands it all - that is, could recreate it, not from memory but from first principles - who in thoery could sit down and say, well the architecture means I must have a wing light enough to have this Hooks constant, which we decieed was aluminum alloy of X, which means
This person should not be able to create it all himself - but should be able to lay out the specs in enough detail that peers could create the parts and it would all fit. This is the IT Manager - boeing chief engineer
Any higher up (in quotes) and that capability is not there, and so that person should not make decisons about the system. They should and presumably do not decisions about the policital system around that engineering project and this is right - they are a politician.
I guess I am saying managers can only manage that which they can recreate from memory and hold a working compelte model of in their head.
Its a tall order, but without it you can never decide if rewriting or duct tape is the best option