|Think about Loose Coupling|
Re: What to do when you realize you've written bad codeby ignatz (Vicar)
|on Oct 16, 2002 at 16:40 UTC||Need Help??|
Here's a war story from my life as a dot.bomb veteran:
I had spent months of 70 hour weeks building my dream publishing system. I had meditated for endless hours on how to anticipate every need that the armies of product managers would pull out of their ass at a moment's notice. 24 hour a day Audio/video streams, multiple instances with different look and feels, web and email content feeds, flexible modular content, real time web based publishing tools for our multiple offices, built in safety checks and roll backs, automated testing and bug reporting. I could change anything anytime anywhere at the drop of a dime. It was the culmination of my years of working with publishing frameworks. It was my masterpiece.
Then I had the meeting.
We had known for a while that we were on a sinking ship. All of the other pillars were gone. I called us the pillars. These were the technical people who made things happen. Irish: Q-Mail god, Cannon: FreeBSD hacker/security guru extraordinaire, Cary, our MIS man who actually lived in the office, and me, the builder of Spew, our web publishing system. We were the only people who mattered. Every other employee could jump off the Golden Gate Bridge and to the external world nothing would have changed. They created problems, we solved them. We were the embodiment of the psycho Christian work ethic that allowed the snake oil salesmen to create the Internet tulip craze, and I was the sole survivor.
We had started calling it the floating turd. It seemed like a good idea in the super secret pitch meetings in the Noah's Bagels dining area on Montgomery Street. But all our genius couldn't fix the key ingredient to a 24/7 streaming comedy site: it wasn't funny. In hind site, my idea of just putting web cams in on our product meetings would have been better.
Everyone else had left, but I didn't want to. This was my baby. I created this. My vision and now I had the power. My word was law. I controlled a team of top notch programmers. Nothing went live without my say so. This was it. This was what I had worked for. I had earned this.
The VP of Operations called me in for a talk with the Director of Product Management, or the Dragon Lady as I had dubbed her.
"Chris we wanted to talk about something. You know we are really impressed with your work here and we've been talking about the possibility of turning your framework into a commercial product. As you know we are in discussion with several companies about merging our operations into their's and it's important that we maximize the assets that we bring to the table. We feel that your publishing system is a key asset for the company."
They wanted to sell Spew. The one move that I had not anticipated in my paranoid wheels spinning within wheels. I was fucked.
What was once a brilliant solution was now a cheap ugly hack. Spew worked for us. It allowed us to serve up our site any way we wanted, but there was no way in hell it would sell as a commercial product. It was black magic. Only a few of us even understood the secrets inside Spew's Page module, the deepest gut in Spew's intestines. The darkest secret of all; that our method for templating was a joke, that creating new look and feels ment covering oneself with tons of spaghetti code, was something that I used all my power to keep to myself. "Oh, don't worry, I'll take care of that. You focus on those tools..." Giving this monster to an outside group of developers would mean relegating them to the lowest plane of Programming Hell.
"So what do you think?"
I did what any good developer would do, I punted: "Well, it's an interesting idea. I'm very flattered. I must confess that our system was not designed as a commercial product. It will take a lot of research and development to get it into shape. I'm not even sure if this is the best language for such an application. I've been thinking that to really allow us to have the flexibility that it needs would require a language more geared for the Enterprise, such as Java. I would like to spend some time exploring these options and get back to you."
A few months later armed guards were escorting us out of our financial district offices.
I look back on the code and I see crap. Yes, there were good ideas, but poorly implemented. Live and learn. Next time I'll get it right.
UPDATE: fixed error spotted by John M. Dlugosz.
()-() \"/ `