- [email protected]
An exceptional and respected professional developer with experience leading and architecting digital services for government projects. I advocate a clean, systematic and delivery-driven approach to Agile software development which helps cross-functional teams to pull together.
As a technical lead I take team improvement seriously, putting effort into upskilling through pair programming, mentoring and empowerment.
I am dedicated, flexible, and reliable, a valuable addition to any team.
I consider myself a T shaped developer, with hands-on experience in every area of Software Development. I also consider myself tool-agnostic, capable of rapidly becoming effective and productive in any language or toolchain.
- Objective C
- I gently enforce best practice approach to testing and code quality through code reviews and pair programming
- I use targeted pair refactoring to work with members of a team to simultaneously clean up areas of the codebase that are in need of refactoring and teach good practices to the team
- I take a pragmatic approach to reuse of code, asking my developers to follow the Rule of 3, "rewrite it three times before writing a reuseable solution"
- Drone CI
- I encourage my teams to own their code through to live operation, owning their deployment pipeline or collaborating closely with Ops
- I look to automate repetitive tasks at every step of development, including automated build, deployment and testing
- I have real world experience building Continuous Integration pipelines
- I emphasise Devops culture on teams I lead, by supporting developers learning to build infrastructure automation and deployment code
- I am skilled at teaching others how to approach writing user stories and training them in Agile development
- I have led Product Owners and Business Analysts in reshaping their Waterfall plan into a Backlog of user focused stories
- I have experience working on teams as a Scrum Master, mediating disputes, clearing up miscommunications, and finding solutions to blockers
- I work on Ubuntu and Mac OSX
- I use Docker to create development environments
- I have used VirtualBox and Vagrant for development environments
- I am fluent in Bash and Zsh
- I use Vim as my primary editor, fallback on VSCode if Vim doesn't suit
Working as part of a cross-discipline team, I led the creation of a new Content Editor based on the Prosemirror library and React. During inital development I focused on proving the teams main requirements of a simple user interface, interactive components (to allow customisation of content), and multi-user collaboration.
As Prosemirror's interfaces are quite complicated and the library was unknown to the team I built abstractions to integrate Prosemirror with the more familar world of React. This allowed the team to build powerful interactive components into the editing surface.
After initial implementation and a successful switch of all users to the new Prosemirror editor, I worked on building a powerful version management system that allowed users to track contributions to an article, compare differences between each version and roll back undesired changes.
In my time on the MyAccount team I demonstrated to DAZN that I had a knack for finding and fixing platform level issues. I was asked to join the Core team, who are responsible for DAZNs code delivery platform, to help them improve the platforms reliability.
In the Core team I have proposed and implemented changes that dramatically reduce integration failures, reduced merge-to-deploy cycle time from 50 mins to 3 mins, and improved developer feedback loops.
- Drone CI
- AWS Lambda
As a Senior React Developer, I worked with a 4 developer team to build the MyAccount section of DAZNs rebuilt streaming platform. In building MyAccount I quickly got up to speed with modern JS frameworks the DAZN team used, MobX and MobX-state-tree for state management and React.
I took the lead on building a library that integrated MobX with React-router, allowing the teams in DAZN to benefit from both technologies. I treated this library as if it was an open source project, generously documenting it and gathering feedback from users in order to improve it. Three of the teams now use it in their apps.
- Mobx and Mobx-state-tree
- AWS Lambda
As Lead Maintainer, I built and released an open source library that makes building the "One question per page" style services easier.
I drew on my previous experience with Apply for Divorce and Register to Vote to solve the hard problems involved with One per Page transactions.
In developing this framework I put a lot of effort in to researching with real users, gathering their feedback to ensure that the interfaces I designed were easy to understand and flexible enough to customise to their need.
As Technical Lead, I led a team in the development of the Apply for Divorce service. Starting from discovery of the problem space through to release and iteration of a successful Private Beta, I shaped the technical design and pushed for constantly better software and software delivery.
In order to prevent blocking the team while we hired more Ops staff, I worked with a fellow Tech Lead in building and advocating for more reliable, automated, Infrastructure. Together we reinvigorated the programme's Ops team and brought more modern release practices to the development pipeline.
Ongoing support for the team in DSTL as they scaled out the Lighthouse project to more users.
As Technical Lead, I led a 7 person team in the development of the Sign your Mortgage service. The team comprised of a mix of contractors and Civil Servants, who were in the process of learning new technologies and modernising the Land Registry's product delivery.
I closely mentored the Civil Servants in my team, through pair programming and workshops, to help them gain skill in the tech we were working in as ultimately they would own the service once complete.
I designed the system architecture iteratively based on discussions with the Product Owner and investigation of the requirements with Land Registry subject matter experts.
As Technical Lead, I worked closely with the DWP teams Product Owner and Technical Architects to rebuild their waterfall plan in to an iterative backlog.
Durating the initial Alpha of the Register to Vote service I worked as a developer in building the service collaboratively with Design and Research.
After Alpha the team split in two, with half focusing on the backend service and the other half focusing on the frontend user journey. On that team I stepped in to act as a Lead Developer for the Frontend, designing the component architecture for the Frontend app and implementing a significant amount of the components.
I worked closely with the Designer and Researcher to ensure that the app held to the best experience possible for the user.
- Certified Scrum Master, ScrumAlliance
- Functional Programming in Scala, École polytechnique fédérale de Lausanne
- Principles of Reactive Programming, École polytechnique fédérale de Lausanne
- Computer Science, 1st class Masters degree, Queens University Belfast