Michael Allen Lead Software Engineer

Next available: August 2021

  • [email protected]
  • linkedin.com/in/michaeldfallen
  • twitter.com/@michaeldfallen
  • www.michaelallen.io
A picture of Michael Allen

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.

# Skills

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.

# Development

    • Typescript
    • Python
    • Node.js
    • Scala
    • Bash
    • Java
    • Ruby
    • CSS
    • HTML
    • C#
    • 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"

# Infrastructure

    • Drone CI
    • Docker
    • Ansible
    • Nginx
    • AWS
    • Puppet
    • Heroku
    • Terraform
    • Azure
  • 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

# Agile Practices

  • 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

# Tools

  • 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

# Experience

# Kantan

Jan 2020 - ongoing

Kantan is a startup aiming to become the "OS for Tradespeople". Funded by the OVO Group, they are a small team helping trade professionals work smarter.

As one of the early hires I took a leadership role in planning and prioritising work, improving code quality and helping our team work smarter. I focused on shaping an inclusive culture and improving our systems and tools to unlock the potential of our small team.

From day 1 I took ownership of hard problems, such as a system for dynamic job sheets, designing our solution and splitting it up into incremental improvements so our team could implement a minimum releasable feature as soon as possible.

I'm very proud of the effort my team and I put in to Kantan, delivering a product that our users love against incredibly tight timescales.

    • React Native
    • Typescript
    • Apollo
    • Graphql
    • Python
    • Django

# Spark

Financial Times Jan 2019 - Jan 2020

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.

    • Prosemirror
    • React
    • Node.JS
    • Webpack
    • Heroku

# Core team

DAZN via 101 Ways Jul 2018 - Dec 2018 6 months

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.

    • Node.JS
    • Drone CI
    • Webpack
    • AWS Lambda

# MyAccount team

DAZN via 101 Ways Mar 2018 - Jun 2018 4 months

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.

    • React
    • Mobx and Mobx-state-tree
    • Webpack
    • AWS Lambda

# One per Page

HM Courts and Tribunal Service via Digi2al Oct 2017 - Mar 2018 5 months

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.

# Apply for Divorce

HM Courts and Tribunal Service via Digi2al April 2016 - Aug 2017 1 year, 5 months

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.

# Lighthouse support

Defence Science and Technology Laboratory via Digi2al Dec 2016 - Feb 2017 3 months

Ongoing support for the team in DSTL as they scaled out the Lighthouse project to more users.

# Lighthouse

Defence Science and Technology Laboratory via Digi2al Jan 2016 - March 2016 3 months

As Infrastructure Engineer, I built an automated delivery pipeline that needed to deploy in to a highly secure environment that we had no access to.

# Sign your Mortgage

Land Registry via Kainos Feb 2014 - Sept 2015 1 year, 8 months

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.

# Security Platform

Department for Work and Pensions via Kainos Sept 2014 - Feb 2015 6 months

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.

# Register to Vote

Government Digital Service via Kainos Feb 2012 - Aug 2014 2 years, 6 months

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.

# Qualifications

  • 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

# Contact