|Think about Loose Coupling|
I got started through the chromosome 21 sequencing project...
So my academic background initially involved using vax and unix command line tools to analyse sequence data during my PhD and initial postdoc projects. This was back in the mid 80s up to about 95. In 95 my boss was asked to be part of the Chromosoem 21 sequencing project and he asked me to set something up to allow folk to get at the released sequences, annotate them, etc. We had this mathematician fellow that was our systems admin then and he put me on to the first Schwarz book to learn Perl - I still have the Pink O'Reilly Perl4 book somewhere... From that I learned how to write an annotation engine, write stuff to a bunch of tab seperated files as a database, cgi scripting, unix admin and the whole shebang.
I've learned a few other languages since then - C because a lot of science apps are written in them and I needed to know how the algorithms worked and why it wouldn't compile on my computer.
Java - it seemed like a good idea at the time. I was looking for an excuse not to use Tk as a graphics rendering package, thinking Java swing would be nicer. But comunicating Perl and Java was a major pain.
Visual Basic - work made me do it. Actully it might yet be useful if I can ever get my head aroung the syntax and memorizing the whole Windows COM+ business. Game programming books are more useful to me here than the MS books - they actually do something with worked examples - the MS books are crammed with stuff that shows off a feature but has little reason attached to it, IMO.
C++ - simple curiosity. Its good when I really need that amount of control but usually I don't need it. Its useful for looking at how people implement neural nets or genetic algorithm libraries - not something I'd think to do in Perl.
Python - one of my employees came with this and raved about it - apart from BioPython's Martel package, I really can't get into this with any enthusiasm. I just find Python advocates to be OO nazis - they seem unable to accept that OO is not always the way to go. I'm not dogmatic and will use whatever works.
Concerning coding, I and my group are involved in scientific computing, so efficiency and correctness of implementation of the algorithm, data models and their representation are paramount. Perl really does all this very conveniently. Yes we could have a faster app if it were compiled rather than interpreted but usually its not that big a pain, IME