Can Software Improve Over Time Through Refactoring?

As you know, the practice of refactoring is to account for software changing over time–presumably improving. Is that a myth? To some degree, I wager yes. Here’s why… and it’s not what you think.

Over the last few weeks, I’ve been involved in a fire drill to improve the reliability of enterprise messaging (via JMS) for a set of messages that transmit financial-related data within the organization I currently work. Said enterprise messaging library is approximately six years old and has had many features (as you can imagine) added to it over the years.

Upon initial inspection, it is quite clear that there is a significant amount of “Copy-n-Paste” coding involved in creating the additional features. Clue 1: Copy, paste, mutate does not constitute refactoring! Where’s the craftsmanship in that? Software quality, reliability, and readability degrades over time because software developers often just don’t give a damn. They lack pride, care, and craftsmanship. It’s as hard to find a good software person as it is to find a good doctor, mechanic, etc. Is that the company’s fault?

OK venting aside, I maintain software truly can improve over time. But as with anything (e.g. relationships, gardens, food, coffee), software requires tending. Software is never done so we need to be dilligent and deliberate with our changes. Companies need to account for total cost of ownership and allow time for refactoring to occur during the introduction of new features. Of course, that implies software developers have the inclination and skills to improve the software over time.

Positioning, Branding and the Demise of the American Automobile

As I drove to work this morning, I saw a black Pontiac Solstice on the highway. Nice car! The convertible top was up due to the temperature here in Denver this morning. Then directly in front of it, I saw a Lincoln LT pickup truck, which got me to thinking about the demise of the American automobile manufacturers. First of all, I thought, “Duh!” My grandfather said many times that he was waiting for the day when they’d make a Cadillac pickup. Too bad he wasn’t around to see it. But my point is that he only said it because it was completely ridiculous. Caddilac and pickup don’t mix. Cadillac means “big, luxury car.”

So what’s the difference between Cadillac, Pontiac, Oldsmobile, Chevrolet, and GMC? What are the differentiating factors in deciding to buy a Lincoln, Mazda, or Jaguar over a Ford? Or for that matter, why would you buy a Passat over an Audi A4 (or visa versa)? And who ever thought Porsche meant “high performance SUV”????! Now we know why Porsche profits have been suffering over the last few years. And if the Cayanne has improved them, it’s short lived.

Back to that Solstice… Pontiac’s tag line has been in recent years, “We build excitement.” Cool. I say go with it! And that Solstice looked pretty exciting. I see that on their website, they’ve chosen, “Pontiac is car.” But they also build SUVs. Hmm… something to think about.

Pretty Exciting Looking... The Pontiac Solstice
Pretty Exciting Looking... The Pontiac Solstice

The foreign auto makers have done significantly better in branding and positioning, me thinks. While Toyota does build cars, trucks and SUVs (which, IMHO is a mistake to brand them the same), they have somehow managed to hold the position of “dependable,” “long lasting” or “quality” vehicles. So, now people are willing to pay a premium price for their foreign-made automobile in hopes of getting more “value” out of it in the long run.

American auto makers wake up! Stop creating the cross-over confusion, utilize our American enginuity and resourcefulness to build a better product, and differentiate your brands! Long live the Solstice!