|Think about Loose Coupling|
Thanks for posting this, even though it made me shudder. I'm part of a team approaching the end of rewriting a major part of the infrastrucure of our search engine, and it's gone remarkably well but reading this I see how we could have fallen down dramatically.
The majority of the team here are Java programmers, and our front-end is all J2EE stuff. I have my own views on this, but the fact is it's here and it's not going to change any time soon. The starting code for the section we were rewriting was out-of-house Perl though, horrendously mangled in my opinion and desperately in need of either a rewrite, or at least a major tidy.
To start with we knew what we didn't want to do, we didn't want to just clone the system with it's annoying quirks and all. We wanted to tie parts more closely in with the front-end business objects to avoid having the same code concepts duplicated in two places in two different languages, with the attendant maintenance nightmare.
The result is remarkably clean considering the amount of detail and 'special cases' we had to deal with. The initial pre-parsing is all Perl, which then hands over to Java to do it's bit of the work, and finally back to Perl to merge the Java programs results and replicate them to all of the servers.
The difference here was we had a team leader who knew what he was doing, we had a team who despite having very different core competencies managed to hold together, we had people who knew what the old system should do despite being unable to read the language it was in, and me who knew the language but didn't know 'what it did'. We even ended up leaving small parts of the old code on the basis no one knew them well enough, and if they collapsed so did the search engine.
We went out there with a view to make this work, in-house, and don't get hung up on language terrotorialism and buzzwords.
Thank you, Stephen. It's nice to see how lucky I am at times, just hope you have the luck to soon get a job where you'll have your own success stories once more.