The Art of Turning a Weak Excuse into a Strong Defense February 10, 2008Posted by ActiveEngine Sensei in ActiveEngine, Problem Solving.
Tags: ActiveEngine, gurus.
A clever person solves a problem.
A wise person avoids it.
Many applications have a life cycle, with some surprisingly long that leave you scratching your head saying “How the hell can that piece of crap ever be sold? Who could love this so much that they would keep it around anyway?” These applications become the vampire that returns to suck the life blood out of your company, as you pour more dollars into maintaining it, become dependent on the the few who have the skills to support it. It becomes a self perpetuating lie.
One such application is now in Sensei’s cross hairs. This thing is the worst nightmare, where there is no source code. No source code! The application has a database that stores macro commands in de-normalized tables. There is a runtime interpreter – no not ANTLR – that must hit the database, read the tables, and generate the screen at application launch. For every person who logs into the application, this process must run. For 170 people. It sucks. It’s a friggin’ nightmare.
So now you are trapped, unless you take drastic action. And this will be hard, as there will be happy ignorant business units, spoiled by the fact that the consultants rapidly produced screens and reports without revealing that they added database attributes on the fly, created a custom solution for every single one of those 200 reports and screens, and have retained Visual Basic 6 as the platform for the runtime engine.
If there were code that could be read, it wouldn’t be so bad. You see, there is a custom macro language that is used on the screen and report objects to do the work of implementing business logic. You can’t debug, you can’t set breakpoints. Despite this mess, the original progenitors of this nightmare are held in high regard as they created screens that people liked. Any one who doesn’t believe that their work was great is reviled as an idiot. The icing on the cake is that the application performs the prospecting, billing and collections for the company.
You would think that with the awful truth looming on the horizon and the realization that the company is locked in with this awful solution, they would get rid of such a poor technology. This is where the product’s weakness has created the barriers for its removal. You see, since this application is so vital to life of the company, no one wants to touch it. People’s egos won’t allow them to admit their mistakes. The weakness of the software’s implementation – lack of coherent design patterns, legible source code, normalized database structures – is the strongest reason why is can not be eliminated, as no one can truly understand what this does. Being reminded of that fact is very uncomfortable for some of the stake holders.
Sensei has a plan. Like the end of Godfather 2 where Michael Corlione sends out the assassins to tie loose ends, expedient yet painful initiatives have been set in motion. The first act was to fire the consultants and fix their mess of a database with a new team comprised of in house talent augmented by a few good developer / mentors. The next step will be to reverse engineer the lexer / parser to divine the execution graph for all the objects and automate the documentation of the business logic. Stay tuned.