I was recently asked to inherit sustainment of a legacy web application written in Visual Basic ASP.NET with an Oracle 11g back end. I have learned that I am the sixth administrator to sustain the system and my predecessor left about a month before I took over. The turnover that he received from his predecessor just a few months before has largely been lost. My predecessor stopped answering my e-mails. Thus, I was left scrambling trying to pick up the pieces.
Documentation on the database schema’s logic and organization has to be reverse engineered. The same state with the ASP.NET, VB code behind, and VB classes. There are SQL script files that I had to decipher in order to accomplish the latest data load for the client in short order. It took me about a week to patch Oracle with the latest update, figure out the production environment, and get the new data loaded.
I spent a couple of days after that banging my head on the desk trying to figure out the Visual Studio configuration and thinking that I was missing a DLL referenced in the project and went on a wild goose chase to find it. I finally gave up, rebuilt the VS project and found out the previous project file as all messed up and the DLL was vaporware. At least now I can compile a code set. I’m not even completely sure I have the correct code base as revision control was not in use and I have found at least six copies of the source code on the workstation, network share, and web server. The production code is obfuscated into compiled DLLs, so who knows. I’m going to have to rebuild the test and development environments and compare functionality to be reasonably confident.
The point I am trying to make is that companies/clients are largely clueless about the value of knowledge management in the software lifecycle. I am as guilty as anyone else about leaving minimal documentation about a project. If you’re intimately familiar with the project, what do you need documentation for? But, when that knowledge leaves, someone has to pick it up. Teams with high turnover rates usually have fragile code because they don’t understand all the pieces. Eventually the recommendation comes to re-write the application so that they can understand it, but then that team eventually rotates out and the cycle starts all over again.
Most managers don’t have a basis from which to judge good documentation and knowledge management. Most couldn’t tell you what good looks like because they’ve never seen it. But, they experience the cost in a number of ways; (1) lost productivity due to reverse engineering, (2) increased defect count resulting in more re-work, (3) decrease in system availability, and finally (4) losing a competitive edge to competitors who are out innovating them.
It’s a known fact that Programmers hate to write documentation. Die hard Software Engineers understand the value of documentation as part of the engineering process. The trap is managers who want to see tangible products at less cost and documentation is often the cost savings avenue. As long as production is running, the knowledge and documentation must be adequate right? But, have they ever stopped to measure the effectiveness of their knowledge management system? No. Because the production system is operating right now.
VN:F [1.9.10_1130]
Rating: 9.0/10 (1 vote cast)
VN:F [1.9.10_1130]