By Chris Cannam, Dirk Gorissen, James Hetherington, Cass Johnston, Simon Hettrick and Mark Woodbridge.
Anthony Finkelstein wrote a great post about the benefits of being a software engineer: you can call yourself an engineer without getting your hands dirty, and you can wear jeans and a T-shirt to work (if you feel like being smart). All good points, but it got us thinking, whilst it may be good to be a software engineer, it's even better to be a research software engineer. And here's why.
(And if you're interested in this post, you should attend our workshop for research software engineers on 11 September in Oxford.)
1. Right at the cutting edge of science
You can read books and watch documentaries about research, but that's old news. If you really want to know what's going on, you have to work with the researchers themselves.
Research software engineers work right at the frontiers of science: they are the people who researchers work with in order to turn theories into results. And unlike researchers, Research Software Engineers don't have to pay for this privilege by writing papers.
2. Travel the world
Fancy a trip to Singapore, Rio, Hawaii, LA, Hong Kong, or Shanghai? Become a research software engineer.
We're not saying that you'll be jet setting every other day, but in how many jobs do you get to fly around the world to visit collaborating universities, or present work at international conferences? Not many! By sitting on the line between software development and research, research software engineers benefit from similar travel as their researcher colleagues.
3. Use the tools and languages that are best suited to the job
There's a lot of freedom in research software development. And rightfully so, because restrictions tend to stifle creativity, and intelligent solutions are creative.
Researchers want results, so research software engineers are often given complete flexibility in their approach to a problem. Novelty and creativity are encouraged, which means there's rarely a restriction on the tools you can use.
4. Open to open source
The freedom in choosing tools extends to the use of open source. Research is completely amenable to the use of open-source software.
It's not just about the use of open-source software: it's also about the freedom to open source the code that you create. It benefits the whole community when researchers share their work, and this applies equally to software. Research software engineers are far more likely to be active members of the open-source community, and meet far fewer restrictions on being allowed to open source their own software.
5. Wall-to-wall bright people
Universities and research establishments in general are interesting places to work. They are populated by people who are fascinated by the world around them. Research software engineers - who share this passion - find a happy working environment in research institutions.
Some people get so engrossed in a solving a problem that working hours is not a term that applies to them. Many research software engineers find themselves coding way into the night in an attempt to get something completed, not because they are being pressurised to do so, but because they enjoy the reward of doing something that others have not been able to do.
Research software engineers get a lot of flexibility in their working environment. Again, it's about results. If you produce the software researchers need, you will receive a lot of flexibility over the hours you work.
7. Why work in only one discipline?
The unique combination of understanding research and software engineering makes research software engineers extremely useful in all disciplines. In fact, many work simultaneously on different projects in different disciplines. Working with such a broad range of subject areas and people is both stimulating and rewarding.
8. Important work
Software engineers might work as part of a large team working on a small part of a software package. Research software engineers will often be responsible for an entire software package - or a large part of it. Such responsibility can be daunting, especially when the results produced by your software could be the foundation of a new research field, but it is also incredible rewarding.
The knowledge that your work could have a big impact is one of the main attractions of being a research software engineer.
Of course there is competition within research, but if your hear about someone doing interesting work, you can usually start a conversation with them and often a collaboration. This gives you access to expertise to help improve your software (designers, usability experts, hardware engineers) as well as access to resources from supercomputers to datasets that just wouldn't be shared in industry.
10. Choose your own path
Research software engineers might not yet have a career path in research, but their importance is certainly recognised by the researchers who they work with. The combined benefits of using the tools you want, the ability to swap between interesting fields and being able to make a significant impact with your work means that research software engineers can carve out their own path through research.
Now all we need to do, is make sure that this important role is recognised and rewarded with proper contracts and adequate remuneration.