Printing tool Download PDF


I am an enthusiastic and proficient software engineer with a first-class degree in Computer Science and over ten years of commercial experience, including several years leading and mentoring technical teams. I have expertise in full-stack development including DevOps, utilising agile methodologies to help companies realise value quickly, and to drive constant improvement in codebases, processes, and teams.

I have knowledge across the entire software engineering lifecycle: communicating with technical and non-technical stakeholders while conceptualising and designing products; architecting solutions using DDD, microservices and event-driven systems; crafting APIs using REST and GraphQL; guiding and producing SOLID, well-tested implementations following TDD principles; using continuous delivery to deploy to cloud-based infrastructure; and establishing monitoring and alerting in production systems, producing visible metrics to inform data-driven decisions. I have working experience of a variety of front- and back-end languages, frameworks and databases, although leaning more towards back-end development, with a recent concentration on the C#/.NET ecosystem. However, I am eager and quick to learn technologies as required, while being pragmatic about how close to get to the bleeding edge.

My philosophy is to always leave something better than how you found it, and I apply this across my work.

Work experience


Software Consultant


Technologies used: C#, .NET Core 2.1/2.2, ASP.NET Core SignalR, Entity Framework Core, TypeScript 3, React/Redux, SQL Server 2016, Azure, Git, Bamboo, TeamCity, Azure DevOps, SonarQube

Helping to turn business requirements into high-value software for a variety of clients, including Freshfields Bruckhaus Deringer, Harrods and ag-Grid. Focus on working with stakeholders to understand and formalise requirements, utilitising techniques including TDD and static code analysis to produce high-quality, well-tested code, using CI/CD to enable rapid, data-driven progress, extracting metrics and ensuring they are used to drive business decisions, and mentoring teams to enable them to perform to the best of their abilities.


Head of Development / Lead Software Engineer


Technologies used: C#, ASP.NET MVC and WebAPI, JavaScript (ES6), React.js, React Native, RavenDB, MongoDB, PostgreSQL, GraphQL, Git, TeamCity, Octopus Deploy, nginx, even Objective C (for my sins)

Was asked to join Movebubble at a very early stage, and helped it to evolve and grow into a successful, innovative, mobile-centric platform. Worked as the lead engineer on one of the product teams, designing, implementing and deploying product features across the full stack, including APIs, web and mobile. Encouraged use of up-to-date frameworks and tools, pursued comprehensive testing across our codebases, including the use of TDD, and improved our architecture with DDD and event-driven approaches, breaking a legacy monolith into smaller microservices. Mentored other engineers and organised sessions to distribute technical knowledge both around the engineering team and the wider company.

Latterly promoted to Head of Development, assuming ownership and responsibility for all technical aspects of the company whilst continuing to take an active role in software development. Further improved processes across the company, increased efficiency in the engineering team by moving infrastructure to hosted providers, worked to recruit other technical staff, and kept systems running smoothly during a 200% increase of traffic resulting from two London Underground advertising campaigns, improving database and code performance to support tens of thousands of users per month.


Software Engineer


Technologies used: Java, Visual Basic, Jenkins

Worked with a variety of clients across different industries, including publishing and telecommunications, quickly deciphering unfamiliar codebases in different languages and communicating directly with off-site technical teams. Responsible for mentoring junior developers, reviewing code and providing technical and pastoral support as they began their careers. Conducted technical interviews and evaluated job applications.


Software Developer


Technologies used: C#, ASP.NET Web Services, NServiceBus, NHibernate, JavaScript, Oracle, SQL Server, NAnt, Subversion, Git, Thoughtworks Go, TeamCity, Chef

Developed electronic ticketing offerings, from the web UI and public API level through to the back-end fulfilment systems, improving and upgrading a legacy code base to a message-based architecture using NServiceBus. Travelled to Bangalore, India to meet the off-shore development team, helping to document and disseminate knowledge around the in-house team in London. Worked with the most senior development team on internal tools to standardise and radically improve the deployment process for production and test systems, collaborating with teams across the company to promote and utilise the new tools. Also in a team responsible for maintaining internal development tooling, including version control, continuous integration and infrastructure automation. Was involved in encouraging and supporting improvements in build and deployment processes across the company, and starting to automate infrastructure provisioning using Chef.


Software Developer


Technologies used: C#, ASP.NET MVC, NHibernate, JavaScript, SQL Server, Flex/ActionScript, TFS, TeamCity

Rapidly gained competency with various unfamiliar technologies, providing immediate value as a developer on one of the company’s biggest projects to date; was entrusted as sole full-time developer on the project after just three months' employment. Went on to act as team lead for several large projects across both private and public sectors, regularly engaging with clients to constantly inform and influence system design.


Developer Intern

MX Telecom (now OpenMarket)

Technologies used: Java, Spring, Enterprise JavaBeans, Hibernate, MySQL, Subversion, Maven

Worked as a software developer intern in the company's largest project team on one of their flagship products, quickly upskilling and implementing many client-visible changes.



Computer Science, MA (Cantab)

University of Cambridge

Modules included Digital Electronics, Operating Systems, Discrete Mathematics, Digital Communication, Security, Computer Design, Concurrent Systems and Applications, Logic and Proof, Compilers, Information Theory, Quantum Computing, Computer Vision, Distributed Systems. Also studied Mathematics and Physics in first year. Final year dissertation involved development of a Linux filesystem to provide real-time, synchronous data duplication between a primary server and a secondary, redundant server. In the event of hard drive failures on the primary server, the secondary server was able to transparently provide access to data held in the filesystem. Marked fourth highest in the year.

Created withVisualCV