Software Engineer job vacancy
We’re looking for an imaginative 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.
- Actively contributing to technical decisions through discussions, whiteboarding, evaluations, and investigations.
- 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.
The below skills are what you will make use of in your day-to-day work. Don’t worry too much if you don’t tick every box – we’re mainly interested in how you work, not just what you know. If we think you’re a good fit for our team, we’re more than happy to teach you what you don’t already know.
Having said that, it’s good to know what our core technical skills are.
- 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.
The knowledge you can bring to our team is something we value super highly. These are a few areas we’re either currently focused on, or would like to level-up our understanding – maybe you can help!
- 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 £40-50k, 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!