For RSE candidates and community

See also

We occasionally hire people. To get notified (of this and other similar jobs):

  • From time to time, job advertisements are posted on the Aalto University job portal. If you are considering Aalto, CSC also quite often has jobs open.

  • This blog post describes what you might want to know for applying for jobs with us.

  • If you are looking for jobs inside and outside of Aalto, consider following the Society-RSE job vacancies form.

  • If you are inside of Aalto, join the RSE community mailing list (mailing list). This will get announcements of both our jobs, events, and other research groups looking to hire a RSE skillset.

  • If you are in Nordics/Baltics/etc, consider joining Nordic-RSE or CodeRefinery and participating in their events. We are active in these organizations and this is a good way to learn how they work.

This page guides people into the interesting world of research software engineering: providing a view to what this career is like, and what you could do if you want to develop your skills. This isn’t what you have to know to start off. It’s a map of ideas for both before and after, not a list of requirements.

If (some of) the following apply to you, you are a good candidate:

  • I like the academic environment, but don’t want to focus just on making publications.

  • I am reasonably good at some programming concepts, and am eager to learn more. I know one language well, can shell script, and generally familiar with Linux.

  • I am interested in going to a scientist-developer kind of role in a company, but need more experience before I can make the transition.

Components of RSE skills

  1. Research practices: Research is its own special thing, with special ways of working (this includes data management and open science). Research experience helps you connect to our target audience and know what works and doesn’t.

  2. Programming and software development: Programming and general development and project management practices are important - but we must keep in mind the relatively small-scale nature of our projects. Basics are useful, enterprise-grade usually isn’t.

  3. Open-source/open-project knowledge: We emphasize making research results reusable, and open source practices are a key way to do that.

A person coming from a research background will be probably be good at (1) but likely need to improve more in (2). Someone coming from an industry background will probably be good at (2) but need to improve in (1). (3) is very person-dependent.

Let’s not forget a final

  1. Mentoring and teaching: As in every job, social skills are the most important aspect, since you are working closely with a wide variety of researchers.

Research practices

To get experience with this, there is a fairly clear academic career path which can provide good RSE education, especially if you look beyond producing as many papers as possible. To broaden your skills, try:

  • Try to get involved in a wide variety of computing, data, and software related research.

  • Publish datasets and software (properly) along with your papers - either separately or in a software/data paper.

  • Try to work on more collaborative projects (sharing code/data), rather than focusing on your own work.

  • Manage your data well (remember, it’s not just about the software).

  • Use different types of computing environments for your work, especially cluster environments (see our HPC cluster lessons).

Software development

Technical skills are an important part of what we do: computing, data, and software. Many people basic programming courses, but there are many important practices beyond that: version control, other tools, methods (Scrum, agile, etc), deployment strategies, and so on.

Don’t let “software” trick you into under-valuing other forms of skills: data managers, computational specialists, etc are all important, too.

To develop these skills, try:

  • Get at least minimally comfortable with the command line.

  • Use version control (at the right level for your project). Can you make your project a bit more professional and level up your version control?

  • Add a command line interface to a code.

  • Make a modular, reusable code.

  • Add automated tests, continuous integration.

  • Play with a new language or tool for some small project - do you have experience in both high and low level languages?

  • Automate your workflow to make it reproducible.

  • Use the best data storage methods possible.

  • Make a merge request / pull request to a project you want to contribute to.

  • CodeRefinery workshops cover most of what you need.

  • Look at the Zen of Scientific Computing for other ways to advance some projects up those levels.

Open source / open project knowledge

One of our most important goals is to make research reusable and more open. For computational research, the practices of open-source projects are our main toolbox, since they are often shareable and reusable by design. Don’t limit your vision to just software projects, for example Wikipedia and OpenStreetMap are open projects focused on data curation.

To develop these skills, try:

  • On Github, subscribe to a project of interest to you. See how it is run. (see if you find some that are large enough to use best practices and active communication, but not so large there is a flood of messages). Or, subscribe to some mailing lists of the project.

  • Report issues and try to help debug a project of interest to you.

  • Make a contribution to a project of interest to you.

  • Package and release one your projects…

  • … and see if you can get others to use it.

  • Help others use one of your tools.

Mentoring and teaching

The job of a RSE, at least in our vision, is as much mentoring and teaching others as it is doing things. To improve this, you could try:

Role at Aalto

At least at Aalto, you will:

  • Provide software development and consulting as a service, depending on demand from research groups.

  • Provide one-on-one research support from a software, programming, Linux, data, and infrastructure perspective: short-term projects helping researchers with specific tasks, so that the researchers gain competence to work independently.

  • As needed and desired, teach and provide other research support.

  • A typical cycle involves evaluating potential projects, meeting, formulating a work plan, co-working to develop a solution, teaching and mentoring for skill development, and follow-up.

All will be done as part of a team to round out skills and continuous internal knowledge-sharing.

You may also be interested in these presentations on the topic of “what we do”:

Training resources

These resources may be interesting to support your career as an RSE:

Skillset

Below, we have a large list of the types of technologies which are valued by our researchers and useful to our RSEs. No one person is expected to know everything, but we will hire a variety of people to cover many of the things you see here.

Most important is do you want to learn things from this list? Can you do so mostly independently but with the help of a great team?