About this role
Origin is Aurora's flagship power market model. It forecasts power prices, generation, capacity expansion and investment across more than 20 electricity markets. The model helps answer some of the biggest questions in the energy transition. Where should new power plants be built? What will consumers and businesses pay for electricity? How can a country reach net zero? Governments, utilities, developers, investors and traders use its results to make decisions worth billions of dollars.
Origin brings together optimisation, power system simulation, market modelling and modern software engineering. It's a large Python codebase, with optimisation components written in GAMS and solved with MOSEK, running in Docker containers on AWS. You don't need any experience with GAMS, MOSEK or optimisation to apply. The opportunity Origin is a mature model with clients around the world, but the São Paulo development team is new. You'll be one of its early engineers and you'll help shape how it works.
São Paulo is already Aurora's modelling hub for the Americas. The analysts and market experts who use Origin every day sit in the same office, so you'll see first-hand how your work gets used. Your squad works as one team across Oxford and São Paulo, and it's still growing. The squad lead hands out work based on skills, whichever office you're in. Your line manager will be a Modelling Software Engineer or above, and may sit in a different squad.
This is an entry-level role, and you'll own real features from the start. You'll pick up small and medium pieces of work and take them all the way to production, learning the codebase and the energy domain as you go. We use AI tools right across development, for reviewing and testing code as well as writing it. You'll use them every day and help us work out where they really help.
Aurora takes the work seriously. We do not take ourselves too seriously. The team works best when people are direct, admit mistakes and enjoy what they do.
- Own small and medium features from start to finish, and keep them moving.
- Deliver working, tested software.
- If it's broken or untested, it isn't done yet.
- Break down and estimate your own work, and let the squad know early when something is taking longer than you expected.
- Write code that others can maintain, and act on review feedback.
- Build logging, scalability and security into the code you write.
- Take an active part in squad meetings with colleagues in both offices, and help improve how the team works.