Wednesday, August 22, 2007 - 02:16
I get asked this question often enough and now that's it's come up again, it seems that I might as well answer it once and for all and get it over with. First, I want to change the question. Of course they don't need to learn programming. A better question is would it benefit biologists to learn programming? My flip half-way serious answer is yes, if they want to change careers. You see, programming is really seductive when you've been a wet-bench biologist. It's like heroin. (At least I suspect it is, I know about programming, I don't have any experience with the other beyond reading William Burroughs in college.) Quick results, instant gratification, release that dopamine baby, I got my answer! I know that might sound strange, but biology experiments can take months to complete and they're not like sequencing DNA where it's really more manufacturing than research. With DNA sequencing, you always get data. With other kinds of experiments, you can spend months on things that turn out to be a complete waste of time. Many experiments just don't work and even worse, you never understand why, until maybe a year or two later when someone else gets it to work and all of a sudden you know what the problem was, but now of course, it's too late. Sometimes it's a lot easier doing a bit of programming and working with other people's hard won data than doing lab work yourself. I once spent a month trying to kill some BHK cells. So, I know. Anyway, I'm not a programmer, and I've never taken any classes in programming, but when I moved to a software company I thought I should learn some Perl, since it seemed like the thing to do. I spent lots of my free time learning Perl on my own and writing scripts and pipelines so that I could analyze weblog data for my NSF grant and track usage. This was more accounting than science really, but I'm conscientious and thought it would be good to know. Then programs like Webalyzer and Statcounter, and Google Analytics came along and made that project kind of moot. I'm convinced that much of bioinformatics will do the same thing and that a lot of programming activities are really done better by real programmers. So, why do I say that biologists should learn something about programming? For a few reasons. First, I think learning something about programming is good because it helps demystify software. Computer programs are written by people. It's good to know that and it's good to have an appreciation for the kinds of mistakes that get made and that you should test for them. Yes, you need to do controls even when you're working with computers. Second, programmers speak a different language and it's possible that you may end up working with some. In their world a regular expression is not "que pasa! or "garden variety" or "howya doin'?" Programmers talk about associating things with objects in databases (I even heard this from the cashier at Safeway yesterday as part an explanation for why my phone number won't work) and transactional models and joins and floating points in different ways than most people. Well, perhaps normal people don't talk about floating points. But, you have to face it. Software engineers are not likely to learn your language so you might as well try and understand a bit of theirs. Third, it's fun. Fourth, right now, I'm learning SQL and having lots of fun asking new kinds of questions from databases and using computer power to do more science. I enjoy it. This is the kind of programming that makes sense for biologists to do. Maybe I'll even post some results.