Semi-coherant ramblings about cool tech stuff

View project on GitHub
By Tristan Rhodes Posted 19 May 2016

Maturity Levels

Maturity Levels

Brief

Last year at Ve, we embarked on a massive code restructuring from a monolith TFS repository to granular Git repos, and a migration from fixed data centre infrastructure to cloud (at the same time…). This worked well in terms of enabling us to scale the company, and we now find ourselves with a large number of teams, working on an even larger number of projects.

The distribution of projects is not even, some teams will have one project with the sole objective of maintaining high velocity throughput, others will work on multiple projects where the focus is on delivering new UI features rapidly, and still others work on multiple API projects which are focused on coordinated releases and avoiding breaking changes.

This breakup has highlighted the broad spectrum of quality across projects, and we needed a way of grading our projects so we could better channel effort into improving processes, infrastructure and automation where it would be most effective. To this end, we created a number of maturity level categories each project would be graded against. The three categories are:

In this post I’m going to go over what the different levels are for maturity, and what is involved in reaching them.

Environment Maturity

Environment maturity covers the quality of infrastructure and the level of automation in place. At the lowest level, we have a physical box and with manual setup and install required, going all the way to fully automated Infrastructure As Code deployments with elastic scaling and intelligent failure management.

Environment Maturity Levels

Deployment Maturity

Deployment maturity is, at least for me, the most exciting one. As a developer, I love writing code, but code on its own is useless without a delivery mechanism (oh and storage / data, but whatever :) ). So Deployment maturity is all about being able to ship code that you trust is robust to production in the shortest period of time, with the minimum amount of disruption. This is really about driving the DevOps culture into teams and getting everyone on-board with looking after their own deployment pipelines and systems monitoring. (I may spend too much time looking at the pretty graphs that tell me our app is not broken.)

Deployment Maturity Levels

QA Maturity

QA maturity covers the quality of testing and test infrastructure. This ranges from no testing, through manual testing, unit and integration testing, all the way up to full test automation with performance and penetration testing as part of our deployment pipeline.

QA Maturity Levels

Wrap up

That’s how we rate our projects at Ve. Some projects are still very much a work in progress and slowly climbing the maturity levels, others are pretty much the top of the scale, as is expected in any large company.

So if that sounds interesting, and:

Then drop us a line, we are hiring.

Credits

Images credit: Credit to Simon Larkin for the maturity level overview and images.

Photo credit: karmabomb1 via Foter.com / CC BY-NC-ND

Tristan Rhodes
Tristan Rhodes