So I’ve been working on this major project at work fixing some of the worst coding I’ve ever seen in my life. The requirements were that we use the underlying business rules and objects of the current application while rewriting the user interface (web based) to improve usability and performance.
Trust me, the absolute horrid level of coding is mind boggling. For the geeks of you out there, I have to constantly deal with beauties like this
Public Function GetByIndex() As Integer
I guess declaring a CONST wasn’t good enough?
Anyway, the biggest problem with the whole application is that instead of breaking down the data entry screen into logical sections, it’s all on one page. Most of the fields cause the page to post back (refresh) when they’re changed, and the data sent to and from the server is usually between 500k and 1 Meg!!!!. And we’re talking probably 100 fields. So needless to say, the users find the app too sluggish to use and being that the system this app was to replace is out of warranty, it’s kind of important we get the users off of the old one and into the new.
Enter me. I’ve had to come up with an architecture that would allow us to utilize as much as we can of the current app yet somehow magically make the damn thing perform well. I decided to break up the screens logically into smaller chunks and build a framework for them to plug into that would manage everything so that the developers could focus on a single screen without having to worry about how the other screens or navigation would work. We have to reverse engineer every screen as there is no documentation for the new application and the code is damn near impossible to follow, so I didn’t want the other developers having to worry about anything I could take care of for them.
Back to the point of this post. I’ve suffered some pretty severe depression over this project for the past 3 months. All we have done is sit around in meeting and discuss X and Y, document the minute details, talk some more, blah blah blah. I managed to do some pretty decent research and development and set up some proof of concepts, but I was itching to get this damn thing on the road because when we have this version up and running we can start focusing on a new application that will replace this one as well as a few others, and that’s a much more challenging process for me.
So, finally this Monday I get to branch the code and start putting in my framework from scratch. However, instead of writing a bunch of code, building, testing, fixing, writing, building, testing, etc. everything just kind of snapped together like a puzzle. I guess since we went through the design so thoroughly there was nothing to catch me off guard when it came time to put it into actual work. Now, I think 3 months was too long to be prattling on about a project, but I have to grudgingly admit that the technical design documents and the discussions absolutely made the implementation process painless (yeah, I know, the architect shouldn’t be the one coding, but we’re highly under staffed as it is).
There was even a ‘gotcha’ that popped up but because the design was flexible, it only took 5 minutes to implement new functionality and get all the components on the same page.
Finally, some work that’s actually satisfying for a change!