Craig Wardman BSc. Hons
Software & System Architecture
I have a great understanding of software & system architectures
and their concepts and benefits. On the software architecture front, I am confortable designing and building applications with a multi-tier architecture
such as using n-tier or onion architecture. I tend to use principles of Domain Driven Design
with domain modelling, bounded contexts, repository pattern, CQRS
etc. using SOLID principles
. In the past, when n-tier architectures
were the architecture of choice I created my own n-tier architecture
in templates using CodeSmith which generates a 4 tier C# code base. This architecture allows me to quickly start building application and presentation logic on top of my extensible business and data layers, which take care of the CRUD functionality and follows the manager pattern.
On the system architecture
front, I have designed and built large global applications by reducing the complexity into to smaller components (i.e. micro services
) by wrapping each piece of functionality in its own API which can be scaled/designed independently and then loosely integrating them into the main application (either by direct API-API calls or using event bus model). The repository pattern
also allows a layer of anti-corruption
between third party APIs and the application structure. I would also design in concepts like distributed state
for web-farm/load balanced
layers for performance
, contextually relevant storage technology and usage of cloud APIs
such as queues and web jobs for separating long running tasks.
I have been working in .NET
for several years now. I have become habituated to its methodologies and feel comfortable developing any application. I have developed both desktop
and web based applications
, using the C#
language. In my latest projects I have been using asynchronous programming
to make best use of resources and plug into the asynchronous versions of SDKs which are now the preferred choice for optimal performance
I have used Azure
platform to design, develop and manage a PaaS cloud environment, using a mixture of Azure technologies such as Azure web services, Azure Search, Redis Cache, SQL Azure, Azure Active Directory, CosmosDB, Azure Data Factory
In my career I have built many web applications
and also continue to build them in the .NET
environment, more recently in ASP.NET MVC
and front-end frameworks such as VueJS
Web services (REST/RPC/WCF)
I have used ASP.NET WebAPI
and micro service approach to create a service oriented architecture
as a way to break applications into smaller components, allowing for separation of concern and black boxing of implementation details. I do this using a mixture of RESTful
style API, depending on the context. I have used also used WCF
since I developed Silverlight
applications in the past.
I have extensive knowledge of creating and maintaining databases in Microsoft SQL Server
, including creating users, roles, tables, indexes, stored procedures and setting permissions. I have knowledge of using simple and complex SQL statements, both DDL and DML. Having been interested in the performance tuning
aspects of MS-SQL I have learned a great deal on how to optimise databases and related code.
When storing unstructured data, I have generally stored in JSON
format using CosmosDB
, Table Storage
, or SQL
to store the data.
- Microsoft Visual Studio + NuGet + Team Foundation Server/Subversion/Git
- Visual Studio Team Services, Continuous Integration, Continuous Deployment
- Microsoft IIS
- OOP (Object Oriented Programming) - SOLID principles
Feb 2018 - Present (Jet2 - Contract [extended])
Working as a contract .NET developer
to assist in the expansion of services offered through the Jet2Holidays website. Working with WebAPI microservices (C#)
, Sitecore CMS
and creating integrations with 3rd parties.
Jan 2018 - Feb 2018 (Kinetic - Contract)
Working as a contract software development consultant
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)
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 consists 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 am 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 are now using ASP.NET MVC
as our front end web technologies and using ASP.NET WebAPI
for separation of the various components in the software. We have also adopted domain driven design
techniques and it's supporting architectures (OOP, IoC, Domain Modelling, Repository Pattern
etc.) in the core code. We are also now making use of various Azure cloud services
such as blob/table/queue storage, AAD, Redis cache, Azure Search, SQL Azure
and more - all of which I am involved with from a planning/design perspective but also hands on technical perspective.
Mar 2010 - Mar 2015 (Kinetic)
I returned to Kinetic Worldwide as a senior developer
in VB and C#, building tools that are specifically aimed at our specialist OOH 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. Building the core software in c#
but now with Silverlight and WCF
July 2009 - Jan 2016 (HelpFindMeA.co.uk)
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
back-end 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: -
Since my graduation in 2005, I have worked in various roles as a software/web developer 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. During this time I built on my University degree foundation of knowledge to become a more proficient coder, finessing my architectural approach to creating pragmatic software solutions.
2004 - 2005:
2002 - 2004:
Bradford College, Higher Education.
2000 - 2002:
Bradford College, Further Education.
1995 - 2000:
Royds Secondary School, Oulton, Leeds.
1st Class BSc (hons.)
Software Development Applications
Higher National Diploma
Information and Communication Technology (ICT)
- ISEB Intermediate Certificate in Enterprise and Solution Architecture
- City & Guilds C++ (Level 3)
- City & Guilds Java (Level 3)
- 11x GCSE's:
I have a wide variety of interests and like to continually learn about new things. Of course, I have an interest in I.T. and specifically in software, architecture and performance. Outside of I.T. subjects I like health and fitness such as weight lifting and practising Taekwondo in which I am currently 2nd Dan black belt. I am also a car and driving enthusiast, which extends from simply admiring the styling or performance of a great car, to watching Formula 1 and WRC, to improving my own skills having taken my IAM advanced driving test and participating in several track days. I also have an interest in the Russian language, which I have been learning from the Internet since 2012.
You can read more about my interests on my about me
- 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)