Curriculum Vitae Download PDF

Personal Details

Name:
Craig Wardman BSc. Hons
DOB:
07-May-1984
Nationality:
English, British

Key Skills

Software & System Architecture

I have a great understanding of software & system architectures and their concepts and benefits. On the software architecture front, I am comfortable designing and building applications with multi-tier architectures such as n-tier or onion architecture. I tend to use principles of Domain Driven Design with domain modelling, bounded contexts, repository pattern, CQRS etc. coded using OOP SOLID principles. Several years ago, when n-tier architectures were the style of choice I created my own n-tier architecture (using CodeSmith templates) which generates a 4 tier C# code base suitable for implementing a tiered application using the manager pattern. As mentioned above, when dealing with more complex scenarios I prefer to use an onion architecture with pure domain models sitting at the centre of the application and application services and cross cutting concerns being secondary outer tiers.

On the system architecture front, I have designed and built large global applications by reducing the complexity of a system into to smaller components (i.e. micro services) integrating smaller components using pull based API calls or push based event driven systems such as using Azure Service Bus or Kafka. This approach also allows a layer of anti-corruption between third party APIs and the application structure. I have also made use of concepts such as distributed state for web-farm/load balanced scenarios, caching layers for performance, contextually relevant storage technology and usage of cloud APIs such as queues and web jobs where appropriate.

.NET

I have been working in .NET for pretty much my entire career. 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 based on both .NET Framework and .NET Core. I have a keen eye for creating optimised code where performance is a necessity, such as using asynchronous programming or writing optimized C# using tools such as dotTrace for performance analysis.

Cloud / Containers

I have used the Azure platform to design, develop and manage a large 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 and others. I have also used Docker and Kubernetes to create containerized environments deployed both on-prem and in the cloud.

Web Development

In my career I have built many web applications and APIs and also continue to build them in the .NET ecosystem using ASP.NET (Core and Framework). I have a working knowledge of HTML/CSS/JavaScript and front-end frameworks such as VueJS, jQuery & Bootstrap.

Web services

I have used ASP.NET WebAPI and micro service approach to create service oriented architectures as a way to break applications into smaller components and separate business logic from UI concerns. I do this using a mixture of RESTful and RPC style APIs, depending on the context. I have used also used WCF since I developed Silverlight applications in the past.

SQL

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.

NoSQL

Storing data in other mediums than a relational database is become more and more common practice. I have used several different technologies and serialization systems for this purpose, such as CosmosDB, Redis, Kafka etc. using JSON, ProtoBuf, Avro etc.

Misc

Work Experience

Feb 2018 - Present (Jet2 - Contract [extended])

Working as a contract .NET developer to assist in the expansion of services offered through the Jet2Holidays website based on WebAPI microservices (C#), Sitecore CMS and Vue.js. Specifically working on a new high performance search and pricing engine using .NET Core, Kafka, Docker and Kubernetes.

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 and React 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 using ASP.NET 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 and MS-SQL 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.

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

- 11x GCSE's:

Interests

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 page.

Employment History