






The work is different from mobile apps, games, big tech products, etc. For example, in many cases, we are tasked with solving computer simulations of complicated science problems that are based on physics equations. But it’s not enough to solve these equations, we have to solve them as quickly as possible. Why? Because some of these problems are impossibly big. These might be models to simulate supernova explosions, black holes, earthquakes, or groundwater availability during droughts. Or they might be processing huge swaths of data collected from sensors, surveys, or even scraped from the internet. Or they could be large AI models. Regardless, we call computer programs that need a lot of computing power “computationally expensive” and our jobs as Research Software Engineers is to come up with code that can solve these problems efficiently. And very often, we turn to supercomputers.
You might already have some understanding of a supercomputer, and at the basic level, it’s not all that complicated. Think of it as a collection of regular computers (faster and more capable than a laptop - but not substantially) that are all connected by some really fast cables. Each computer by itself is good, but connect thousands and thousands of them together and you have one big, super, computer (see where the name came from!). But there’s a catch! It’s not easy to harness the power of a supercomputer. In fact, it can be really, really hard sometimes. The code that runs on a supercomputer has to be designed to run on such systems. And that often takes some very clever programming.
To get you thinking like a Research Software Engineer, think about this problem, you are in charge of the pit crew for a race car.