For RSE candidates and community

This page is designed to guide people into the interesting world of research software engineering: providing a view into the types of skills that are useful to research groups at Aalto. It also provide links to training material which our RSEs should learn after starting.

Do you like coding and research, but don’t want an academic career path with publications as your sole purpose? Be a Research Software Engineer with us! Our pilot is designed to bridge the gap between academic research and a future career in research software or a research scientist in a company.

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.

General qualifications and duties

We strongly prefer good computational researchers (PhD level preferred) who can improve their software development skills than the other way around. This role can be combined with other roles, but note that this is not targeted to those who intend to follow a tenure-track academic career path. New RSEs will get a training period which rounds out any missing skills. They will also be involved in a complete support package: they will have the chance to be involved in teaching an infrastructure development.

Job advertisements

From time to time, job advertisements are posted on the Aalto University job portal, with notices on various other channels including Aalto scientific computing mailing lists.

Required Skillset

This is a large list of the types of technologies which are used by our researchers. 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?

General skills

  • Basic mandatory skills include Linux, shell scripting, some low-level programming language (C, Fortran), and programming in several more languages (Python particularly advantageous).
  • Good knowledge of computer clusters, batch systems, and high-performance computing.
  • Any additional programming, workflow, research, or system tools are a plus. You should have a wide range of skills, but the exact skills are not so important. Most important is sufficient fluency to pick up anything quickly. These skills should be listed as an appendix to the cover letter if not included in the CV.
  • Advanced parallel programming skills are a plus, but equally important is the ability to create good, simple, practical tools.
  • As an example, the ideal candidate will have near-perfect knowledge of all Software Carpentry, CodeRefinery, and the generic parts of our HPC lessons - or be able to fill in gaps with minimal effort.
  • But at the same time, we don’t just want people from purely computational backgrounds. You’ll work with people from experimental sciences, digital humanities, etc, and good people from these backgrounds are important, too.
  • A good attitude towards mentoring and teaching and an ability to explain complex subjects in an accessible way.
  • Commitment to diversity and equality of researchers among many different backgrounds.
  • Good knowledge of English. Finnish advantageous but not required, our internal working language is English.

Specific examples

  • Advanced experience of debugging/profiling/developing Linux tools, incl Git, Intel and GNU compiler suits and corresponding tools.
  • Software building tools like Make, CMake and alike.
  • Advanced knowledge of parallel programming models, experience of parallel programming (OpenMP, MPI).
  • Advanced GPU computing / programming (CUDA, OpenACC, OpenMP models), experience of porting software to GPUs.
  • Profiling and optimization - both of low-level languages and high-level.
  • Knowledge of scientific software and packages incl Matlab, Mathematica, Python libs, others is beneficial.
  • Experimental data collection, LabView, etc.
  • Git, GitHub, git-based collaborative workflows
  • Software testing, CI, documentation, portability, etc.
  • Workflow automation, shell scripting, porting from single machines to clusters.
  • Data management, data engineering, data wrangling.
  • Docker, Singularity, containers.
  • Reproducible research.
  • Open source software development, community formation.
  • Software packaging and distribution, (e.g. PyPI, conda, etc.).
  • Data analysis tools like R, Python, pandas, numpy, etc. are beneficial
  • Julia, Matlab, Mathematica.
  • Web development, cloud operations.
  • Scientific Computing on other operating systems.