Curriculum Vitae

Personal Details

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

Work Experience

Feb 2015 - Current

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 technology and using ASP.NET WebAPI for seperation 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:

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

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.

July 2008 – Mar 2010: -

During this period I was working at WMG as a software developer, mainly building web based applications for external clients using ASP.NET 3.5 (VB and C#). Since joining WMG I have learned a lot about applying software development techniques in various real world scenarios, speeding up the development process using a code generator, as well as learning lots about the world of SEO and how it can be applied in ASP.NET development. I have progressed my n-tier architecture into a very robust, scalable and customisable code base which I have written in C# - this is now available on GitHub. I have worked more and more with the new features of .NET 3.5 such as extension methods and LINQ. I have worked on several large complex projects for external clients with several integrations, as well as building internal tools such as a desktop timesheets system and a system to mange HR. In addition to this I worked on a project of my own, HelpFindMeA.co.uk, as developer/IT Director; building the site, database and backend services.

Mar 2007 – July 2008: -

At Kinetic Worldwide I worked primarily in ASP.NET/VB.NET, building web based applications, services and occasionally desktop applications. I was responsible for my own projects, managing timescales, liaising with staff, designing and building solutions for in-house needs. Initially I did my development in Visual Studio 2005 (using .NET framework 2.0, AJAX Extensions and ASMX web services), but then moved onto working in Visual Studio 2008 (.NET 3.5, ASP.NET AJAX, WCF services). I started to build my applications using ‘n-tier architecture’ and so gained experience designing and building modularised, scalable applications which provided segregated code for data access, business logic and user interface functionality. I also gained more experience designing and building relational database back-ends for my applications, which I built using SQL Server 2005.

Sep 2005 – Mar 2007: -

While working at Adtec I mainly worked with a database/RAD development environment called Equinox (by Compsoft). This meant learning a new language (the in-built ‘Equinox scripting language’. On a day to day basis the majority of my work involved writing imports/exports for various file formats including CSV, XML, fixed length etc. It was in my time at Adtec that I was also first introduced to development with VB.NET. As the company required new products which were better suited to an SQL backend, I was given the chance to learn and then use my .NET development skills to build a bespoke client/server archiving and data mining tool. As my role at Adtec was more database oriented I learnt a lot about designing relational and hierarchical databases and got a lot of hands on experience using SQL Server 2000/2005 in creating and managing databases and performance tweaks such as creating indexes.

Key Skills

.NET

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 using asychronous programming to make best use of resources and plug into the asynchronous versions of APIs which are now the preferred choice for optimal performance.

Software & System Architecture

I have a great understanding of software & system architectures and their concepts and benefits. On the software architecture front, most applications warrant at least a multi-tier architecture to seperate the concerns of data access, business logic and user interface. This is usually suffice from small CRUD type applications but for larger applications I tend to use the DDD onion architecture with domain modelling, bounded contexts, repository pattern, CQRS etc. This makes for a great seperation of domain logic from technical implementation details and protects the domain from being in an invalid state. It also lends itself nicely to TDD techniques since it promotes IoC and SOLID principles. In the past, when n-tier archictures were the architecture of choice I created my own n-tier architecture in templates using CodeSmith which generates a 4 tier C# codebase. 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 design larger applications as smaller API based components, corresponding to the bounded context or product boundary to wrap each peice of functionality in its own API and then loosely integrate it into the main application. 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'ability, caching layers for performance, contextually relevent storage technology and usage of cloud APIs such as queues and web jobs for seperating long running tasks.

SOA/Web services (WCF/REST/RPC API)

I have used service oriented architecture for quite some time, to a degree, since I developed Silverlight applications in the past which ran against a set of WCF services. More recently I use SOA as a way to break applications into smaller WebAPIs allowing for seperation of concern and black boxing of implementation details. I do this using a mixture of RESTful and RPC style API, depending on the context.

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 optimizate databases and related code.

NoSQL

Part of the benefit of DDD approach of persistance unawareness is the reduced need for structured data when it not required to be structured. I have generally stored unstructured data in JSON format, using CosmosDB, Table Storage, or SQL to store the data.

Web Development

In my career I have built many website applications and also continue to build them in the .NET environment, more recently in ASP.NET MVC. I have a working knowledge of HTML/CSS/JavaScript and some front-end frameworks such as jQuery & Bootstrap, but in general I would consider myself a back-end developer.

Misc

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 practicing 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