Download PDF

Summary

I am an enthusiastic and proficient software engineer with a first-class degree in Computer Science and over eight years of commercial experience, including several years leading and mentoring technical teams. I have expertise across full-stack development, using agile methodologies, and devops concerns, having worked 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; establishing monitoring and alerting in production systems, producing visible metrics to inform data-driven decisions. I have a working experience of a variety of both front- and back-end languages, frameworks and databases, although I tend to lean more towards back-end development, with a recent concentration on the C#/.NET ecosystem. However, I am eager and quick to learn new 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

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 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 in the team, and organised sessions to distribute technical knowledge both around the engineering team and the wider company.

Latterly, when the CTO left Movebubble, I applied and was 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 in development and around the company, increased efficiency in the engineering team by moving infrastructure to hosted providers, worked to recruit other technical staff, and successfully 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 multiple clients across different industries, including publishing and telecommunications, quickly getting up-to-speed on unfamiliar codebases in different languages and communicating directly with off-site technical teams. Responsible for mentoring junior developers, reviewing their code and providing technical and pastoral support as they began their careers. Conducted technical interviews and helped to evaluate 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

Upon joining, worked with the most senior development team, helping to develop internal tools to standardise and radically improve the deployment process for our production and test systems, and collaborated with teams across the company to promote and utilise the new tools. Went on to work extensively on electronic ticketing offerings, from the web UI and public API level down to the back-end fulfilment systems, improving and upgrading a legacy code base to a message-based architecture using NServiceBus. As part of this work I travelled to Bangalore in India to meet the off-shore team, helping to document and disseminate knowledge between there and the in-house team in London.

Latterly also in a team responsible for maintaining internal development infrastructure, including version control, continuous integration tools 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, jQuery, SQL Server, Flex, ActionScript, TFS, TeamCity

Worked in the bespoke software development team of this management and technical consultancy. This demanded fast-paced development using a modified Scrum framework, regularly engaging with clients to constantly inform and influence the system design. Rapidly gained competency with various unfamiliar technologies, providing immediate value as a developer on one of the company’s biggest projects to date; after quickly gaining the respect of the team, I 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.

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, implementing many client-visible changes. As my first exposure to the software development industry, this provided a great opportunity to develop skills acquired at university and previous jobs, and learn about new technologies and tools such as version control and bug tracking. Accrued significant experience of programming in a large team, including use of the agile programming methodology. 

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 the first year.

Final year dissertation (marked fourth best in the year) 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 failures on the primary server hard drive, the secondary server was able to transparently provide access to data held in the filesystem.