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.
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 lead remote-first teams of software engineers building products to help schools recruit teachers. We build full-stack microservices in Nodejs and React across a range of products that help teachers apply for jobs and schools find the right teachers.
My job includes:
- mentoring and helping individuals to be more effective through pairing and coaching
- helping teams work better together across multiple locations and timezones
- collaborating with product owners to plan and specify work and advocating a lean approach to product development to get products in front of users quickly
- working with high-risk and special category and considering risk in everything we do
- designing and implementing scalable microservices
- working with other Principal Engineers to lead technology choices and share ways of working
- helping to define an engineering career ladder for the engineering team
- organising technical demos to the business
- co-hosting an openspace across engineering teams and multiple timezones
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.
-
Front end web development using HTML, CSS, Javascript, JQuery. Some back end development using PHP and Wordpress. Agile environment with small projects and weekly iterations.
Programming languages: Node.js, Java, Clojure, Scala
Database technologies: Mongodb, Postgres, Solr
Other: SAML, OpenID Connect, Docker, Kubernetes
Methodologies: Agile, Test Driven Development, pair programming, microservices
-
The University of York (2005 - 2008) BA (Hons) History 2:1
-
The Knights Templar School (2003 - 2005) A Levels: English Literature A, History A, Mathematics A AS Level: French B
-
Fearnhill School (1998 - 2003) 11 GCSEs: A* - B (including Double Science, English and Mathematics at A*)
- Speaker at Clojure in the Service of Her Majesty’s Government (with Philip Potter), Clojure Xchange 2014
- Swift & iOS8 2 day Course (Skills Matter)
- Functional Programming Principles in Scala (Coursera) 2012
- Race Captain, Carnethy Hill Running Club 2017 - 2019
- President of University of York Windsurfing Club (2007 - 2008)