Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: A Porting Horror Story

by moodster (Hermit)
on Apr 10, 2002 at 08:24 UTC ( #157974=note: print w/replies, xml ) Need Help??

in reply to A Porting Horror Story

Rewriting the whole code base from scratch is often very tempting when you're knee-deep in APIs that started out reasonable, got changed due to changing specs, got changed again because one programmer felt like it, then got changed again because another programmer realized that the API didn't actually work. And so on.

You say to yourself "Bah, I could rewrite this from scratch in a week and still have time to leave early on friday". You convince your boss and your colleagues that you can do it and they give you thumbs up. You sit down monday morning, pour a cup of coffee and start to type away. And then you're screwed.

The thing is, a lot of thought has gone into you existing code. It looks ugly, yes, but that's because it already contains the bug fixes, the workaraounds and the quick hacks that make the system run in your choosen production environment with all its limitations, known issues and bugs. If you start over, chances are that you're gonna have to reconstruct all this accumulated knowledge all over again.

That said, and with the java-bashing going on in this thread, I'd like to publicly state that I love java. Thank you.


Replies are listed 'Best First'.
Re: Re: A Porting Horror Story
by stephen (Priest) on Apr 10, 2002 at 19:12 UTC


    I also love Java, and didn't mean to make an attack on the language. Java has its good points and bad points, like any other language.

    In their defense, the folks at this company were all pretty bright people. They made some bad decisions, but the decisions looked good at the time. Hindsight is easy.

    Also, the decision to refactor is a really tough sell. Imagine going to upper management and saying, "Hey, I've got a great idea-- the Engineering department is going to spend about half of its time making changes to the code which have no effect whatsoever visible to the outside world. But after we do that, the code will be mysteriously better!" Porting, although it is really the same thing in a much bigger chunk, gives upper management something they can point to. "See? We're moving forward! We've moved this from Language A to Language B!"

    The disaster described here could have happened just as easily porting from Java to Perl as from Perl to Java... or even doing a rewrite-from-scratch on a project in any language.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://157974]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2018-02-21 19:44 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (287 votes). Check out past polls.