Avatar

Curriculum Vitae

Download PDF

Personal Details

Name: Craig Wardman (BSc. Hons)
Nationality: British
Location: West Yorkshire

 

Synopsis

Over 18 years of commercial development experience, with expertise across the entire development lifecycle, including:

  
BackendC#/dotnet, APIs, domain modelling, SOLID, OOP, BDD, TDD, performance optimisation.
FrontendNext.js, React, Edge APIs, JavaScript/TypeScript, Node.js, authentication.
CI/CDBuild pipelines, test automation, release pipelines, GitOps/DevOps, IaC.
CloudAzure, AWS, serverless functions, Kubernetes, NoSQL, Kafka, Event Grid, SNS/SQS.
ArchitectureSystem design, micro services, event driven, documentation as code, C4, PlantUML.

I really care about delivering great software and thrive on doing everything I can to facilitate a successful delivery.

 

Key Skills

Software & System Architecture

I have a great understanding of software & system architectures and their concepts and benefits, at a technology agnostic level. This allows me to design elegant solutions using known technologies and to quickly pick up new paradigms as technologies/implementations evolve.

In terms of software architecture, I am comfortable designing and building applications using multi-tier architectures such as n-tier or onion architecture. I work with “clean code” in mind to create testable/reusable/maintainable code, employing the techniques of OOP & SOLID principles and applying design patterns to solve problems in familiar ways. I frequently use the principles of Domain Driven Design such as domain modelling, bounded contexts, repository pattern, CQRS etc.

In terms of system architecture, I have designed and built large multifaceted applications by employing the use of both distributed microservice & event driven architectures; considering the blend of on-prem, cloud and containerized infrastructure.

.NET

I have been working in .NET for pretty much my entire career, starting with .NET Framework, then .NET Core and now keeping up to date with the latest .NET releases. Writing C# within the Microsoft development stack is my natural habitat and is where I can really excel with my approach to problem solving, whilst reflexively adhering to clean coding standards and implementing elegant software architectures.

I also have a lot of experience in optimizing and performance tuning code, where performance is a necessity (such as: carefully choosing/refining algorithms, using dotTrace to inspect code performance, using parallel code/threading/AKKA.NET and using asynchronous programming).

Full Stack Web Development

Aside from building back-end APIs (RESTful and RPC), I am also comfortable building responsive and dynamic web applications using Node.js based technologies. In particular focussing on Next.js/React but also with experience using other front-end frameworks and libraries such as Vue.js, Tailwind and Bootstrap. I have built web applications using JavaScript & TypeScript using with modern design patterns and including writing unit tests (e.g. Jest) and UI automation tests (e.g. Cypress).

Cloud / Containers / Serverless

I have worked with both Azure and AWS products to design, develop and deploy cloud based software solutions using PaaS technologies including web applications, serverless functions (Lambda / Azure Functions), SQL/NoSQL based storage (CosmosDB/MongoDB/DocumentDB/Azure SQL), eventing systems (EventGrid, EventBridge, SNS/SQS, Kafka) and more. I have also used Docker and Kubernetes to create and deploy containerized applications, both on-prem and into cloud hosted Kubernetes clusters (AKS/EKS).

CI/CD & Testing

I strive to uphold the best software quality and streamlined code delivery processes whenever possible, such as writing and maintaining unit and integration test suites (e.g. using NUnit, Jest, SpecFlow, Cucumber.js, Cypress) as well as incorporating those tests and their metrics into automated build and release pipelines (e.g. generating test results and coverage reports on pull request and adding quality gates and PR policies).

I have worked with Azure/GitLab/GitHub YAML pipelines to create build and release processes which allow for GitOps or DevOps style management of environments (e.g. infrastructure as code) and application deployments, using tools such as Helm and Terraform as well as provider specific CLI tools and Bash.

SQL / NoSQL

I have been using relational databases since I was at university and have designed and built many SQL Server based solutions, including normalisation processes, ORM integration, defining and creating indexes, stored procedures and performance optimization etc.

I have also used several different technologies for storing non-relational, key/value, or document based, data such as CosmosDB, Redis, Kafka, Elastic etc. using JSON, ProtoBuf, Avro etc.

Misc

  • Developer tooling - Visual Studio, Rider, VS Code, NPM, NuGet, Azure DevOps/Git etc.
  • Agile methodologies - SCRUM, Kanban etc.
  • Automated testing - Unit testing, SpecFlow etc.
  • Personal skills – mentoring, collaboration, problem solving.
  • Operating systems – Windows, Linux

 

Experience

Jan 2018 – Present (Software Development Consultant / MD at Pragmatech Software Solutions)

In 2018 I founded Pragmatech Software Solutions Ltd – providing contract and freelance based software development consulting. Below shows the details of some of the projects I’ve been involved with in this capacity:

    PSS – Testimonial-Hub.com (Feb 2023 - Present)

    As part of my expansion of services available through Pragmatech, I have created a B2B SaaS offering that enables businesses to easily capture and showcase their customer testimonials online.

    The platform is built using Next.js with SSR for the React web UI and for the provision of edge API services. The site uses a custom passwordless authentication system built with next-auth and incorporates the usual GDPR compliance, such as cookie and marketing consent management. The back-end is built using .NET 7 APIs together with Azure Functions using Azure Event Grid and Mongo/CosmosDB for data storage and communication. The site is deployed on Azure using Azure Web Apps and uses public/private VNETs to protect against unauthorised access to data.

    The platform includes several external integrations, such as Brevo CRM, Stripe, SendGrid and Google Analytics.

    Jet2 – "MyJet2" – Contract [extended] (Jan 2022 – Dec 2023)

    Played a key role in the design and build of the new “myJet2” single customer account platform.

    Starting in the very early phases of the project I collaborated with the Jet2 technical team and business analysts to define the overall architecture and tech stack that would best serve their objectives.

    During the POC phase, I led efforts to scaffold out the new solution which incorporated Next.js, Headless Sitecore, OIDC authentication (through a 3rd party CIAM integration) and several .NET 7 APIs. This foundational work established both the codebase and effective working practices.

    As the project progressed I continued to provide coding expertise, architecture guidance and mentoring to facilitate the design and development of a cohesive platform, extending to several other existing systems and mobile app.

    A secondary objective of the project was to move into Azure cloud hosting, so I was closely involved with the cloud and platform teams to establish a working deployment for the new tech stack and to lay the foundation for further cloud migrations.

    Morses Club – "Connect" – Contract [extended] (July 2021 – Dec 2021)

    Designed and built a suite of cloud based APIs to facilitate their new back-end system and updated business processes. Using .NET 5/6 and AWS cloud infrastructure to support a React Native mobile app, using an event driven microservice architecture. I also worked alongside the platform operations manager to design and build a GitOps workflow using GitLab, Terraform and Helm.

    Shelby Finance – "LMP" – Contract [extended] (Apr 2020 – July 2021)

    Facilitated the client's on-boarding of a new back end loan management platform and re-writing of their customer facing website. The first part of the project was to understand the current systems and new business requirements to help to design an architecture which would cater to the new requirements with minimal disruption to the live systems and to create a layer of abstraction between the back end and front end systems for future proofing.

    Based on these designs I then provided C# software development services using ASP.NET Core and SQL to deliver the “middle-tier” APIs necessary to accomplish the desired result as well as providing support in the go-live/migration process.

    Jet2Holidays – "Search" – Contract [extended] (Feb 2018 – Mar 2020)

    Software developer working on the e-commerce platform behind the Jet2Holidays website, using ASP.NET WebAPI (C#), Sitecore CMS and Vue.js. One of the more involved pieces during this time was working on a new high performance accommodation search and pricing engine using .NET Core, Kafka, AKKA.NET, Docker and Kubernetes I helped to create an event driven micro service with complex real-time pricing algorithms with a strong emphasis on performance and accuracy. I also helped to establish a build/deployment pipeline capable of delivering .NET containers to Kubernetes environments using TFS, Docker and Helm.

    Kinetic – Aureus – Contract (Jan 2018 – Feb 2018)

    Providing help, support and guidance to the new development team of Kinetic's flagship "Aureus" product. This is a large Microsoft stack Azure based project with many components, which I designed and built while working for Kinetic. I was offered a short term contract to help mitigate the risk of outsourcing the project, by providing my expertise and knowledge of the system.

Feb 2015 – Dec 2017 (Kinetic) - Solution Architect & Development Lead

In February 2015 I was promoted within Kinetic to Solution Architect and Development Lead. Continuing my work as a developer but now also leading the development team tactically and operationally. My role consisted of such things as defining standards and practices, following the Agile methodology, source control management, setting up of CI/CD pipelines, creating & managing an Azure PaaS environment and providing support to the business and colleagues. I was still involved in the implementation of the software architecture, from providing various levels of high level architecture designs to writing the code in C#. We made the transition to using ASP.NET MVC and React as our front end web technologies and using ASP.NET WebAPI microservices for separation of the various components in the software. We also adopted domain driven design techniques and it's supporting architectures (OOP, IoC, Domain Modelling, Repository Pattern etc.) in the core code. Plus the new platform which was developed under my guidance was built using Azure PaaS cloud services such as Web Apps, blob/table/queue storage, AAD, Redis cache, Azure Search, SQL Azure and more - all of which I was involved with from a planning/design perspective but also hands on technical perspective.

Mar 2010 – Mar 2015 (Kinetic) - Senior Developer

I returned to Kinetic Worldwide as a senior developer using ASP.NET in VB and C#, building tools that are specifically aimed at the specialist OOH media planning teams. During this time, amongst other things, I worked on several complex reach and frequency calculation models from different global vendors, optimising the algorithms for speed and building innovative new concepts on top of the underlying outputs. The systems I built in audience measure were industry leading at the time and won me a lot of praise within the industry. Building the core software in c# but now with Silverlight and WCF.

July 2009 – Jan 2016 (HelpFindMeA.co.uk) - Lead Developer/IT Director

Alongside my permanent employment, during this time I acted as IT Director for a company I started with 3 others. In this capacity I designed, built and maintained an online shopping portal optimised for search engine friendliness, to generate product leads for businesses and to help consumers find the best deals on products across multiple sections. Written in ASP.NET, c# n-tier architecture and MS-SQL backend with many integrations such as xml feeds with clients and 3rd party advertising channels, CAP automotive data, vrm lookup, geocoding, sagepay payments and more. Unfortunately this business did not generate enough revenue to continue and the site has now closed.

Older work experience (2005 - 2009) - Software/Web Developer

Since graduating in 2005, I worked as a software/web developer predominantly using the Microsoft development stack of .NET (ASP.NET/C#) with MS-SQL data layer - building e-commerce websites, CMS web applications and various other web based applications.

 

Education

2004 - 2005: Bradford University
2002 - 2004: Bradford College, Higher Education.
2000 - 2002: Bradford College, Further Education.
1995 - 2000: Royds Secondary School, Oulton, Leeds.

 

Qualifications

1st Class BSc (hons.)
Software Development Applications

Higher National Diploma
Software Engineering

AVCE
Information and Communication Technology (ICT)

Misc

  • ISEB Intermediate Certificate in Enterprise and Solution Architecture
  • City & Guilds C++ (Level 3)
  • City & Guilds Java (Level 3)
  • 11x GCSE's:

 

Employment History

Pragmatech Software Solutions - Software Development Consultant / MD (Jan 2018 - current)
Kinetic - Solution Architect & Development Lead (Feb 2015-Dec 2017)
Kinetic - Senior Developer (Mar 2010-Feb 2015)
WMG - Software Developer (July 2008-Mar 2010)
Kinetic - Software Developer (Mar 2007-July 2008)
Adtec Software - Software Developer (Sep 2005-Mar 2007)