Software Engineer job vacancy
We’re looking for an ambitious Software Engineer to work with us on our domestic energy flexibility platform. Your efforts will help society as it faces an uncertain future due to the climate emergency, paving the way to a future of clean energy.
You’ll become an integral member of a close-knit team devoted to 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; a focus on data and operational security; and engineering standards centred on quality, availability, and resilience.
Our work frequently takes us in exciting new directions, moving from new technologies to new applications of existing ones. You’ll get the opportunity to work with the latest devices, from battery storage to electric vehicle chargers, finding ways to optimise their operation and empower owners to benefit from their own flexibility.
Your focus will be on 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 containerisation and serverless technologies to deliver a highly available and resilient solution to our customers.
Our vision of a great candidate is someone who loves solving technical problems and who focuses on delivering valuable features on our products. They’ll love working within an open, supportive team from a wide range of industry backgrounds, enjoying spending most of their time working directly with teammates. Most importantly, they’ll be eager to solve new problems and learn brand new skills, taking the opportunity to grow both themselves and the team they’re in.
Your day-to-day responsibilties
Here’s a flavour of what you’ll be doing each day:
- Producing features for a modern, cloud-based software platform.
- Delivering quality to our products through test-driven development (TDD), pair programming, and curious exploration of the work delivered by the whole team.
- Operating and maintaining our platform in production.
- Collaborating within a skilled, cross-functional team to shape our products, and the technical solutions we adopt in order to deliver them.
- Actively contributing to technical decisions through discussions, whiteboarding, evaluations, and investigations.
- Operating within a value-centric workflow, where each work item is a valuable deliverable that you will take from specification through to deployment in production.
- Participating in knowledge sharing with the team.
- Aiding the continuous improvement of the team.
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.
- Node.js with TypeScript. It’s our ecosystem and language of choice right now.
- Relational data stores, including PostgreSQL and MySQL on top of AWS RDS.
- Document data stores, including AWS DynamoDB.
- Test-driven development. We follow Red-Green-Refactor everywhere.
- Pair programming. We try to spend most of our development time pairing. Sometimes this means pairing with a non-developer – a great way to knowledge share.
- Containerisation. We’re using Docker right now. We’re interested in other technologies in this area, such as Kubernetes.
- Serverless. We’re using AWS Lambda and think it’s incredibly powerful.
- Amazon Web Services. It’s our platform of choice and we try to get the most out of it.
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.
- 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 Ruby.
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-built instances!
- Automation helps deliver quality, security, and predictability. We judiciously automate whatever we can.
- Salary £30-40k, depending on your experience and level.
- A minimum of 25 days holiday, plus public holidays.
- Health care expenses scheme.
- Flexible working hours, along with remote working. The only restriction is that we maintain our 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!