Overwhelmed as a biologist getting to grips with computer programming? EMBLers are here to help!
Computer programming is not always a part of the undergraduate life science curriculum. But, for many, coding skills have become a necessary tool in the biologist’s toolkit. If you find yourself thrown in at the deep end during your PhD or later, you are not alone. Here, members of the EMBL community who went through similar situations share their top tips for people at the beginning of their coding journey.
I started coding during my PhD, when I collected a lot of imaging data and had to learn how to analyse it myself. Now I’m using statistical learning techniques to predict drug mode of action in bacteria. In biology, people mostly use the programming languages Python or R, but which you learn tends to depend on what the people in your team are already using.
My top tip: Keep a notebook! Notebooks are like lab books for coding. You can write explanations around your code, which are highly useful to remind yourself later of what you did and why. They also make it easier to reproduce your work, which is very important in science.
I started programming seriously during my master’s and PhD. I joined a group that was purely computational, so learning how to program was a necessity! My colleagues gave me lots of helpful tips, but nowadays you mostly learn by yourself from online tutorials and internet forums. Now I’m a biological modeller, so I write programs that implement specific mathematical models in order to simulate biological processes.
My top tip: Use version control software, like GIT, from the very beginning. This is something I learned later that would’ve helped me. It’s good whether you are working in a group or by yourself, because it keeps everything tidy.
Group leader, Hamburg
My top tip: Give meaningful, self-explanatory names to things. I used to write cryptic code that I couldn’t understand half a year later. Save yourself the time and hassle – use meaningful names.
I started my master’s thesis in a lab doing high-performance computing. I knew basically nothing about programming! I had helpful colleagues, but most of the time I was on my own. Now, 90% of what I do involves programming. In my current lab we make simulations of biological processes such as the growth of a mouse limb. We use programming to handle almost everything, from mathematical modelling to data visualisation. I mostly use Python, but I’m also starting to use CUDA. This is a programming language specifically designed for taking advantage of a computer’s graphics processing unit (GPU). It’s really powerful for using GPUs to do many easy tasks really fast. Using CUDA, some programs that used to take hours, or even days, now take seconds!
My top tip: Write down some of your code with pen and paper. Writing on paper makes you really think about what your code is supposed to be doing and helps you understand it better.
UX Designer, EMBL-EBI
I’ve always been interested in writing, so I first approached coding as a way of making my blog stand out. There are simple projects that you can try out in a few languages, just to get a feel for them and see which you prefer. It’s definitely worth taking the time to do them at the beginning. These days, I work as a User Experience Designer, so I use code to understand and build our front-end technologies.
My top tip: Coding is a marathon, not a sprint. Google is great, but the amount of available information can be daunting when you’re just starting out. With the right mentality though, you’ll get there.
PhD student, Rome
After discovering programming during a fun undergraduate module on Java, I kept learning by myself and attempted to make an old game I played as a child. During my master’s, I had the opportunity to devote a year of study to programming, and I quickly realised all the things I had been doing wrong! In the lab I’m in now, we use different techniques to understand how the retina works, and we need a lot of computer analysis. I’m trying to make some general software that would work for everyone. It’s a big challenge, but I’m really enjoying it!
My top tip: Try lots of different projects and be curious! Break down code that works to get a better understanding of what it’s doing. It’s about developing an intuition for good code.
I learned a language called Perl at the beginning of my PhD, but moved over to Python soon after my doctoral studies. Now I apply programming mostly by teaching. Most people find coding difficult at the beginning, so there’s no shame in asking for help. People who consider themselves programmers are still googling things 20 times a day!
My top tip: Learn the programming language that people around you are using! The best thing you can have is a person next to you whom you can ask for help when you can’t figure out what’s going wrong.
I was a bit clumsy in the lab, so computer programming was a way to stay in science and experiment in different ways! Now I really enjoy teaching it because I can relate to the struggles of people just starting out, and I can really help them.
My top tip: Come to one of Bio-IT’s two-day programming courses. We start from the very beginning, making people comfortable with opening the terminal and running code, and then expand from there. If I’d had these two days, I think I would have saved several months of my life!
Malvika and Toby coordinate EMBL’s Bio-IT community:
Toby: Bio-IT is a community-building and support project for computational biology and bioinformatics at EMBL. We run networking events for people to have conversations that hopefully lead to collaborations. We also train staff with our beginner and intermediate courses on command-line computing, programming in Python and R, and using version control software. Occasionally, we also do specialised courses like ‘Image Processing with Python’ or ‘Machine Learning with R’. Our courses are open to all EMBL staff, but I recommend signing up to the Bio-IT mailing list because they tend to fill up quickly!
Malvika: The most active people in our community are the experts. That’s great, but we’d like more learners to stay in the community after their courses. I want to make beginners in programming and bioinformatics more comfortable exchanging ideas and helping each other. This year, I’ve tried to identify how to bring them in by providing training or networking in the areas that they feel are important.