I taught myself a little BASIC in high school; but in those days, living in a small town in the middle of nowhere in India, access to a computer was not exactly easy (I touched one just a handful of times). Later, I got to know some COBOL and eventually FORTRAN. As a physical chemist with a strong interest in quantum mechanics, and numerical methods FORTRAN seemed like a good fit. In grad school, as I moved from mostly wet lab work to writing electronic structure code, and using computational methods to study protein dynamics, structure and photophysics, I was a complete hack. FORTRAN was a tool to express methods, and Perl was fast becoming a tool to script around various applications and munge files. But in those days, outside of FORTRAN, most of my time was actually spent in the CHARMM scripting language and Mathematica. Later I wrote a lot of FORTRAN and even more Perl, but pretty much as someone just getting the job done, the language was just something that helped.
I never learned good software development methods and today after some years away from anything but basic scripting, trying to write applications in new languages is hard. Was it the languages? Was it just a different era. Today I actually enjoy my frustrating attempts at programming, and look forward to it lot more than I used to. The point here is simple. We are talking about teaching biologists how to program, but perhaps in an analogy to what Thomas Mailund talks about, we should perhaps be teaching computational scientists better software engineering. I know how to program, but I don’t know how to write good software, and my experience in the scientific software field over the past decade, both direct and indirect, suggests that I am not alone. So why don’t we write software that biologists enjoy using. Yes, I admit as biology becomes more of a digital science, there will be a greater need for computational thinking, an appreciation for software development, and the ability to write scripts and interact with software, but I think we need to clean our own house first.
Posted via email from mndoci’s posterous
Biologists, programming and house cleaning
I taught myself a little BASIC in high school; but in those days, living in a small town in the middle of nowhere in India, access to a computer was not exactly easy (I touched one just a handful of times). Later, I got to know some COBOL and eventually FORTRAN. As a physical chemist with a strong interest in quantum mechanics, and numerical methods FORTRAN seemed like a good fit. In grad school, as I moved from mostly wet lab work to writing electronic structure code, and using computational methods to study protein dynamics, structure and photophysics, I was a complete hack. FORTRAN was a tool to express methods, and Perl was fast becoming a tool to script around various applications and munge files. But in those days, outside of FORTRAN, most of my time was actually spent in the CHARMM scripting language and Mathematica. Later I wrote a lot of FORTRAN and even more Perl, but pretty much as someone just getting the job done, the language was just something that helped.
I never learned good software development methods and today after some years away from anything but basic scripting, trying to write applications in new languages is hard. Was it the languages? Was it just a different era. Today I actually enjoy my frustrating attempts at programming, and look forward to it lot more than I used to. The point here is simple. We are talking about teaching biologists how to program, but perhaps in an analogy to what Thomas Mailund talks about, we should perhaps be teaching computational scientists better software engineering. I know how to program, but I don’t know how to write good software, and my experience in the scientific software field over the past decade, both direct and indirect, suggests that I am not alone. So why don’t we write software that biologists enjoy using. Yes, I admit as biology becomes more of a digital science, there will be a greater need for computational thinking, an appreciation for software development, and the ability to write scripts and interact with software, but I think we need to clean our own house first.
Related articles by Zemanta
Posted via email from mndoci’s posterous