Any research biologist spends a large amount of their working time at the computer, whether it’s writing articles, analysing data or just checking emails. In fact, any new research proposal will likely start by trawling Pubmed and online databases to get the latest information on a particular topic.
But have you ever stopped to think how these software tools came into being and how they are developed, and who develops them? And, if you’re looking for a career move out of bench science, have you ever considered developing software for biology yourself? In this article I’ll give some insight into what it’s like being a software developer in the life-science field, from the point of view of an ex-bench biologist.
Why I Chose Software Development
First, a bit of background about myself. I initially trained as a cell/molecular biologist before getting interested in bioinformatics, when I needed to predict possible phosphorylation sites on a then novel protein. There wasn’t the right software for what I wanted to do so I started learning some programming to try to build my own solution – from that moment I became hooked on programming and software development, and now work in a team of developers building software for the systems biology field.
So, why the excitement? Surely staring at a screen all day can’t be as good as making ground-breaking research discoveries? And these pallid computer people, don’t they all work in the basement and never talk to anyone, only emerging periodically for coffee and copious quantities of doughnuts?
Teamwork and creativity
Well, despite what you might think, developing software is a team activity and requires a good deal of communication with the end-users and, unless you’re the lone developer on the project, amongst the development team themselves. There are also a large number of community software projects, which aim to improve data standards and interoperability, which by their nature require active engagement with other developers and biologists. This is quite different to the lab environment, which is superficially more sociable, but where people can be isolated in their individual research projects.
Software development is also a ‘creative’ technology. By that I mean that generally there are many possible ways to meet a set of requirements, so there is plenty of scope for an aesthetically pleasing solution, whether you’re developing databases, algorithms or user interfaces. Furthermore, what you produce correlates very highly with the skills you learn and the effort you put in, compared to the possibility of spending months at the bench on an experiment that either won’t work or does not produce the hoped for results.
Getting Started as a Software Developer
So, how to get started? Well first of all, find a manageable problem to address – for example, perhaps there is a repetitive series of manual steps you need to do to transform data for analysis, and automation would save you time. Programming languages such as Perl and Python can really help here – they’re extensively used in bioinformatics and are relatively easy to learn. Or perhaps you’d like to visualize your data in a novel way, and Excel doesn’t help – Java has excellent support for graphical interfaces, and is widely used in industry, so can be a great transferable skill.
But, don’t you need a super-logical brain to program successfully?
Well, although computer programming may seem an arid and alien activity to a biologist, many of the thought-processes you have as an experimental scientist already give you a head start. For example, debugging (eradicating errors from code) will be greatly helped by following similar processes to finding out out why your experiments don’t work. Such ideas would include isolating the problem to a sub-part of the whole experiment (programme), or positive controls (logging and testing). Secondly, your critical faculties that you have so assiduously honed on evaluating experiments and publications will be put to good use when you have to consider such questions as ‘What happens if the input data is missing a value?’ or ‘Does this code actually work?’.
Finally a few caveats
If you take to programming and want to make your next career move into bioinformatics or software development, I’d advise that you:
- Try to avoid being a lone programmer embedded in a large wet-lab – people will always be asking you to fix the printer, because “you’re the computer guy, aren’t you?”. And, nobody will understand the difficulties that you encounter in your project.
- Try to get a position in a dedicated software or bioinformatics group – you’ll get a lot of feedback and learn new professional techniques from your colleagues.
- Make sure the institute you work for has a defined career policy for software developers – be careful not to fall into the cracks between the “academic” and “technical” career tracks.
- Make the most of your biological knowledge! There are literally millions of programmers worldwide but your unique selling point is your combination of computer and biological knowledge.