Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

content/2024/what-is-a-rse: What is a RSE and how to grow them locally #22

Merged
merged 1 commit into from
Oct 29, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
210 changes: 210 additions & 0 deletions content/2024/what-is-a-rse.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
:blogpost: true
:date: 2024-10-23
:author: Richard Darst
:category: rse


What is a Research Software Engineer?
=====================================

What is a Research Software Engineer (RSE)? Too many things to
define, you can find these definitions elsewhere. Maybe the question
you would like to know is **How do I get value from Research Engineers
like Aalto Scientific Computing does?** - that's what we'll try to
answer here. Through that, we may learn a functional definition.

This page is written from the perspective of *computational science* -
similar messages may apply to other fields. Note that computing and
AI is in every field now.



University roles
----------------

When someone wants Research Engineers, it's probably because they see
something that is missing in the current academic system. Thus, to
understand what we want, we need to understand the system. Below is
rkdarst's current mental model:

* **Academics** are who we usually consider researchers. They do
research, and are promoted based on articles published and citations
received from other academics. Citations from academics tend to
focus on innovation and novelness, so that's what decides career
paths.

* **Research Engineers (REs)** focus on the practice and "structural
integrity" of the research: the tools, the reproducibility, and
more. They are more concerned with the work being done well, than
pure novelness and citations. [0]_

Research Software Engineers (RSEs) are a subset of Research
Engineers, and I feel that the "software" is the least significant
part there. Software is important, but so is data, computing,
reproducibility, etc.

Particular examples of things that Research Engineers are good at
include: Reproduciblity, maintaining software and data across academic
generations, Open Science, programming, using large computer
clusters, data security, and research ethics processes.

* **Researchers**, in my mind, cover both of the above (and more).
Industrial research teams would have both of the above and possibly
even more different roles all working together on their problems.
In universities, we tend to only consider the academics to
researchers.

So what's a Research Engineer? To me, it's defined mostly in terms of
what is missing from the typical academic career path (of
undergraduate → junior researcher → senior researcher). At all
levels, I've seen research engineering under-valued and under-taught
(not necessarily because it's not wanted, but because it's not novel
science and there's no time). Senior researchers (group leaders)
often see the value, but don't have the ability to train and supervise
research engineers well.



How Aalto RSE filled the gap
----------------------------

Years before Aalto RSE started (~2017-2018), I saw a need for more
basic skills (for example: version control to manage code) and worked
to promote them in undergraduate programs. This basically didn't
work, because they were seen as not scientific thus not something to
be taught in academic courses (and if they were thought, the courses
would be full of people looking for easy ECTS). While there certainly
are study programs in software and software engineering, these are
their own thing, and not part of data science, or other fields that
need computation. Software engineering programs also aren't adapted
for the unpredictibility of research.

This was the prompting to start Aalto Research Software Engineers - if
we can't teach people skills in study programs, we have to support
them when they become researchers (and teach it via practical
mentoring). This has worked out very well, as you can see by our
rapid expansion and heavy usage.

Aalto RSE is essentially the collaborator our research groups need to
do their top-level work. This system works very well, but are there
other options?



How to get research engineering competence in universities?
-----------------------------------------------------------

The above leads to various ideas. Take your pick for what angle
you want to approach the problem:

* Better RE teaching in undergraduate programs:

* As part of existing programs (is there time to teach this? Is
there desire? On the other hand, RE skills are great for
employment prospects)

* As dedicated majors? (Some people are trying to make dedicated RSE
study programs at different universities, and there is a value
there. But if you ask me the best value is learning RE along with
academic research in a different field)

* Better RE teaching in graduate programs:

* Many of the same things as above apply here, mainly the lack of
time, and the necessity to spend time on novel research, not
learning existing best practices.

* Nurture REs within existing research groups:

* Nothing stops group leaders from hiring students and postdocs who
have chosen to focus on research engineering. This often happens
when supervisors hire technical postdocs to manage the RE side of
things. (The question is: can they be supervised and mentored
well by academic supervisors, if they need to be home-grown?)

* If group leaders hire good candidates, Aalto RSE can help mentor
them. See the companion blog post :doc:`/2024/rse-work-rotations`
for one idea.

* Recruit REs as professor-level group leaders" similar to how senior
academics are recruited:

* These people would focus on collaborating with others to make
projects possible.

* The university systems don't seem set up to value these people,
thus they don't appear among the ranks. They could appear if they
spent their careers chasing academic citations, but then would
they be able to spend enough time on research engineering?

* I think this is what some people mean when they say they want a
RSE career path: a way to recruit senior academics who lead
research engineering groups. I think the idea is good but it's
not how universities are set up, so it's a long way off. The
values systems may not even match up.

* Create parallel structures that support research engineering

* That is what Aalto RSE has done. We are researchers, but we make
new research possible by collaborating with academics, instead of
trying to publish by ourselves. We are part of the services of
the School of Science.

* We also take it upon ourselves to do teaching and mentoring via
co-working for all types of researchers (aspiring academic or
research engineer). We can fill in the technical mentoring that's
missing by many supervisors.



Getting your own research engineers
-----------------------------------

I've seen many people interested in gaining research engineering
competence for their organization. You need to develop an environment
where they fill in the gaps you need.

* Junior academics: encourage them to explore their technical skills.
Show that there is value in this, even if it reduces the number of
publications. Encourage them to get training (for example the Aalto
RSE training). Give them time, encouragement, and career prospects
to reach beyond the focus on papers.

* Other support staff at universities and other organizations: don't
view them as limited-purpose supporters of an {infrastructure,
service, process}. View them as supporters of research: let them
holistically support research projects from many angles at once,
rather than only in narrow silos with strict project reporting
requirements.

* You can hire dedicated staff to be REs, but it's important that they
are integrated into the local research environment. Most of our
hires have been local staff who have grown into a new role, and I
think this is how it should be.

Any of the above, especially the first two, require time being made
available for RE work and a clear vision and network. Aalto RSE (with
the help of others in Finland) is planning on making a networking and
onboarding program for new research engineers who wish to adopt this
vision.



Summary
-------

If you read this far, you probably see the value in research engineers
and want them yourself. Just hiring someone, or changing someone's
job to "RSE", won't magically solve the problem you need. It's a
whole mindset shift towards a multi-disciplinary research team.

What's the right level of research engineers, permanent and
experienced or junior and learning? Probably a bit of both.



.. rubric:: Footnotes

.. [0] I know that "Research Engineer" is a job title that can have
other definitions.