Blog

My Home Office Setup

8 mins

I have been iterating on my home office setup for a while now. This post describes my current setup as we reach the end of 2024.

This photo shows my current setup.

My home office setup as described in this post

Monitor: Samsung Odyssey G9

I have tried several monitor setups—two landscape; one landscape and one portrait; various 27” and 32” combos, a ‘mini’ ultrawide, and finally (for now!) a proper ultrawide, curved screen.

Interviewing for Evidence

8 mins

One area where companies struggle is recruiting good people. I see enormous variability in quality and style of interviewing. This is something I care about, having spent nearly a decade working with some amazing recruiters at a global technology consultancy, and variously as an employee, contractor and independent consultant in many organisations.

Using Hugo as a redirect service

4 mins

I have been building my website with Hugo since early 2021. I love the control it gives me. I recently wanted to start using short URLs in presentations, that would link to either a longer URL on the website or to somewhere else altogether.

It turns out Hugo makes this easy but not entirely obvious, so I thought I would write it up.

McKinsey Developer Productivity Review

17 mins

McKinsey recently published an article claiming they can measure developer productivity. This has provoked something of a backlash from some prominent software people, but I have not seen anyone engage with the content of the article itself, so I thought this would be useful.

I am writing this as though the authors have approached me for a technical review of their article. You can think of it as an open letter.

Advice to a New Speaker

4 mins

I found myself offering advice to someone recently who was giving her first technical talk, at an internal conference, that happened to be about a topic of mine. We agreed that I should share my answers with a wider audience, in case someone else finds them useful.

Seek First to Understand

5 mins

Whenever I arrive in a new context—a new client engagement or a new team in an ongoing gig—I seem to arrive right in the middle of something. A significant planning event, a technical design session for a major component, implementing a new productivity tool.

Phew, it looks like I am just in time! A few days later and they would have totally messed up that quarterly plan. They are going to use what technology to solve that? So much to do, so little time! It is fixable, but only if everyone stops what they are doing and listens to me right now!

Or maybe not. I want to share a couple of techniques that I have adopted over the years that have helped me to resist the urge to Fix All The Things.

But what about the BAU work?

10 mins

When you make all the work explicit, you get fewer surprises.

When people work in product-based teams, the product development work is front and centre. It is easy to see how this work adds value and where it should live. Less obvious is where the day-to-day “Business As Usual” work sits, how it gets prioritised and measured, and how to ensure it is not neglected.

I like to make this kind of work explicit, as one of several types of demand. Making all the work visible means we can measure our real capacity and prioritise for changing business needs, rather than having “ghost” work hiding in the system.

A bad (computer) system will beat a good person every time

16 mins

This is a story about amazing customer service being undermined by poor software, in the form of simplistic business rules and fragile systems. I am telling it because I made a promise to someone who features prominently in the story, and whose manager should be aware just how fantastic their staff are, and just how much their poorly designed computer systems and cost-cutting are letting their company down.

CUPID—for joyful coding

25 mins

What started as lighthearted iconoclasm, poking at the bear of SOLID, has developed into something more concrete and tangible. If I do not think the SOLID principles are useful these days, then what would I replace them with? Can any set of principles hold for all software? What do we even mean by principles?

We need to talk about testing

19 mins

Or how programmers and testers can work together for a happy and fulfilling life.

Why don’t we just automate all the testing? Is test coverage a useful metric? What does it mean to “shift testing left”? When and where should we be testing? How much is enough testing?

CUPID—the back story

10 mins

“If you had to offer some principles for modern software development, which would you choose?”

At a recent Extreme Tuesday Club (XTC) virtual meet-up, we were discussing whether the SOLID principles are outdated. A while ago I gave a tongue-in-cheek talk on the topic, so ahead of the meet-up one of the organisers asked what principles I would replace SOLID with since I disagreed with them. I have been thinking about this for some time and I proposed five of my own, which form the acronym CUPID.

The mystery of the missing date

9 mins

My friend Gojko Adzic has been running a series of BDD quizzes illustrating different ways to approach some interesting BDD situations. I noticed on Twitter that Seb Rose, another BDDer (Cucumberer?), had gently taken issue with one of Gokjo’s solutions so I thought I’d take a look at them both. Before reading on I recommend reading Gojko’s solution and Seb’s response for context.

Better Best Practices

16 mins

Organisations often introduce Best Practices as part of a change program or quality initiative. These can take a number of forms, from “cook books” and cheat sheets to full-blown consultant-led methodologies, complete with the requisite auditing and accreditation.

This article introduces the Dreyfus learning model to challenge the strategy of naively applying Best Practices, and shows how they can not only fail to help, but even have a severe negative impact on your top performers.