scientific software engineer /ˌsīənˈtifik ˈsôf(t)ˌwer ˌenjəˈnir/ • Jack of all trades, master of some

Scientific software engineers are often tasked with “making things work”. This means jumping headfirst into an unfamiliar field (biogeochemistry and biogeography from physics and computer science, for example) and using technical and formal problem-solving skills to make rapid progress. Collaboration and communication with diverse stakeholders is crucial, given the unfamiliar terrain that SSEs are exposed to from day one. Their goals are a little different from conventional software engineering goals, as deliverables often consist of academic papers or software libraries for a specific analysis instead of the more conventional user/client informed product. However, using conventional software engineering techniques (unit+integration testing, automatic CI/CD, containerization, orchestration tools, Agile methodologies, etc), can reduce both experiment time and scientific overhead.

Some big wins I’ve achieved in my current role that I attribute to my computer science skills:

  • Sped up LPJ-EOSIM (a dynamic global vegetation model (DGVM)) >1000x on NASA’s NCCS Discover HPC, fixed all sorts of bugs
  • Ported the same model to AWS, enabling multple international collaborators to run experiments
  • Published a static diagnostic website to monitor model runs, allowing automated QA/QC on SOTA DGVMs
  • Wrote an operational ETL pipeline for extracting data, running the model, and pushing results to NASA’s Land Process Distributed Active Archive Center and the US Greenhouse Gas Center. Some context here - these models are often run less than one time per year. We now have the ability to run them every few weeks and provide up-to-date estimates of biospheric carbon and methane.