CraigTP Logo

Craig Phillips

Senior Software Engineer

Profile / Summary

I'm an experienced Senior Software Engineer, Systems Architect and Microsoft Certified Professional with a passion for software development.

I work primarily, but not exclusively, with Microsoft technologies and the .NET / .NET Core frameworks, leading complex and challenging enterprise software development projects to successfully deliver robust, secure, scalable and efficient software solutions, encompassing over 20 years of experience in the field.

An accomplished team leader, mentor and architect, I'm skilled at taking a leading role in the overall architecture of a project, in driving team developments and employing proven industry disciplines and best-practices to deliver successful software projects that frequently exceed client expectations.

I'm passionate about distributed systems design, CQRS and event sourcing and a proponent of domain-driven design to ensure that solutions are laser-focused on solving real business problems. I'm an open source enthusiast and advocate using the best and most appropriate tools available, providing for an effective and pragmatic solution that delivers genuine and quantifiable business value.

Key Skills

  • Programming Languages / Frameworks: C#, .NET Core, .NET Framework, ASP.NET, JavaScript/TypeScript
  • Databases: SQL Server, MySQL, MongoDB, CosmosDB, EventStoreDB, Redis
  • Platforms: Windows, Linux, Azure, Amazon Web Services, Docker/Kubernetes
  • Development Principles: SOLID, TDD, BDD, API Design/REST, CI/CD
  • Other: Domain-Driven Design, Event Sourcing/CQRS, Event-Driven Architecture, Service-Oriented Architecture, Business Analysis, Team Leadership

Key Achievements

  • Successfully delivered large section of an ambitious project to re-engineer a number of monolithic applications to cloud-native, event-driven distributed services for a leading hospitality software provider as part of a company-wide effort to modernise entire software estate including training and mentoring staff on event-driven architecture and distributed system design.
  • Successfully designed & delivered large, global SaaS product to manage and automate music royalty collection and payment for one of the UK's largest and most demanding independent music publishers including full cloud geo-distribution & redundancy to ensure high availability & reliability for the worldwide client base.
  • Successfully lead, developed and delivered complete green field, ground-up new and bespoke web site and back-end web, chat & communications platform for a leading UK children's charity, forming a core component of a complete brand refresh and redesign.
  • Successfully delivered a re-engineering project to transform a complete destination management system from a hybrid "classic" ASP/ASP.NET Web forms platform to a modern ASP.NET MVC platform following best-practice architecture and design.
  • Successfully lead project to develop industry leading anti-motor fraud web application and API with advanced OLAP & OLTP system and data warehouse including one of Europe's largest anti-fraud databases for a Top 40 UK law firm.
  • Successfully lead project to deliver a market-leading, best-of-breed corporate travel management web & desktop-based product suite for a company who, largely as a result of the technology, were later acquired in a multi-million pound deal.
  • Mentored, trained and coached teams of developers on .NET languages and frameworks, best practice techniques including security, scalability and reliability and architecture patterns including event-driven and event-sourced distributed system design.

Career History

Senior Backend Engineer III at M-Kopa

August 2022 - Present | https://m-kopa.com/

At M-KOPA, my role is as a fully remote Senior Backend Engineer on the Core Lending team. A FinTech scale-up, M-KOPA's mission is to make financing for everyday essentials accessible to everyone, especially underbanked customers on the African continent.

Core Lending is the company's core domain and my team are responsible for systems that manage the entire lifecycle of millions of loans, including applications, approvals, disbursements, payment processing and refinancing. Our software currently deals with over 1.5 million active loans from over 1 million active customers, and processes over 30 million financial transactions per month. Over the next few years, M-KOPA is poised to grow by a factor of 10 and our systems will be required to scale accordingly.

In order to support the desired growth, I was hired for my knowledge and expertise in migrating legacy, monolithic applications to highly scalable, cloud-native Event Sourced microservices as well as to be a core contributor in driving increasing organisational maturity and the ongoing re-engineering effort to support the company's ambitious future plans.

Major responsibilities include championing an adoption of Domain-Driven Design techniques to facilitate improvements in domain modelling as the software systems evolve as well as being the go-to expert for an Event Sourced implementation of the core financial platform to provide both a high performance and highly scalable design along with a provable audit log, a pre-requisite for potential future growth plans.

Technologies used include Azure Cloud, EventHubs, ServiceBus, CosmosDB, RabbitMQ, MassTransit, Redis, Docker/Kubernetes, AKS, AppInsights, Azure DevOps CI/CD, C#, .NET.

Senior Developer at Guestline Ltd

January 2019 - July 2022 | https://www.guestline.com

My role at Guestline was as a fully remote Senior Developer within the Data & Reporting team. The Data & Reporting team are responsible for the ingestion, processing, analysis and reporting of all domain event data from 5 core line of business products aimed at complete management for the hospitality industry.

Delivering a greenfield, bespoke cloud-based SaaS solution, incoming events from hundreds of customers spanning the UK, Western Europe and Asia are processed and analysed to provide near real-time business intelligence to all of the product's customers, with our flagship reporting product scaling to process over 2000 events per second.

Hired for my expertise in message-based systems, I pioneered the introduction of event-driven architectures and event-sourced systems within both my own team and the wider organisation as part of a pan-organisation effort to modernise and re-engineer the entire software suite to a more cloud-native solution. The Data & Reporting Team acted as the inaugural team to introduce such practices, becoming a best-in-class centre of excellence within the organisation.

I was also personally responsible for driving adoption of a Domain-Driven Design approach to business analysis and development across the entire organisation's development teams in order to improve product design, quality & scalability, reduce complexity, optimise cloud-based infrastructure and drive IT cost savings resulting in increased customer satisfaction and increased profits.

Technologies used include Azure Cloud, EventHubs, ServiceBus, CosmosDB, Blob/Table/Queue Storage, Redis, Azure WebApps, Azure Functions, Docker/Kubernetes, AKS, AppInsights, Azure DevOps CI/CD, C#, .NET Core.

Senior Software Engineer at iVendi Ltd

August 2018 - December 2018 | https://ivendi.com

My role at iVendi was a remote Senior Software Engineer and Team Leader for a small team focused on building real-time and offline multi-channel chat, messaging and notifications between the company's back office systems and the various point-of-sale systems used by dealerships and consumers within the automotive industry.

iVendi have numerous engineering teams, split into Spotify-style squads, each focusing on a specific bounded context within the business domain. Using a domain-driven design approach along with adoption of Event Sourcing and CQRS techniques, the company's teams build numerous software components that ultimately comprise of a complete solution to facilitate the end-to-end management of automotive retailing.

My role involved building a greenfield messaging platform allowing both online, real-time chat between multiple car dealership representatives, car buying consumers and iVendi's own support team as well as building a multi-channel real-time and offline messaging and notification solution allowing messages to be delivered via a custom-built online chat platform as well as Email, SMS, WhatsApp and other omnichannel platforms. The messaging solution was required to scale to handle over 9,000 automotive dealerships with over 15,000 users along with over 75,000 registered consumers and many more anonymous prospective consumers, processing and delivering over 250,000 messages per day.

Technologies used include C# targeting both full .NET Framework and .NET Core, NancyFx, EventStoreDB, MongoDB, Docker, Kubernetes, RabbitMQ, Redis, ElasticSearch, PubNub, various front-end frameworks along with numerous other libraries on both Windows and Linux platforms and also utilising numerous Azure services.

Senior / Lead Developer at Sentric Music Ltd

September 2016 - July 2018 | https://sentricmusic.com

My role at Sentric Music was Senior/Lead Developer in a small, focused development team. I took a leading role in the analysis, architecture, design and development of a complete greenfield SaaS platform aimed at the music publishing industry.

The platform allowed music publishers and artists to manage relationships, catalogues of works, performances and other related activities, automating the management of artist repertoire (including analysis and processing of media) and processing & collection of royalty payments from a worldwide group of collection societies.

I architected, designed, and developed the complete AWS infrastructure and the entire software stack which comprised a message-based service-oriented architecture of numerous subdomain specific components and made use of a large number of AWS services. This backend served both an API and two front-end websites, focused on publishers and artists respectively. I also championed a best-practice lean and agile continuous delivery process allowing the team to iterate quickly and continually deliver business value ultimately facilitating the successful delivery of a robust, highly-scalable and performant software system.

I was also the principal architect and sole developer for the external-facing RESTful API component of the software stack, a crucial development effort that allowed the company to win a major US client through timely integration with their own systems.

Technologies used include C#, .NET, ASP.NET MVC/WebAPI, Jenkins, AWS (including Aurora/MySQL, EC2, S3, ELB, VPC, ElastiCache, Lambda, SNS, SQS).

Senior / Lead Developer at Amaze Plc

July 2015 - September 2016 | https://www.amazerealise.com

As a senior/lead developer at Amaze, I took a leading role in the analysis, design and development of custom websites and applications using the full Microsoft .NET stack and built on top of a core content managed platform using the EPiServer CMS. I was the technical lead and senior developer on two major website projects for the NSPCC, a leading UK children's charity.

A greenfield project for childline.org.uk was a ground-up development of a complete new website based upon the EPiServer CMS and Community v9 platforms with extensive bespoke functionality including custom registration, forums, support knowledgebase, online drawing tool and one-on-one real-time chat functions and including complete integration with 3rd-party back-end logging and auditing systems as well as a complete REST API for mobile app integration utilising the Google Cloud Messaging platform.

A brownfield project for nspcc.org.uk involved the addition of bespoke e-commerce functionality using EPiServer Commerce v9 to facilitate the charity's biggest yearly fundraising effort, Letter From Santa. The project involved development of a bespoke order form, integration with numerous payment gateways, extensive custom reporting and administrative functions as well as complex data import and export functionality to facilitate communication with 3rd-party suppliers.

Technologies used within both projects included: C#, ASP.NET MVC 5, Web API 2, SQL Server 2012, Entity Framework 6, SignalR, HTML5, CSS3, JavaScript/jQuery along with related tooling such as LESS, SASS, Grunt and Swagger/Swashbuckle (for API documentation).

Senior Developer at New Mind Internet Consultancy Ltd

July 2012- July 2015 | https://www.newmind.co.uk

At New Mind Internet Consultancy Ltd. my role involved analysis, design, development and maintenance of the company's industry-leading web based Destination Management System (DMS) used by the majority of the UK tourism market, as well as a growing European user base.

The company's DMS provides service to over 20,000 corporate tourism businesses, handling over 1 million transactions and generating over £2 million of business from over 4 million visitors to the many public tourism websites, per month.

My role included providing continued advancement of the large multi-module code-base (Product/Enquiry Management, CRM, eCommerce etc.), driving architectural improvements and progressive refactoring to increase application and code quality and reduce technical debt, as well as delivering increased business and customer value through the development of additional features and product functionality. This included integration with many 3rd party services for inventory management and real-time availability enquiries and booking (e.g. SiteMinder Channel Manager), many social network sites and services along with mapping, geo-location and reviews integration.

I also had a senior role in the analysis, design and development in re-engineering the application from a hybrid “classic” ASP/ASP.NET Web forms platform using NHibernate and SQL Server, to a modern ASP.NET MVC platform using a Behaviour-Driven Development (BDD) approach within an Agile framework and using C#, SQL Server, Entity Framework, WCF and related technologies and encompassing best-practice architecture and design to support a secure, highly-scalable and high-performance web application, ensuring the DMS platform can support its large and growing user-base, and ensuring continued delivery of the company's 99.99% uptime and throughput guarantees.

Senior Web Analyst Developer / Team Leader at Hill Dickinson LLP

June 2007 - July 2012 | https://www.hilldickinson.com

My role at Hill Dickinson involved leading and mentoring a team of developers through a number of line-of-business applications and projects.

I was responsible for the analysis, design and development of a number of flagship products within the Insurance/Fraud division, "Netfoil" (www.netfoil.co.uk), a full-featured anti-fraud website application, database and related back-end utilities, and “Netfoil ACE”, a fraud prevention SOAP/XML web-service and complete API targeted at integration within third-party vertical market solutions.

Both products were aimed at the motor insurance and accident management market and included complex and extensive real-time data analysis, matching and heuristics based upon user-defined metrics, from both our own multi-million record database as well as comprehensive data matching and aggregation from a wide variety of third-party data sources and online API's (i.e. electoral roll, DVLA, telephone directories etc.) to provide clients with key fraud indicators and actual fraudulent history of searched entities. Both products also included extensive MI reporting using ASP.NET charting and SQL Server Reporting Services.

Both products were originally developed with C#, ASP.NET 2.0 and SQL Server 2005 using a distributed, scalable, standards compliant and security-conscious approach with multiple application tiers, but were subsequently migrated to C# / ASP.NET 4.0 and SQL Server 2008 R2, including the introduction of newer technologies and frameworks such as WCF, LINQ and Entity Framework, along with implementation of AJAX/jQuery functionality. The applications were also penetration tested by dns.co.uk (now Dell SecureWorks) as part of a rigorous security audit, and passed with no vulnerabilities.

The development of these products included related developments of tooling and utility applications using a wide array of technologies, including ASP.NET/ASP.NET MVC, WinForms and WPF. As Greenfield projects, I performed significant business and technical analysis, liaising with senior stakeholders throughout full project life-cycle, along with taking the lead role in the design, development and documentation of the applications. Within my role, I was also instrumental in driving best-practice improvements in team processes and procedures along with being responsible for mentoring and training developers on modern .NET technologies and techniques.

Other duties within the role included on-going development and maintenance of a number of other internal applications, both web and desktop based, which included the corporate intranet, extranets and various applications for many internal departments.

Lead Analyst Developer / Team Leader at Conferma Ltd

May 2005 - June 2007 | https://www.conferma.com

Conferma Ltd. was created as a software subsidiary of NIS Europe Ltd in order to focus on the continued development and marketing of the company's “Conferma” product suite to the wider travel marketplace.

After having successfully lead the development of the Conferma project at NIS Europe, I was chosen to continue my role as lead analyst developer and team leader when the Conferma technology intellectual property was transferred to the new Conferma company.

My role at Conferma was a continuation of my role at NIS Europe, leading the same development team in the continued development of the Conferma product suite, including continued migration to the .NET platform, enhancements to the product's functionality and enhanced white-labelling allowing further integration into our client's own systems, and continued integration of an expanding portfolio of online services and functionality from an increasing number of strategic business partners and third-party solution providers.

Senior Analyst Developer / Team Leader at NIS Europe Ltd

February 2002 - May 2005

At NIS Europe, I was the senior analyst developer and team leader for 4 developers, utilizing VB6, Classic ASP, C#, VB.NET and ASP.NET along with SQL Server 7/2000/2005.

Major achievements at NIS Europe included the complete Greenfield analysis, design and development, through full project lifecycle, of the company's flagship product, Conferma (www.conferma.com); a complete corporate travel and accommodation management solution. Conferma is both a full-featured website and also a complete SOAP/XML web-service API.

The Conferma solution was built upon the consumption and intelligent integration of numerous real-time web services and remote API's from many third-party providers including over 3 different Airline GDS booking systems, over 6 different hotel booking API's, online car hire API's and many other online services. This allowed corporate clients to seamlessly manage the entire end-to-end itinerary process including real-time availability checking, price enquiries and comparisons, reservations and complete itinerary management including administrative functions of preferred supplier and budgetary management and compliance along with full MI analysis and reporting.

Other projects I was involved in included maintenance and extended development of internal company applications (both web and desktop-based) to support the Accounting/Financial, Account Management and Operations departments.

Senior Developer at PWG Computer Software UK Ltd (t/a Jupiter IT)

May 2000 - January 2002

As senior developer at Jupiter IT, my role involved team and project leadership through full life-cycle analysis, design, and development of 4 separate custom multi-user desktop applications sold by the company.

Each application consisted of an MS Access or MS SQL Server back-end database, a business layer component and separate GUI, developed in VB6. The software typically targeted niche management markets (i.e. Domiciliary Care, Film Location Management etc).

Towards the end of my tenure, I was instrumental in evaluating the .NET platform as a possible migration path for the company's many products.

Technical Support / Developer at Datafile Software Ltd

August 1995 - May 2000 | http://www.datafile.co.uk/

My role at Datafile Software initially involved providing technical and applications support on DOS, Windows, Networking and the company's own proprietary software to authorised resellers, however, the role quickly became one in which I was responsible, through full life cycle, for the development and maintenance of a company website, Intranet and various internal applications using VB5/6, "Classic" ASP and MS Access.

Professional Certifications

EPiServer Certified Developer

2016 - Present

Microsoft Specialist: Implementing Microsoft Azure Infrastructure Solutions

2014 - Present

Microsoft Certified Solutions Developer: Application Lifecycle Management

2014 - Present

Microsoft Certified Solutions Developer: Web Applications

2013 - Present

Microsoft Specialist: Programming in HTML5 with JavaScript and CSS3

2013 - Present

Microsoft Certified Professional Developer - SharePoint Developer 2010

2012 - Present

Microsoft Certified Technical Specialist - SharePoint 2010 Application Development

2011 - Present

Education / Qualifications

University of Manchester Institute of Science and Technology (UMIST)

1992 - 1995

Bachelor of Science (BSc), Computation

Gained computer science degree covering core computer science concepts, programming languages, software development and core business skills.

Open Source

StampVer

https://github.com/craigtp/StampVer

A small command-line utility that will iterate through all of the AssemblyInfo.cs files (or other specified files) below the current folder and update the AssemblyVersion and AssemblyFileVersion attributes with a version compliant with Semantic Versioning.

Profiles