Software Engineering. Open to new clients
Highly experienced leading or contributing to all aspects of the SDLC whilst working with all levels of stakeholders from CTO to end-users. A track record of crafting simple working software that lasts.
Currently working on a startup as the sole
developer/CTO.
Using Nuxt (Vue, Vuex, Webpack) to present a PWA for
affiliate mobile phone deals.
Import of unstructured CSV deal data into
MongoDb.
Node
API exposes a GraphQL endpoint for the deal data.
Code is on github, hosted
on
heroku (for now) and developed using Visual Studio Code on a mac.
Worked with AirBus helping them modernise their entire
software
delivery approach.
Have helped setup Github Enterprise, Jira,
VersionOne,
Jenkins & Octopus to create a .Net CD pipeline on AWS.
Used
Docker to take an app and enable it to be tested in a CI pipeline
Part of a 4-person team who handled all aspects of software
development for a start-up including DevOps and support.
Responsible
for
the architecture and development of the API written in ES6 with Babel running
on Node using Express. Built via a fairly typical Gulp configuration but also
using
Flow. Lots of useful integration tests utilising Nock, Mocha, Supertest and
Chai.
Extracted stateless micro-services
and moved them over to AWS Lambda using the Serverless framework whilst leaving
stateful services running on Heroku with their Mongo add-in.
Front End
was
in Angular 1 but I was only involved in a React/Redux
spike for 6 months.
CI and CD via CircleCI, Heroku and AWS and the pipeline
enabled a large number of production deployments with few regressions.
Part of the Motor team working on both Greenfield and Brownfield
changes using technologies such as MVC, knockout.js, SQL Server, VB.net, Go, Jira,
Slack
and Splunk.
Paired TDD with releases into production every
few days or so.
Mentored permanent staff to try and get them into the
best
practices CTM foster resulting in high code coverage.
Helped resolve
serious compliance issues and removed a significant
amount of dead code.
Joined a new team charged with improving the website through
small features, bug fixes and increases in quality.
Was given the
role of Lead Developer ahead of longer serving permanent employees due to
my high quality focus, ability to communicate with challenging people and
demonstrable experience across the full stack.
Performed DevOps
duties
for the team to ensure quality is not sacrificed in
an aggressive weekly release cycle.
It is rewarding to see our
work in
the hands of millions of users on regular basis and giving them improvements
such
as fixing security issues, IE9 usability, making
the site available over HTTPS and performance improvements via image
compression.
An Angular SPA MVC 5 web application with
backend infrastructure, including Web API 2, architected in an onion
style.
Feature Toggling and branch by abstraction were used to
help
transition to the early stages
of a continuous delivery pipeline.
The site underwent initiatives
such as a more responsive approach and the introduction of a formal CMS.
Worked in a team of senior developers in re-platforming to a HTML
5
based editor using best practice OSS such as Bootstrap 3, JQuery, Jasmine and
Phantom.
Was given the responsibility to design, architect and lead the
Silverlight based editor despite never having worked with the
technology.
Helped with the recruitment process to build a team of
three
and we established a well-defined structured architecture using
Prism, MEF, CodedUI and AgUnit, delivering an initial version to showcase to
potential investors.
The server stack was Node.Js and MVC 5 with
Knockout and Jasmine, storage consisting of Neo4j, RavenDB
and SQL coordinated by C# and RabbitMQ.
We used SCRUM, TDD,
BDD
and pair programming to manage software in tandem with CI with Git, Team City
and
Octopus to allow the QA team to pull builds.
Employers most recent first
Quic is a dynamic and functional domain specific language
targeting
vectorised algorithms processing very large data sets distributed across a compute
grid
– in this case Microsoft High Performance Cluster. The project was
managed using elements of SCRUM such as stand ups that I introduced and
fortnightly
sprints with Test Driven Development, Continuous Integration using Bamboo and
Version
control using SubVersion. The requirement
was to translate quant derived specifications in excel into Quic Script modules
which
could be assembled at run time by a configuration mechanism.
Introduced
PowerShell to augment the development process by creating
scripts, which could be used to generate code templates and validate
configurations. The success of these expanded to encompass all aspects of the
development, deployment and execution processes.
Created
a C# 4.0 console application that used Task Parallel Library, memory mapped
files
and Map Reduce to solve processing of very large text files (GBs).
Based
on
a prototype I developed in PowerShell, I demonstrated
and got approval from the client for a visualisation project. The client reaped
benefits of visualising the model as it led to the ability to refactor the
model,
understand the complexity, data flow and allowed
lay people to understand it and became the de-facto representation.
I was
personally asked to return by the client, this time as a Developer/Architect to
join a team of two to assist them with the Service
Oriented Architecture and design of a set of RESTful services to abstract the
scheduling and management of long duration model runs.
The implementation
technologies were WCF C# 4.0, SQL Server 2008 via Entity Framework
all backed by TFS. I managed the transition to TFS and setup the
entire
development
process, tooling, best practices (such as Continuous Integration) and standards
before helping to deliver the framework. I designed and
developed the most complex service, which was to abstract the
compute infrastructure and scheduling aspects. It was robust and successful
enough
that it is being rolled out to other departments. We started using
an Agile TDD approach but later retrofitted a Behaviour Driven approach using
SpecFlow as we felt the lack of requirements was too risky.
I later
also
worked on enhancing some GUIs built using WPF
and a lighter MVVM framework. I championed automated testing to the point where
we
could, as part of a TFS MSBuild process, test all tiers of the services, which
were
auto-deployed via WIX packages, and issue
a model run onto the compute infrastructure.
I was promoted to Technical Lead after six weeks after
demonstrating
drive in our task to take over from the experienced contractors whilst not slowing
the
delivery.
The project design was mostly complete but priorities
were constantly changing, as the business did not understand the customer base. As
such,
there was constant pressure to branch the code into multiple code bases but I
resisted
those pressures and stuck to a single code
base with optional features. The technology was ASP.Net web forms, SQL Server 2005,
VB.Net and C#. Net 2.0, TFS 2005 all following a waterfall approach. We had
dependencies
on Web Services created by the Canadian team,
which turned out to be full of anti-patterns and not production ready. It was a key
part
of the business process as it interfaced with the card processor itself. I proposed
replacing it with legacy VB.Net DLLs but this
only got approval if time scales were not to be impacted.
Planned and
lead
an overnight deployment as we had a few live customers. It was a success and without
it,
the product would not have been able to scale
to supporting over 50 customers and had the lowest incident rate of any application
in
the organisation.
Due to the proud success of taking and leading a
project
without proper requirements into production
and beyond, my talents were recognised and success rewarded by promotion to
Application
Architect and Microsoft Practice Lead.
Together with another Architect,
I
conceived, promoted, documented and implemented
a Microsoft practice based around TFS and the SCRUM template. The architecture was a
best of breed utilising SOLID, MVC, TDD and Open Source Software such as RhinoMocks
and
StructureMap. Along with the leading enhancements
to the B2B site, I was given the lead role for a Real Time exchange rate
optimisation
application with a MVC front end for another division. I used MSMQ to broker between
the
Reuters rate feed and the user defined watch
windows. The project was the most challenging project I have worked on because the
team
was mostly part time and very junior and no additional training time was allocated.
The
same person fulfilled the project manager and
business analyst roles despite no prior experience. Despite these immense
challenges, we
delivered the system into production and saved the division a significant sum. The
architecture and delivery pipeline has since been
used to build other applications.
This role required recruitment, man
management, planning, appraisals and 360 reviews.
Helped increase throughput of a Web MVC application by 20% by
carrying out Load Testing
Development and Load Testing of a high throughput
web
based intranet balance sheet reconciliation application. Written in the MVC
style using Castle Monorail and a rich client side Web 2.0 based UI
Headhunted by a previous Project Manager to form the core of a
new
team entrusted with a radical overhaul of existing off-shore
development
Installed, configured and evaluated CI platforms for the company
and
selected
Cruise Control which helped to radically alter the development
eco-system
Design and development of a Greenfield ASP.Net web forms
intranet application using CSLA which we extended to include NHibernate to
form a database neutral product framework with entities code generated using custom
CodeSmith templates
Design and development of a Greenfield ASP.Net SOAP Web
Service
Design and development of a Greenfield
Outlook COM add-in to integrated with the above Web Service to allow bookings with
in
outlook
Design and development of a Greenfield COM callable wrapper to enable
customization of till receipts from an EPOS system.
Written using plug-in and chain of responsibility patterns
Joined the graduate program
Rapid salary growth ensued as
my
natural software engineering instincts were rewarded in reviews such that I started
as a
support engineer and left whilst in the development team
Overtook
and became the senior member in a small team
Optimised a manual and
document
centric process by introducing templates and scripting deployments
Support
and
enhancement of a Brownfield Pensions illustration
system for Prudential written in an in-house 4GL employing Oracle and Crystal
Reports.
The complex calculations were serviced by a VB6 MTS server wrapping a C++ quotation
engine in partnership with a Java bulk quotation
server
Development of a win forms Composite Application Block award winning
interface
for Forrester Life