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 😉

Weeknotes Ten:6? – Ethics of Comfort Zones, Hard/Soft Everywhere

What’s your comfort zone?

We’re reaching End of Epic stage; that emergence from a strung out thought-converse-trial-show-repeat cycle over the last few months, stretching back into valentines and pancakes. Initial contexts remain documented like dusty photos. Assumptions have come and gone. Where you end up is a test of your old map, not your walking shoes.

Last week I was moving into ‘focus’ mode, which is that part of the epic just before the end game, when things either come together well, or blow apart like dandelion seeds. Fine line, making sure there’s the right amount of emphasis. No hard deadline except our own. From experience I know things can slip at this stage. I’m still learning to trust the team too – we’re playing with new approaches to UX. Things may be ok. But, rather safe than sorry. The hard part of being a hit pushy: you’ll never really know if being pushy helped or not. Like that bit with the vase, in that film. The Matrix.

Pushiness is an art I’m still getting my head around. Take 1-1s and mentoring, for instance. People have their comfort zones. But I’d wager all real, quality learning comes when you’re off kilter and outside your zone. Focuses the mind, makes you pay attention. Memories are formed in these moments that stick with you forever.

So there’s an ethical question there. How do you know how much to move people out of their comfort zone? How much is too much? Should you push for discomfort of you know it’ll benefit someone, but they haven’t agreed to it? Is it enough just to let them they’re supported?

Related note: Currently reading ‘Deep Simplicity‘ by John Gribbin on chaos and order. He uses the term ‘order on the edge of chaos’, relating to how Things (structure, abstractly) emerge from entropy, and how certain interactions within a system produce this emergence. Planets forming from gravitational wells. Life forming from chemicals.

I’m captivated by this. It seems relevant. That meeting point of influences, that ‘decisive moment’, to borrow from Cartier-Bresson. Isn’t this the subtle art of leadership – knowing where and when to act in order to produce effectiveness? And, just as importantly, when not to act. Know strength/yang, but maintain weakness/yin, says the Tao Te Ching. Push sparingly.

‘Deep Simplicity’ refers to this as catalysis, to draw on chemical reactions. An instigation, a point of interjection. Controlling the arm of time through a single elbow.

Related: a brief Twitter thread on how skills aren’t inherently “hard” or “soft”, but rather that skills can be carried out with harder and softer approaches, depending in need.

Steve Halliday posted:

Winner of the worst term in leadership award: “soft skills” No, they ain’t soft. They are people skills. They are business critical skills.

@SteveHalliday0

My follow-on thoughts:

Was thinking about it the other day, and about the overlap between code and team management. Couldn’t draw a clear distinction except that flesh is soft, and servers are hard. But where does that leave software?

It’s not that there is no “soft/hard” skill dichotomy. Maybe a yin/yang approach is more apt though, where “soft” = more passive, listening, and “hard” = active/doing. Both apply to all skills though.

Eg. Listening is “traditionally” thought of as “soft”, but actually you can have both soft and hard forms of listening.
Soft: Quieting the mind, being aware of the moment/situation/person.
Hard: Actively asking for feedback and eliciting questions/responses.

Whereas, say, software engineering might be a traditionally ‘hard’ skill? But…
Soft: Observing and understanding the flow of information and logic needed for efficiency.
Hard: Deciding class and interface names, setting spec in stone, making tests pass, fixing syntax errors.

Which is to say, softness/hardness is less to do with particular skills, and more to do with your own approach to whatever you’re doing.

Weeknotes Ten:5 – Out of holes

HELLO dear reader. I don’t know where to begin. I haven’t written anything for 3 weeks. To be quite honest, I wanted to, but just didn’t have the time or energy. I think I’m on the up now though,

One weekend was spent away, visiting the folks. The next weekend was spent on decorating #son1’s bedroom. On top of all that, work has been fairly intense, and I’ve also been a bit naughty and gone to bed late a few times. I’ve had to admit defeat, suck up my own personal guilt, and just put weeknotes on a backburner throughout.

But I’m still here, still spritely. I don’t have copious notes, so there won’t be too much detail here.

How do I feel?

  • Like I’m finally climbing out of a big hole. Or several big holes.

Our building, which is very pointy.

What was I proud of?

  • Delving into the unknown, knowing that it’s for the best in the long term, even if you can’t explain why or how. Navigating this “chaos of faith” is tricky. But a little easier when you know other people are equally enthusiastic about what’s happening.
  • Bumping into some old contacts at an event who I hadn’t seen for while – and realising where i’ve come from, and where I’ve got to.
  • Helping to pushing forward on some more user-focused processes. It’s so easy for a “pure” delivery ritual to take over what actually gets delivered, especially with sprint cycles, and we’re making great steps to shift our mindsets, I think.
  • Seeing the team get passionate and organised about changing things, even if there’s sometimes some frustration accompanying it. I guess you can’t have passion without frustration, or change without some level of conflict. So passion and conflict are good – if they’re channeled properly.
  • I wrote up a piece summarising my ukgovcamp session on making time to think which seemed to go down well.

What could I have done better?

  • I can still tend to react a bit grumpily in certain situations, like people wanting to get on with stuff without thinking it through. I probably have a tendency to try to stop or slow people down in order to make sure we’re not fragmenting as a team. I’d like to be more organised and more clear about previously-agreed goals (COMING SOON), and I could probably ask simpler questions to check people are thinking things through – tough when I’m tired and time is tight though.
  • I should definitely have gone to sleep few hours earlier several days.

What am I not sure about?

  • How to balance team strengths vs hierarchies – ie. where teams cross over and it’s not clear which one has final say. How do others out there resolve this? I have some ideas based on OKRs and Health metrics, but they’d take some effort to put in place.

What am I aiming for next week?

  • I’m away Monday as well as Tuesday due to half term, so maybe relax a little?
  • The work to build a new dashboard is moving from UX design to Tech design, so I’m going to get my head into ‘architect’ mode and hammer out some specs.
  • I’m keen to line up some revised and improved structure for the next quarter for the tech team, but I think the week is too short and filled already, so that’s not going to happen, until the week after.

What else should I mention?

  • I attended an event on Digital Inclusion in the charity sector. I was fairly distracted by server issues for the first hour, but got my head into it after that. It wasn’t directly relevant to what I do, except it did make me think about how tech skills – and more importantly, an innovation mindset/culture – are distributed within a group of people. This is something I struggle with, as I like to encourage ideas and self-improvement within my team – but it’s often unevenly distributed (either outside of the team, or for different skills and values within the team).

  • Hon Mond fixed up one of our remaining failing unit tests – we estimated this as a fairly simple fix, but it ended up highlighting some strange, confusing code which made the team look into the underlying model, and the code was simplified as a result. I’m now thinking about whether unit tests – or their paradigm and approach – are useful at a business level too.

  • I started using my Disposable Evidence newsletter a bit more to send out photos and updates.

Moody self-portrait set in a hotel bar, with my face small and reflected in the centre.

Til next time…