The Weeknotes where I try to explain the Beauty of Coding

It’s the end of May, in more than one way. I’m a whole new decade and have the scars to prove it. We’re running out of time, and out of Eurovision votes. It must be the moment for some weeknotes.

My name’s Graham and I’m a tech lead. I’m vaguely on Twitter and other spaces. Let’s get on with it, shall we?

A sign for a Polling Station, plus cake.

ONE. The beauty of coding.

Coding is one thing. Software design is another. Software design is all about going beyond just making the computer do things – it is about making your code into something “assembled”, usable by both yourself and others, a collection of logic organised to make sense, and from there, to be a joy to build on top of.

I had lost sight of this a little, in the continual travelator of life. But this week we had some opportunity to revise our (working) code for a little while. I looked through a new object that Hon Mond had put together (we make sure code is reviewed) and that he was writing tests for (we write unit tests – usually). If already altered some code to be slightly more testable, but making it more testable threw up some interesting conversation – what’s best for testing isn’t always the best design.

Design for what though? For whom? Software design, I think, comes down to two questions:

  1. Can other developers pick up and use the code easily from an external perspective, even joyfully, as with users picking up a service interface?

  2. Does the internal structure of the code allow it to be extended quickly, understood and adjusted easily?

The hard thing about software design is that it’s often akin to strategic thinking; When designing one object for re-use amid a network of other objects, all vying to do similar things, deciding what the object won’t do is tough. It involves a commitment to set limits. And developers often seem to hate imposing that on their universal Turing machines.

TWO. Getting used to UX as a blocker to sign off.

Our UX processes have been evolving quite rapidly over the last few months (such I am absolutely loving – it feels like a certain passion in some of the team members has exploded.) There are, of course, knock-on effects from this which are good, but take a moment to get used to.

This week, I really wanted to close up some tasks which are hanging around from last sprint (we run fortnightly sprint cycles). Actually, some of it was the same code as mentioned above. The code was working, and we’d had to omit some functionality we’d have loved, but what we had seemed to tick enough boxes for now. So I’d decided, in my head (and sort of in the sprint meeting too), to commit to closing them by end of Friday.

During Friday afternoon’s testing, we hit a performance issue with the functionality at larger scales. It was taking too long to respond to the user in some situations. For clarity, Scale is a bugger – you can generally guess that things will suffer as usage goes up, but it’s hard to say how (Linearly? Exponentially? Or will economies of scale kick in?) or at which point it will Actually Become A Problem.

(Side note: I love investigating and fixing scaling issues, but I hate trying to explain or estimate solutions for them.)

So at 4.50pm on Friday, we gathered around a Skype call on John’s phone, and 4 of us agreed it was a blocker to release and that some further work would have to be done on it next week. I felt slightly frustrated, but as John noted, it’s actually great that Flo (on the other end of the skypaphone) was able to stand in as the voice of the user, and prevent this from being accepted. Previously – as I was tempted to do – we might have said “it’s an edge case” and write it off to come back to later.

But we didn’t. And when I realised that was a shift in the right direction, it actually became a moment of pride, rather than disappointment.

Go team.

THREE. Taking some time off.

So I wasn’t really sure what I wanted for my birthday this year. Well, apart from solar panels, natch.

40 is a big number, where you start thinking about death instead of birth, where there’s not one but two generations beneath you, and often the same above. Dan Barrett put it very well:

In my 30s I was bowled over when I realised that being a grown up isn’t a thing and it felt profound but I reckon the realisation in my 40s that everybody’s barely holding it together is a bigger deal. Hugs everybody 🤗

For me, a passage from The Erstwhile also hints at the sense of a change in direction:

The water, the millions of tons of it, was stationary like a millpond. … But the stillness of the water became a secondary feature to the movement of the snow. It fell straight down into its own reflection

So it’s been a while since I took a proper look at myself. About 10 years ago I went on a tai chi and meditation retreat for a week, and I wanted to do something similar again. But school runs and parenting, etc. So I’ve decided to take 2 weeks unpaid leave off in June, and intend to use it to “re-ground” myself – to just stop and reconnect with why I do my job.

It sounds like a midlife crisis. Maybe it is. But I also know I chose to do the job I do because I care about it, and nothing’s going to change that. I want to think through how I do it though – what’s really important to running a team and a company and the state of data and power in the world. Ideas are already gathering.

I may even try to skip up to London during that time, so drop me a line if you’ve read this far and might be around (or down on the south east coast).

It would be good to explore.

Other places

Til anon. Wait, is that how “anon” works?

A large Elvis mirror picked up from the street for my birthday
Thanks for the birthday present, team.

One Reply to “The Weeknotes where I try to explain the Beauty of Coding”

  1. These are lovely and a good reminder for me to be more thoughtful about what my code needs to not do. I shall be in the London and would welcome a chance for a bite to eat and a chat. I think the last time we spoke properly was a couple of GovCamps ago

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.