Anyone whose ever worked on a software engineering project has at one point or another either said or done (or both) "let's just implement something quick and dirty for now and we'll fix it later." While I've been living through the nightmare of this statement for the last 2 years at work, it just hit me today as to why this is so bad.
A co-worker just asked me if I knew what the c-rt.tld file was about and why it was only referenced in one JSP page. It struck me almost immediately what that file was and even though I'd seen it before, it never clicked until now. We opened it up and as expected it was a JSTL tag library definition file, in this case, for the core library. Now, we also have a c.tld which also defines the JSTL tag for the core library. Diffing the files yielded that the JSTL versions were slightly off, but that other than ordering, the files were the same. Looking at the SVN history made it all clear.
First, a brief background: in late spring 2006 my company hired a non-American subcontractor to implement a rather large and important piece of functionality for our web application because at the time, we simply didn't have the resources to do it in house. They initially branched our code and went at it while we did our own thing in our existing code branch. According to the check-in comment for this c-rt.tld file, the file was added as a result of the merging of these branches some 6 months (!) later.
My guess as to what happened is this: the developer for this check-in ran into conflicts the likes of which even god has never seen and instead of trying to understand the conflicts and why they were occurring, they just created different versions of the file and "fixed" the references in the @taglib directives in the JSP pages. The result is that instead of only having one TLD for the core JSTL library, we have four(!). Likewise, we have four for the fmt library and three for each of the sql (which you should NEVER use, by the way, and we don't) and xml JSTL libraries.
I realize that this example alone doesn't directly state why "Quick and Dirty" is bad, but consider this: We fired said subcontractor in December 2007 and we've been cleaning up, rewriting, and removing their code ever since. This means that we've been working on fixing issues with their code for longer than they were even contracting for us.
So, the next time someone on your project says "let's just do it the quick and dirty way for now," push back, put your foot down, and say "no." For better effect, replace "no" with "over my dead body." If you're overruled, and this is bound to happen, file a P1/Severe bug against the code fully documenting where in the code the egregiousness lies, why the decision was made to not do it correctly the first time, and the right way to fix it. Trust me, you think you won't forget, but you will - and the bug documentation is all you will have.
Wednesday, November 18, 2009
Wednesday, October 7, 2009
Training Again...Sort of
So, while I've not officially been training, I have been swimming and biking to keep from getting too fat in the off season. It's sort of working.
However, 3 months of no structure is starting to become rather boring and I'm starting to crave actual, structured workouts.
So, with that should come more entries....hopefully.
However, 3 months of no structure is starting to become rather boring and I'm starting to crave actual, structured workouts.
So, with that should come more entries....hopefully.
Wednesday, August 26, 2009
Summer Updates
Nothing exciting other than MY RELAY TEAM PLACED 2ND AT THE 5430 Long Course Triathlon!!!! Woo hoo!
I did the swim for my wife's relay team at the Boulder Peak Triathlon in mid/late July and had the fastest relay swim time. Building on that and some major last minute drama in getting a team together I was able to field a team for the last 5430 Long Course triathlon (5430 Sports was sold to the Ironman Corporation). And when I say last minute, I mean I was dropping a check and the racing forms off at Jodee and Barry's house on the Friday night before the race - packet pickup was Saturday morning and the race Sunday.
Out of over 50 teams, I had the 6th fastest relay swim time. Kevin, our biker, had a fantastic ride, and Morgan ran a great half-marathon. We lost to the 1st place co-ed team by over 10 minutes, but their biker was Neal Henderson from the BCSM and their runner was Jimmy Archer, a pro triathlete. So, I think that's very respectable.
I'm not running now to try and let my foot heal a bit but I've been biking 2-3 times/week and swimming 2-3 times/week. I can tell I'm not nearly as fit as I used to be and I'm really antsy for some structure, but it's good to have some down time and it's good practice for me.
I did the swim for my wife's relay team at the Boulder Peak Triathlon in mid/late July and had the fastest relay swim time. Building on that and some major last minute drama in getting a team together I was able to field a team for the last 5430 Long Course triathlon (5430 Sports was sold to the Ironman Corporation). And when I say last minute, I mean I was dropping a check and the racing forms off at Jodee and Barry's house on the Friday night before the race - packet pickup was Saturday morning and the race Sunday.
Out of over 50 teams, I had the 6th fastest relay swim time. Kevin, our biker, had a fantastic ride, and Morgan ran a great half-marathon. We lost to the 1st place co-ed team by over 10 minutes, but their biker was Neal Henderson from the BCSM and their runner was Jimmy Archer, a pro triathlete. So, I think that's very respectable.
I'm not running now to try and let my foot heal a bit but I've been biking 2-3 times/week and swimming 2-3 times/week. I can tell I'm not nearly as fit as I used to be and I'm really antsy for some structure, but it's good to have some down time and it's good practice for me.
Subscribe to:
Posts (Atom)