Slaying the beast
This week has been almost entirely dedicated to a mammoth bit of work I finally completed, so may be tech heavy and retrospective. Luckily, there’s a romantic interlude so there should be something for all of my readers.
The giant code change I’ve been working on is finally ready. It deletes 700 lines of code, has gone through various iterations, and had a personal best of 43 comments and recommendations on it. I now know this repo inside out, and I’m already thinking about ways I could further improve it.⁰
I’m also thinking about ways I need to improve the way I structure these code changes. Reading back through the commits I’ve made on the branch, there’s no clear narrative. I seem to dart around, solving the problem like I’m solving a cryptic crossword. In the real world, that is a little bit how you solve these things — this video from Malcom in the Middle is a good analogy.
You try to fix a bulb, but when you go to get one you realise the shelf you keep the new bulbs on is broken. Since you’re fixing things, you may as well fix the shelf, so you go to get a screwdriver, which is when you realise the tool drawer is squeaky. Nightmare! So of course you grab some WD-40 from the garage, except the can is empty. You’ll need to go to the store to get some more, but the car won’t turn over, which is why when your partner gets home an hour later and says “Hey, the bulb in the kitchen needs fixing” you’re understandably upset, because that’s clearly what you’re fixing by stripping the engine.
The point of this long segue was that I am going to try being more focussed in my commits and make the narrative clearer, particularly with large chunks of work like this. Alternatively, I’ll start committing back into the master branch earlier.¹
Codebar happened again this week, this time at the office. This week I was focussing on writing good method definitions, and discouraging the use of globals. It’s really interesting to see people making the same mistakes that I used to make, way back when I started writing code.² When you’re hacking at stuff to make it work, global variables — values that are available to everything, everywhere — are the quickest way to make everything work. In this case, my mentees had written methods with no
return statements, so their code was chuntering away, calculating correctly, and then jettisoning the results into the void.
As ever, the opportunity to teach (and thereby learn) is hugely exciting. This year I’m working on identifying things I enjoy ahead of my next career move: I’ve been inspired by this fantastic post by Anna Shipman to be more thoughtful, as well as conversations with my mentors and manager.³ I also read the Institute for Gov report (PDF, 72 pages) about staff turnover, and I’m going to make a more conscious effort to hand over work effectively and thoughtfully if I move in the future.⁴ However, I’m not convinced by the broad brush answers in the report. Applying a pioneers, settlers, town planners model to organisations gives me the view that there should be different targets for turnover depending on the team and evolution of the product, and consequently different methods for attracting and retaining talent.
I attended a half day blogging workshop, and it’s helped me understand a part of the business that I didn’t understand before. It was a step outside my comfort zone, because it was about blogging professionally. I love blogging⁵, and so it’s a weird step-change for me to write with more thought and with a stated aim of grabbing attention and holding it.
There was plenty of really good content and I particularly appreciated the refresher on the GOV.UK style guide — the passive-aggressive “Words to avoid” section is probably my favourite.
[avoid using the word] key (unless it unlocks something. A subject/thing is not key — it’s probably important)
— The GOV.UK style guide
I had a weird quasi-first, quasi-nth date/friendly catch-up with someone.⁶ We’ve known each other for the best part of a decade and dated at the beginning of that period. It did not go well, mainly because I was an obnoxious ass a decade ago.⁷ We are — philosophically speaking — very different people to the people were once upon a time, even if we look similar. It was odd. We’re both pretty recently out of long-term relationships, and since we have history our baggage is now so great that it needs its own carriage.
All the same, it was really nice. We get on well, and we’re going bowling this weekend which feels…more like dating territory?⁸ So we’ll see.
If there’s one takeaway from this paragraph, let it be this: never go back and look at your tweets from ten years ago.
Govcamp will happen/is happening/has happened, depending on when I write these notes. I’m probably going to pitch an intro and advanced session on swardley maps and see what happens. I was approached by someone this week about putting together a workshop on this for a strategy away day, and so this will be a good opportunity to workshop with the five or six people interested in this ahead of my meeting.
I’m completely blown away by the fact that someone approached me about this. It combines my two tick-boxes of strategy and teaching, and is right in my wheelhouse of niche nerdy topics on which I’m well-read. However, I’m starting to get concerned about how much of my work time it’s going to take up. In an ideal world I’d have a job where I could do all this stuff — write code, mentor people, do strategy workshops and be home by 5.30. I don’t know if that job exists. I do know I’m going to have to think quite hard about how I’ll manage this in the future.
I could go down to 4 days a week and pitch my mapping workshops as a consultant, but I have an irrational loathing of consultants. It also seems to offer poor value for money to the taxpayer if I charged £800 a day for what I’d previously been offering as part of work. Alternatively, I could try making a pitch that this is a corporate contribution and actually start measuring the time I spend on it. If it starts taking up the majority of my time I’ll need to have a conversation with my team and manager. I might also need to start looking for a role that emphasises that, rather than software development.
Got thoughts? Put them in the comments or get in touch with me @jonodrew, because I have no idea what I’m doing.
⁰ These ways almost all involve binning old code
¹ Unless you’re a tech person, you’ll be unaware of the ongoing turf war between “trunk-based development” and “branch-based development”, but believe me: there are assassinations in the night and rude words written in leading publications that will testify to the strength of feeling in this arena
² Ah yes, way back in *squints* 2015
³ Good managers make people less likely to leave. I’ve genuinely got a great concern that moving might bring me into the orbit of a less-good manager, and that’s definitely adding friction to any moving thoughts I have
⁴ That should be a learning module for new staff: How to hand over work in progress in ways that don’t make your successor curse your name
⁵ Exhibit A: what you’re reading right now
⁶ Dating as a millenial is like manoeuvring an 18-wheel truck full of explosives through a china shop with a blindfold on
⁷ Genuinely just fucking awful. I’ve gone down a rabbit hole of my old tweets and the shame is real
⁸ Wearing other people’s shoes and awkwardly trying impress someone is prime dating territory in my (admittedly very short) book