Box 1: Advice from the pros
Do not be afraid. A computer is just a tool, so do not be afraid of it, says C. Titus Brown, a Michigan State University researcher who teaches programming for biologists. Brown does not recommend users necessarily “program fearlessly” on mission-critical computers; instead, use a nonessential machine or rent an Amazon virtual PC. “There really is nothing you can do to break that computer.”
Get started. Start with your language's or program's documentation; it is often chockablock with examples and tutorials. Software Carpentry (http://software-carpentry.org/), run by Greg Wilson, offers online video tutorials aimed at scientists, whereas SEQanswers.com, BioStar (http://biostar.stackexchange.com/) and The Hacker Within (http://hackerwithin.org/thw/) provide resources and forums for answering questions. Also recommended is Practical Computing for Biologists3.
Optimize the bottlenecks. A good algorithm is both accurate and efficient. That is especially true in biology. Richard Bowman, a graduate student at University of Glasgow, Scotland, who has written applications to control optical tweezers, cites the 80/20 rule: 20% of the code performs 80% of the work. “If you spend enough time to write that tiny bit of code really well, then it will pay off hugely,” he says.
Form collaborations. Sean Davis, a staff scientist in the genetics branch at the US National Cancer Institute and a member of the core development team on Bioconductor (an open-source bioinformatics project), has seen many 'newbies' graduate to fairly sophisticated tasks. Nevertheless, making mistakes is easy, and someone who can spot errors and serve as a sounding board can speed even straightforward projects. “It's never a bad idea to have a collaborator,” he says.
Treat computation like an experiment. “Don't trust what the computer spits out just because the computer spits it out,” says Brown. Instead, run a search that should yield a negative answer or vary parameters to see how the answer changes when it should not. “Do you get the same answer? If you do, that means it's more robust.”
Do not reinvent the wheel. Quite a bit of programming, says Brown, is “rote, cookbook-style stuff.” There is plenty of free code available, just copy and paste; the trick is tweaking it. “One of the most important skills to learn is how to just take the plethora of open-source solutions out there and apply them to your own problem.”
Keep good records. If there is one lesson Wilson wants students to get out of Software Carpentry, it is version control. “It's the equivalent of a lab notebook for computational work,” he says. Several free and commercial options exist; Wilson's recommendation: Subversion (http://subversion.apache.org/), which is reliable and free.