Hi, I’m Chris.
Since 1983 I’ve had a fascination with computers and writing computer software. I first encountered a computer in my final year of primary school when out classroom got the first BBC Micro in the school. My teacher also introduced me to the Commodore VIC-20 and I persuaded my parents to purchase one for me fore Christmas that year. I started out teaching myself BASIC and then Machine Code, writing a mix of games and useful utility programs.
Fast forward 8 years in which I’d had access to and created software and games for the Amstrad CPC464, AppleII and Commodore Amiga in both BASIC and C. It was then time to head off to University to study for a BSc (Hons) in Computer Science.
Since graduating I’ve worked in a large range of business domains, including:
My primary area of expertise is building large-scale, distributed solutions. In fact, almost eveey project I’ve worked on has been either a distributed system, something that needed to function at high volume, or both.
My primary development platform has always been the JVM, which I started using in 1996 after receiving a version Beta 3 CD on a computer magazine! On this platform I’ve developed in Java, Scala, JRuby, Groovy and Kotlin. Currently I’m using Kotlin as my primary development language. However, my list of programming languages is long:
I’ve been a proponent of automated testing, plus iterative and incremental development since the late 1990s. Much of my early thinking was shaped by the seminal Extreme Programming Explained: Embrace Change book, published in 2000.
I practice all of the important engineering approaches to testing: test-driven development, specification by example and so forth. I’m also very much a proponent of the practices of Continuous Integration and Continuous Delivery.
Since 2001 I’ve been following agile development practices such as feature driven development, user stories and iterative and incremental development. For me agile is less about sprints, story points and ceremonies and more about delivering working software frequently in order to experiment, learn and get feedback as early in the development cycle as possible.
I currently work for Crown Agents Bank where our business goal is “Moving money where it’s needed”. I am part of an amazing, high performing engineering team who build high volume payment systems using modern software engineering principles and practices.
Outside of software engineering I have the following interests:
Please don’t forget my older blog, which you can find at So, you want to write software?