Biology students should definitely learn how to program.
I'm in my 4th year as a bio major and have been involved with several research projects. The first involved inducing schizophrenia in rats, and recording their movements in reaction to a set of audio stimuli after being given a set of varying medicines. We had folders and folders filled with spreadsheets of data -- data that would have to be manually inputted into some crappily obsolete software. Even with somewhat specialized software, each run was saved as a separate file, adding to the clutter. Our research would have definitely progressed more quickly had we had programmers that built the appropriate software to aggregate our data.
In my second research project, our team was trying to, and still is, find the metrics to 'the beautiful face.' This requires morphing pictures of women together, presenting these synthetic images to a focus group, who then rates the images. After the pictures are rated, they are subject to a natural selection type algorithm we developed, and the beauty evolution is done manually. We would've definitely found much value in recruiting a programmer who could've written a program to automate the selection process, and perhaps built an app that brought the focus group rating aspect of our research to the web. We do use hotornot.com, but it's not ideal.
I'd like to add that additionally, medical students and doctors should learn how to program. There are many many many areas in medicine and healthcare generally that are behind the tech times. Coding doctors would definitely expedite the progression of the medical field from within. At least I think so. That's what my med school personal statement was about. :P
As someone who has studied biology/medicine, and has a definite interest in programming (teaching myself currently), I hope to find myself helping in the progression of the convergence of these two fields.
I'd extend your comment to "Everyone should learn how to program". When you look at the number of repetitive tasks that take place in a typical office environment, it's amazing at how much time could be saved with a little programming.
Macros were designed to accomplish this, but they're still way to complicated to be used by most people. It would be great if there were some sort of easy to use third party system that could integrate with a number of products (Word, Excel, Websites) and provide an easy environment to build macros.
Construction? Landscaping? Farming? Jobs with lots of secretarial assistance? I think you've taken it a step too far and ignored several sectors of society. Many scientists could benefit from programming, and anyone else who has to deal with information regularly probably could as well. That doesn't equal everyone.
Arguably VB for Applications could come in handy for almost anyone. Though interestingly most farmers, carpenters, and other handy-workers are more capable of performing arithmetic than the rest of the population. Still the power of a well-tuned spreadsheet is quite amazing.
Farmers are also a bad example these days, agriculture is totally high-tech.
Is there a compelling reason why the biologist and the programmer need to be the same person?
It looks to me like researchers have figured out specialization of labor: one well-educated researcher to make the theory, several low-wage grunts who get to feed the rats. (Whether this relationship is fair to graduate students is outside the scope of this post.)
I think we're suggesting people learn programming so that they can do tasks which are of comparative complexity to feeding the rats. Converting data from one form to the other? That is feeding rats. Iterating over data to produce summary statistics? That is feeding rats.
(I know biologists work with really big data sets. So maybe they're not feeding rats, they're feeding monkeys. Disgustingly parallel algorithms are getting easier and arranging the hardware for them is getting easier: in a few years, the monkeys will be about as easy to feed as rats are today.)
Biologists don't have grad students scratch-build their own microscopes, do they? That would be silly. Why not have the scientists and proto-scientists concentrate on science and outsource the feeding of computational rats to someone who doesn't really need a graduate degree in bioinformatics.
Plus, if using cheap outsourced rat-feeders achieves comparable quality to graduate students, there will be less market need for a permanent underclass of rat feeders with crushing debt loads and stipends that make McDonalds look generous.
Biologists don't necessarily need to be the one writing the high-end software tools, in the same way (as you note) that they don't build their own microscopes.
But re-formatting, filtering and running basic QC on complex data is something a lot of biologists have to do every day; and the types of data, their quality and their format are constantly evolving. Biologists who have to run down the corridor to their local (probably overworked and underpaid) programmer every time their data format changes, then explain the problem in terms the programmer can understand, then wait for the programmer to write something, and then check the script's output for errors, will be at a huge disadvantage compared to those who can quickly whip up and debug a parsing script themselves on the fly.
I couldn't agree more. Grant money is precious. Instead of spending three or four grad student salaries to pay a programmer a competitive wage, it makes more far more sense to fund three or four students on research assistantships where they have time to learn Perl.
I have wrestled with the question of whether or not biologists and programmers need to be the same person for most of my career. The short answer is that in my opinion, you often need those skills to reside in one person.
I've been working in bioinformatics in some capacity since the late '90's when the field started to really take off. My skills are pretty much 50/50 computer science/biology, so I think I've got a pretty good grasp of things now.
On the programming side, there are LOTS of micro-decisions you need to make as a programmer. I think to myself many times how spectacularly screwed up my code could be if I didn't have a biology background. There are huge issues in the area of data modeling in particular that are very complex and require deep biological understanding to get your models right. This is mostly because you need to have a sense of where biology is headed and make allowances for the future. A good example case was that I once worked with a system that had a 1:1 relationship between a person and DNA genotype results. That system worked fine for years until they tried to expand into cancer. See, it turns out tumors have their own genotypes (owing to mutations) different from their host. The system was completely unable to handle that scenario. Someone with sharp biology skills MIGHT have recognized that was an issue. Being a biologist doesn't make you immune from making bad assumptions though. For years biologists insisted that large pieces of DNA in our chromosomes had no function and called it "Junk DNA". This is in spite of all kinds of evidence from other organisms (like bacteria for example) that organisms generally are efficient about what "legacy code" they drag around. Now it's generally accepted these regions do have a purpose.
On the flip side, the problem I've seen with many biologist/programmers is that they haven't had the rigorous programming training one needs to write good code. There are a ton of "hacks" whose code is low-quality and inefficient. Most of these people learned to code on the side, so they haven't had the benefit of being forced to learn the things that nobody wants to teach themselves. You might have hated your compiler or algorithms courses in college, but that's the stuff that makes you a better programmer. You can learn those things on the side, but it's very hard to do when programming isn't the core part of what you do.
I think the data revolution in biology is going to eventually force a change in how undergraduate biology programs are designed (at least in the US, I can't speak for other countries). There is a real need for a radically different program that doesn't force people into a "biologist bucket" or a "programmer bucket". I know many universities offer bioinformatics programs, but these aren't enough. They sprinkle in some programming courses from the CS department, some extra math, maybe a course or two actually in bioinformatics where they teach you about all the 10 year old bioinformatics technology and how it works. The real trick is to integrate all that stuff together coherently. I would venture to guess that few if any bioinformatics programs have a bioinformatics lab course where students need to build software to solve a particular biological problem.
My fiancee did study systems biology (http://en.wikipedia.org/wiki/Systems_biology). That new field goes into the direction you mention. But with more focus on engineering in general not just programming.
The danger I see in teaching biology students how to program is that they are not, and don't want to be, good software engineers. And that's often worse then not knowing a thing about computers.
A little knowledge is a dangerous thing. Combine a little programming knowledge with a lot of intellect and no small amount of arrogance due the proudly earned Ph.D in biology or chemistry or what ever and some VERY bad things can happen.
I've seen databases where 99% of the data was NULL, because the Chemistry Ph.D author couldn't be bothered with trivial details like what's a one to many relationship. Naturally it was MS Access.
Beware of bad software engineering, even more so if the person coding is otherwise brilliant. That's the most dangerous type.
Software is a very sharp sword, you should use it carefully not try to swing it as hard as you can.
Can't agree more. In my undergraduate research in the Cognitive Neuroscience labs at Berkeley, it was disappointing to see how much effort was wasted because people avoided technology instead of embracing it (in neuroscience!).
The work done there was incredible, but as I was passed around to researchers in the lab, programming the experiments they had designed (have to pay your dues to get into research), I got a chance to see the methods they used before they were able to get competent programmers. Manually marking spikes and anomalies in EEG data when there was an api for the program to allow access to recorded data for just such a purpose, dealing with timing issues because few understood the difficulties of achieving high-precision event timing, etc.
It was depressing to think of how much further it could have gone. When I left to pursue my startup, I was working on some automated techniques to remove noise from fMRI data. That type of work will speed up research and allow researchers to spend time on meaningful things.
I've always been of the opinion that diversity in your education will help you somewhere down the road. That being said you should still have one thing you focus on. If you're going to be learning how to program as a biologist, you still need to be a biologist first and a developer second.
I'm a developer first and whatever it is I'm programming for second. I learn how to do the job of the people I write code for so it will do what they need.
I'm in my 4th year as a bio major and have been involved with several research projects. The first involved inducing schizophrenia in rats, and recording their movements in reaction to a set of audio stimuli after being given a set of varying medicines. We had folders and folders filled with spreadsheets of data -- data that would have to be manually inputted into some crappily obsolete software. Even with somewhat specialized software, each run was saved as a separate file, adding to the clutter. Our research would have definitely progressed more quickly had we had programmers that built the appropriate software to aggregate our data.
In my second research project, our team was trying to, and still is, find the metrics to 'the beautiful face.' This requires morphing pictures of women together, presenting these synthetic images to a focus group, who then rates the images. After the pictures are rated, they are subject to a natural selection type algorithm we developed, and the beauty evolution is done manually. We would've definitely found much value in recruiting a programmer who could've written a program to automate the selection process, and perhaps built an app that brought the focus group rating aspect of our research to the web. We do use hotornot.com, but it's not ideal.
I'd like to add that additionally, medical students and doctors should learn how to program. There are many many many areas in medicine and healthcare generally that are behind the tech times. Coding doctors would definitely expedite the progression of the medical field from within. At least I think so. That's what my med school personal statement was about. :P
As someone who has studied biology/medicine, and has a definite interest in programming (teaching myself currently), I hope to find myself helping in the progression of the convergence of these two fields.