Skip to main content


Solving technical debt - Aligning the direction

The first step to solving technical debt has to be for the business and technical teams to have a common, agreed direction for the product(s). To determine the right direction, the team will need a 'map' - this is generally the company vision, which should come from the senior management team/board.Only with a clear direction to measure their progress against, can they be sure that they're all aligned and how far along the path they are. Sure, 'Widget ABC' or 'Product XYZ' might contain lots of technical debt, but with an agreed direction, everyone can identify whether the time spent resolving any debt in a particular area takes them down the right path, or that they should concentrate their efforts elsewhere.Ask any business (involved in software product development) to list their biggest problems; not having enough capacity to get everything done will probably be right up there. Ask any technical team to list their biggest problems and they'll proba…
Recent posts

Building a personal website

I've picked up my own .dev domain and have set up a very basic website at: The site is hosted in Azure and I've set up continous integration/deployment up in DevOps pipelines. As well as scratching that itch of creating my own website, something I've been talking about for a while, it will allow me to learn more about various Azure technologies. This is part of my plan to look into becoming a certified Azure Architect.I'm not sure how long I'll be able to keep the site up and running because it's currently using the free first month, to have both custom domains and SSL certificates you need to use a production instance of a web application, which costs at least £50 per month. It will be a good experiment for a while but won't be able to justify that cost on-going. Hopefully I'll either find a cheaper way of hosting it or a way to make it pay for itself.

First Speaking Gig

Last week, Wednesday 20th Feb, I presented at the Brighton Web Development Meet-up. My talk was an introduction on using Selenium WeDriver, starting out with the basics, leading into introducing the page object model and finishing with an example on how to use a single suite of tests on multiple websites. The demo code and slide deck can be found on my GitHub account. The room was pretty packed with about 25-30 people and a 50/50 mix of developers/testers. I was quite pleased that I didn't lose anyone as the demos are very C# heavy and only a handful of the attendees had .NET experience.Previously I have presented a 15 minute lightning talk at a development show and tell evening (video here) but this was the first time I've presented a proper talk for an evening - it's a shame that the presentation wasn't recorded as it would have been good to see the difference between the two. A lot has changed over the past 8 years and I think I've built more confidence, i…

Review of 2018 / Looking forward to 2019

Wow - looking back over my posts, my last review of the year was in 2013. Interestingly it feels like I've just had a very similar year and I'm feeling excited about 2019, the same way that I was for 2014!During the course of 2018 I've had 4 roles in 3 different companies - no wonder it feels like a long year!!! Over the past 5 years, the role I started back in 2013 had grown and changed beyond recognition through several acquisitions. Whilst I'd been looking around for a while, a role change at the beginning of the year highlighted that it was time to move on. Unbeknown to me, the company joined over the summer was undergoing some quite large organisational changes itself whilst I was working out my notice. As a result of those changes I joined a role that really didn't bare much resememblence to what I was expecting. As luck would have it, catching up with a former manager resulted in my current role, which I'm now 2 months into.I've joined an Europe…

Problem installing AWS CLI

It never feels like a good start when you're trying to start out with something and the install fails with an obscure error! I was just trying to install the Amazon CLI following the instructions at and ran into the following error when running 'pip install awscli': Collecting awscli Could not find a version that satisfies the requirement awscli (from versions: ) No matching distribution found for awscli I appeared to have a correct version of Python installed (v2.7) and checking "PIP -v" indicated that 9.0.1 was installed. That all seemed to tick the required boxes but digging around a little more I did see that some people had had issues with various versions of PIP so I found / ran the following to upgrade to the latest vesion: curl -o python This installed v9.0.3 of PIP which burst into life when I re-ran 'pip install awscli' and everything seems to be ok. Like…

The 'Rewrite' vs the 'Refactor'

Sometimes you will come across a codebase / application that looks in such a mess or so old that the only option is to do a full rewrite. The code is horrible and out of date, it's using an old version of a language / framework and everyone has forgotten how it works. Everyone agrees, it will be much faster to just throw it away and start again.This seems to be how so many software projects start. Over my career I know that I've been heard to say those very things myself. It's seductive, we all love a nice green field project and the big rewrite is the easiest way to turn a boring, difficult brown field project into something everyone wants to work on.The hard truth is that I can only think of one (smallish) rewrite that I've worked on that could be classed as success and that company is no longer around (but I don't think the two things were related). More often than not, after we've finished the project (late, normally very late) our first thoughts are &…

Starting out with Kotlin and Android Architecture Components

Just recently I've been to a few talks about Kotlin and been reading up about Android Architectural Components. I've also had an idea for a really basic app playing around in my mind for a while, so it seems a perfect opportunity to kill two birds with one stone. I've already had a play with LiveData / ViewModel, updating the Big Nerd Ranch Quiz, which went really well.For this project I'm also going to look at using Room for the database access and Dagger for dependency injection. Should be interesting.