Printing tool Download PDF

Summary

I am an enthusiastic and proficient software engineer with a first-class degree in Computer Science and almost 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, both in the software and the teams that make it.

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

08/2018present

Consultant

Adrian Lowdon

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, Azure DevOps, SonarQube

Helping to turn business requirements into high-value software for a variety of clients, including Freshfields Bruckhaus Deringer and Harrods. Focus on working with stakeholders to understand and formalise requirements, producing high-quality code using techniques including TDD and static code analysis, 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.

03/201407/2018

Head of Development / Lead Software Engineer

Movebubble

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.

09/201302/2014

Software Engineer

Softwire

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.

07/201108/2013

Software Developer

Trainline

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.

09/200907/2011

Software Developer

Concentra

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.

07/200809/2008

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.

Education

20062009

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.