Over the last few days, I have been helping verify some software for an new production environment.
In the end only minor changes had to be made to the code. If I was familiar with the code base and the configurations, it would have taken at most 2 hours - but it took 3 days to resolve all of the problems. This was a perfect example of where much of my effort, and no doubt, other support effort goes these days.
It was so unproductive and frustrating. This experience is becoming more common as most of my work is either direct support, or enhancing existing systems.
The cause is fundamentally a management problem. In general, the work that I do is triggered by a business request (in the form of a change document), that must be tracked via many redundant procedures in an idealised development life-cycle. There is no investment in keeping the code base clean, and ensuring that the internal structures are well factored, and understood.
By and large, the code base is "write only" code. By this I mean, the code is largely only well understood by the author of the code, and then only when it is fresh in their working mind. This problem is excarbated by the fact that the code base is a collection of text written in variety of forms and using a collection of technologies that embrace the .Net Web development.
Where was the time lost - all problems had to be discovered. They could not be predicted. In development the code works fine, and thus gives no hint to the implementation problems
- understanding of the essence of the implementation technology
- determining a variety of missing configuration settings
- no good error trapping and reporting as problems arose, thus masking the original problems
- introduced bugs in the adaptive code, initially masked by the configuration and error trapping problems
- painful code-debug lifecycle as the problems related to transitioning developed code to a simulated production environment.
This can only be improved when an investment in effort to improve the code base and ensure that the structures follows the needs of the application. I do not see this as forthcoming. These frustrations will be repeated.