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.

The weeknotes where I admit 1-1s are actually pretty scary

Hello, weekdiaryarchive, how are you? Are diaries even allowed to have feelings, or do they need to stay absolutely impartial and as deanthropomorphised as possible, for fear of external bias? The electronic note I’m writing this into – is it really as independent as I believe it is?

My name’s Graham and I’m a tech lead. I’m vaguely on Twitter. These are my weeknotes.

Black and white photo of plastic wrapped round a tree

In true Warren Ellis style, I am running around after headless chickens stuck in multi-pies this month. Tomorrow (written on Friday) I turn 40 (in capital numbers) which I don’t really mind at all, and to be honest the numbers don’t mean much to me, but a eurovision is on, it’s a full moon πŸŽ‘, and the opportunity to throw a party is just too obvious. So mostly my energy has been focused on playlists-from-the-ages and making shopping lists and watching the semi-finals.

I’ve been making work notes as well over the last few weeks. Here are some things that have been in my brain.

ONE. Continued thoughts on what constitutes “work” as you get more senior

Setting strategy and standing back is a strange game. Directions you set months ago can take a quarter or more to bear fruit. By then, everybody has forgotten the strategy documents and original intentions, which is why it’s so important to remind yourself of them regularly – a side effect of reviewing progress is to keep that narrative and timeline established.

Or is it? That Tao Te Ching phrase persistently comes to mind: In the end, the people say “we did it ourselves!” But perhaps this leaves the door open for a perceived imbalance of power – it’s easy to assume that Delivering is the Value. What would minimum viable management look like?

One day, maybe I’ll write a book on tai chi and leading. But for now, it chimes with the agile notion: Test, but don’t commit. Listen. Adjust. Small amendments to strategy are better than sticking oars in and rowing in a different direction every month.

TWO. Maybe I enjoy 1-1s for the discomfort?

I’ve been catching up with team 1-1s after a couple of months away from them. Mostly due to illnesses and holidays, but maybe I’m just making excuses. Still, the absence throws the experience into a stronger relief when I do get back into the habit. My own emotions stand out more. Which is to say:

  • All the leaders and literature tell you how important it is to do 1-1s on a monthly or weekly basis. Over time, I know this is true and correct.
  • But giving 1-1s is also a really scary experience for a lot of team leads. They often go against day-to-day culture, I think – either because they’re not ‘getting on with work’, or because they can (/should?) delve into more emotional and personal conversations, and things British people really hate talking about.
  • That’s really intense in a face-to-face situation. If you’re reading this and you’re fine giving 1-1s or indeed relish them, that is cool and I look up to that. But OMG, the energy required to fit personal development and wellbeing into organisational structures, strategies, legals, etc can be very draining, mentally and emotionally.
  • It’s fine to run a slightly “duff” 1-1, I think. People are tired, distracted, etc and you can always respond exactly as you’d like. It’s also fine to pick up afterwards and carry on a 1-1 if you need to elaborate a conversation or remark further. There’s no sense in waiting for the next scheduled catch up.
  • Really, maybe, the best advice is to remember that 1-1s are just a chance to BE a person – to get away from the hierarchies of delivery, to forget about specifications and standards for a bit, to allow both yourself and the other team member to just be yourselves for a few brief moments. Ultimately, 1-1s are more important as a space for that, and all the stuff about career progression and achievements and stuff is just a reminder that stuff is all an important part of someone’s life, but not the totality.

So yeah, 1-1s, scary but only because being yourself is scary.

THREE. Roles should be unit tests to each other

We’re continuing some brilliant conversations to clarify our product “ownership” roles, which I mentioned last time. As part of this, I’ve realised how useful it is to have more than one person involved in any single role – we’ve split up a single “Owner” role into a twin “Strategy” and a “Manager”. The conversation to define these, in relation to each other, really highlighted how the two can support each other by checking and reviewing the responsibilities of their counterpart. The Manager can check the strategy for clarity, and the Strategy Lead can approve the Roadmap deliverables. Separation of functions, with cross-checking. (We do this in the dev team a lot, with code review baked into all code that gets released.)

I wish there was a way to write unit tests for this. Test- and Behaviour- Driven Development hint at generally automated / agreed checklists for what emerges and how things progress. I see phpunit versions of Labour’s Brexit tests in my head. Automated organisations are only a decade away – AIs can set the strategy based on the company values provided by shareholders, and the input metrics provided by private SaaS infrastructures.

ELSEWHERE

The Weeknotes where I talk about what I’m doing recently

Close-up of a street sculpture in Exeter

Within these work walls

ONE. PRODUCT JOB DESCRIPTIONS.

A large thread at the moment is cleaning up our product-ownership/management job descriptions. We’ve never really established a “proper” PO job description until now, as a small company – the title has been useful in some ways (identifying a singly accountable person, as a handy umbrella) but tricky in others (often evolved and reactive as new ideas come along, rather than organised and clear). We’re looking at a distinction between strategy for a product vs delivery of a product, which has given the strategic side more of a ‘information coordinator’ bias – ie information gathering, rather than deciding what to do. I like that.

Personally, I get a lot out of job descriptions and role tidying. In my had, it’s basically the same job as software architecture – which role(/class) is responsible for which tasks(/functionality) – and what are the relationships and communications (/interfaces) with other actors in the system.

TWO. CODE OPTIMISATION IS FUN.

Friday I got back onto some heavier code optimisation, down in the darker depths of the codebase. I wrote the code years ago and it served to simplify our development process a lot. But it’s inefficient like a treacle truck, and there are some key improvements that – thanks to git submodules – could affect all of our sites without much re-implementation.

I enjoy this shit really – there’s a careful, methodical route to attack a problem. Know that something is doable, map the system out, plan out the moves, think of the drawbacks, sanity check, then Write the Magic Words and see if all your theory was right. It’s like chess crossed with Lego crossed with a house of cards.

THREE. GOOD QUALITY LEADING.

I wrote this in my notes:

What does “artisan tech leadership” look like?

Like, if I ran a tech team like I ran a posh coffee shop. What are the things you’d stand out for, that you plastered up on your blackboards, that people tried to describe to friends with faraway, confused looks on their faces?

ARTISAN LEADERSHIP. A space vessel caught up in people’s every day lives. A hint of magic like a job reality which only exists in dreams.

Pin your banner to the flagpole. Stand up for what you believe in – to lead a team is to describe a world you want to exist. Worldbuilding is a Real Thing now, now that our mental reality and our physical/economic realities are intertwined with virtual words, transient networks, branded avatars.

I haven’t got the hang of it yet, but I know it is there somewhere.

FOUR. COMFORT = CHANGE.

More on leadership. Catherine Howe talks about psychological support for systemic change:

It is a role of leadership to create an environment of psychological safety – or perhaps it’s better described as making it possible for teams to create their own safety. One of the major tools of leadership (and resilience) is understanding the difference between your circle of control, your circle of influence – and then what my colleague Giulia calls the soup – the stuff that we have not influence or control over. Psychological safety demands that your team also has alignment about what they can and cannot change and a mandate to get the work done. The issue can be that the work then becomes to some extent closed off – the psychological safety of the team effectively becoming a barrier for wider collaboration – a barrier to the actual work.

Amen. Ties back strongly to my own thoughts on comfort zones.

“In Other News” *

  • I published 29 B&W photos for April. Some don’t fit so well, but I’m pleased with each for different reasons.
  • I’ve been writing week notes a bit less recently. I’ve been focusing largely on reading, TBH – a few books have really sucked me in recently and I’m deep into Calvino’s If On A Winter’s Night A Traveler which is the essay equivalent of a dream.
  • I’ve been getting back to the solarpunk experiment this month, which has got me thinking about use of tech again. I’ve purchased an old Nexus 7 tablet from ebay which I’m now using purely to read RSS feeds and saved links. I want to have a better “reading” experience generally – not just inline commenting a la Medium. Like, “reading net content from other people as something I enjoy.” So far, so good. And if it can be solar-powered, so much the better.
  • I’ve also installed a podcast app FOR THE FIRST TIME and have subscribed to two podcasts FOR THE FIRST TIME. One is 65daysofstatic’s Bleak Strategies because I is fan. The other is Craig Mod’s 945 binaural recordings from Japan – with audio from temples and coffee shops, I’m finding this realllllly good background for working, reading, and generally relaxing.
  • Random thought: Why is formatting bullet-pointed lists the bane of my life this century?

* H/T Giuseppe πŸ˜‰