Experienced software engineer and leader focused on building great products and high performing teams, as well as fostering a remote-first culture.
I've been a software engineer for nine years, working across a range of domains and technologies. Most recently I've been building full stack Node.js microservices to help teachers and schools at Tes. In the last year I've been leading teams of four to seven engineers working across multiple locations and timezones. I've helped to build a remote-first culture through mentoring and coaching individuals and teams. I'm happiest helping teams work together and building great products.
Aug 2021 - present
I'm currently working with Octopus Hydrogen, developing hydrogen production sites to supply zero emission fuel to HGVs, buses and aviation. We’re developing an IoT solution with support from AWS that will enable us to ramp up/down operations depending on the price of electricity and the availability of renewable power.
Jan 2021 - Aug 2021
I led a small scrum team responsible for Administrate's Learning Management System (LMS). My responsibilities included planning the delivery of projects with customers, running scrum ceremonies, and building software solutions using Python, NodeJS, React and TypeScript.
Sept 2019 - Jan 2021
I led remote-first teams of software engineers building products to help schools recruit teachers. We built full-stack microservices in Nodejs and React across a range of products to help teachers apply for jobs and schools find the right teachers.
My job included:
Feb 2016 - Sept 2019
Introduced online job application forms for teachers, and an ATS (Application Tracking System) for schools to manage applications using Nodejs microservices. I worked on several small teams, latterly taking a leading role to define and prioritise work with a Product Manager, and training new joiners.
March 2014 - Feb 2016
I was a consultant developer on the following projects:
Part of a team in Hamburg and Dusseldorf developing a web application for METRO Sales Managers to plan and manage customer visits. The system consists of a Java backend with a Cassandra database and a front end React service. I was also personally resonsible for the deployment pipeline of the application to Google Cloud using Kubernetes and Docker.
I worked on the GOV UK Verify project which provides a single, secure way for individuals to access government services online. The system consists of numerous microservices written in Java using the Dropwizard framework. To ensure security, messages between these microservices and external systems use SAML.
This involves working in a support role for one week every month. This includes speaking with different third parties, releasing to test and production environments daily, and solving problems that arise in production.
I worked on a small team at the Government Digital Service to build a prototype in Clojure to investigate a single sign-in service for the government for businesses. This included investigating the OpenID Connect protocol and implementing this in Clojure. I gave a talk about this project at the Clojure Xchange conference in December 2014.
July 2011 - March 2014
I was part of a team that interfaced with BT to provide telephone and broadband services to Sky customers. Development was mainly in Java writing to an Oracle database and communicating using XML via an ActiveMQ message broker. I worked on a mixture of legacy systems using Spring and Hibernate, and newer, more lightweight systems designed around business events. I enjoyed using functional libraries such as Guava and Totally Lazy to make transforming collections simple and elegant. I also developed a small Scala application, and found Scala’s support for overloading operators to be perfect for creating a simple DSL to route messages.
This was an Agile environment: pair programming was standard, using a test driven development approach and starting from an acceptance test to define the business requirement. I led numerous retrospectives for other teams and believe that effective communication is key to making a team work well.
July 2009 - July 2011
Two year graduate scheme consisting of a six week intensive training course on all areas of the software lifecycle and four six month placements in various technology departments. This included:
Designing, testing, developing and delivering software using a variety of languages and frameworks, using agile programming techniques.
Acceptance and performance testing applications, developing test scripts and providing quality assurance, using Concordion and Yatspec test frameworks.
Analysing infrastructure and using a Remedy CMDB. Introduced a team wiki and Agile Ops to the team.
BA (Hons) History 2:1
A Levels: English Literature A, History A, Mathematics A
AS Level: French B
11 GCSEs: A* - B (including Double Science, English and Mathematics at A*)