Senior Software Engineer job vacancy
We’re looking for an imaginative Senior Software Engineer to join our team building our Virtual Power Plant platform. Your efforts will help society tackle the climate emergency through its transition to a zero-carbon future.
You’ll become an integral member of a close-knit team focused on the development of a software platform responsible for management and optimisation of flexible electrical loads in domestic installations. This means large-scale, real-time communications with Internet of Things devices; insightful data analysis using cutting-edge processing techniques and learning; an emphasis on data and operational security; while upholding our engineering principles of quality and resilience.
Our work frequently takes us in exciting new directions, whether using new technologies or finding new applications for existing technologies. You’ll get the opportunity to work with the latest energy devices including battery storage, electric vehicle chargers, and next-generation heat pump systems. You’ll be finding ways to optimise for lower carbon and energy costs, while empowering owners to benefit from their own flexibility.
Your job will be developing brand new features on top of a modern Software-as-a-Service platform. You’ll work on reactive data pipelines, APIs, and optimisation algorithms. The functionality you deliver will run in a cloud environment, utilising containerised and serverless technologies to deliver a highly available and resilient solution to our customers.
You’ll take a lead role in finding the best route to delivering meaningful value on everything you and our team work on. You will be a part of every stage of the development lifecycle, from work specification through to final delivery, giving you the opportunity to own not only the work you deliver, but the work of the whole team.
Our vision of a great candidate is someone excited to have a sizeable contribution to products which will make a real, positive difference to society. They’ll thrive working within an open, supportive team from a wide range of industry backgrounds, and enjoy spending most of their time working directly with their teammates. They’ll enjoy the challenge of pushing delivery forward, and will contribute to architectural decisions as well as code. Most importantly, they’ll take an active role in the continuous improvement of the team by helping us all level up, sharing knowledge and skills to make us better individually as well as collectively.
Your day-to-day responsibilties
Here’s a flavour of what you’ll be doing each day:
- Delivering features on a modern, cloud-based software platform.
- Supporting quality and maintainability through test-driven development (TDD) and pair programming.
- Contributing to the design of technical solutions within a collaborative environment of a cross-functional team.
- Bringing fresh ideas into the team, along with taking on the ideas of others, developing them into workable solutions we can make a reality.
- Leading and participating in problem exploration sessions through whiteboarding and investigatory work.
- Exploring and evaluating technologies and architectures for use by the team.
- Carrying out operational and maintenance work on our production platform.
- Picking up a wide range of work across a number of domains, from coding to architecture and operations to security.
- Sharing knowledge across the whole business through a variety of approaches, including group demonstrations, written documentation, and frequent communication.
As a senior member of the team, you will be a key individual in the continuous improvement of the team. You will be empowered to find ways to push forward in everything we do, and can have an outsized impact on not just the work we deliver, but the way we work.
Finally, but perhaps most importantly, you will also have an important role in the professional development and learning of individuals in the team. You’ll have the opportunity to directly mentor junior members, helping them achieve their developmental goals and become better engineers. There will also be plenty of learning opportunities – whether you find yourself teaching a team of all experience levels about something you’re an expert in, or bringing a partner up to speed on something you’re simply more familiar with.
These are the skills we think you will make use of most in your day-to-day work, but we don’t treat it as a box-ticking exercise. We’re looking for people who have proven experience in a number of the areas below, but believe strongly in the ability for good people to learn any skills they need to on-the-job, and are more than happy to do our part to help you learn.
The most important thing is that you work in a way which will complement and grow our team as a whole!
- TypeScript, as the language we use for the vast majority of our platform. We have a strong preference towards functional programming.
- Amazon Web Services, as the foundation of everything we build.
- Containerised services make up a good number of our components, running on top of Docker and Amazon ECS.
- Serverless components form another significant portion of our platform, via Amazon Lambda.
- Relational data stores, including PostgreSQL and MySQL on top of AWS RDS.
- Document data stores, including AWS DynamoDB.
- Test-driven development.
- Pair programming.
We’re also very interested in the knowledge and skills you can bring to the team that aren’t something we have already. Whether it’s a skill in something we might have plans to do in the future, or experience with technologies we may want to adopt, we want to hear about everything you can do!
In particular, these are some areas where we’re keen to expand our team’s experience:
- Reactive data pipelines, such as streaming technologies, event sourcing, and message-oriented data flows.
- Security infrastructure, such as server hardening, endpoint security, message integrity and data encryption.
- Operations (or DevOps, depending on your perspective), from monitoring through to full-on observability.
- Alternative language ecosystems, such as the JVM (Java, Scala, Clojure), Python, or Rust.
- Prior industry experience in the energy or financial sectors, or with Internet of Things devices.
How we work
Every team builds software differently, so we think it’s important to say how we like to go about our work. Our process is defined by the team, for the team, so you can expect to have a say on how we work.
- We use a simple agile process based around Kanban principles. It’s light-weight, and keeps us moving forward.
- Test-driven development (TDD) and pair programming are things we believe are super important to delivering quality and communication. We test-drive all our code, and pair the majority of the time.
- We like functional programming and strongly typed languages as we think they’re effective tools for delivering quality software.
- Security is part of each feature we build, not something we bolt on every so often. We strive to do the right thing rather than the quick thing.
- The team owns operations of the platform we work on. It gives us a better understanding of what we’re building and helps us deliver stronger solutions.
- Infrastructure as code is something we do everywhere. No hand-crafted servers here!
- Automation helps deliver quality, security, and predictability. We judiciously automate whatever we can.
The way we work has changed due to the impact of Covid-19, as it has for everyone. While we were geared up for partial remote working before, we hadn’t truly operated 100% remotely for an extended period of time. We still based most of our working week around being in our central Manchester office, and everyone was located within a commutable distance.
Since March, we have operated as fully remote team. We still have the Manchester office, which we intend to return to when the situation allows. However, both existing and new team members are working remotely on a permanent basis from all around the UK. This is something we believe will continue to work for us in the future, so we want to open this role to anyone who is UK-based, no matter where they are.
There may be times when we want to gather in our home of Manchester, both for social and work reasons. They should be infrequent, and any financial cost of those events will be covered by the company.
- Salary £50-60k, depending on your experience and skills.
- A minimum of 25 days holiday, plus public holidays.
- Health care expenses scheme.
- Remote working from anywhere in the UK.
- Flexible working hours, so long as we can maintain an ability to work and communicate effectively as a team.
- Pension contributions matched by the company, up to 4%.
- Discretionary paid sick leave.
Email email@example.com with your CV and a quick comment about what interests you about the role, and we’ll get back to you as soon as possible!