Mmm, that’s a nice title. Sure to draw the punters in.
I’m building something for some colleagues in my organisation, and I’m doing my best to do it properly. This is despite feeling, consistently, like I’m just playing at this: one of the downsides of learning a skill through sheer mucking around.
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 Govreport (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
Starting to feel more comfortable in myself, whoever that is
Overarching feeling of the week: pushing at the boundary of how much I can take on and feeing grateful that I’m at the point in my life where I can identify it
Themes of the week
1My job is weird. It consists of trying to think of every way something could go wrong, writing those down, and then finding a solution that will not go wrong in any of those ways.⁰ I explained that badly. Look, I really enjoy what I do, and every week that goes by reinforces my feeling that I made the right choice. I got some really good feedback about a feature I’m building, and the process itself is really great. I put headphones and get completely into the groove by turning everything else off. I feel like I’m making an axle: almost everyone who uses the whole product won’t notice, but if one day someone who knows about this stuff takes a look they’ll let out a low whistle and say, “Dang, that’s a nice axle”¹
The fact that I can re-apply that learning in new ways, like sharing knowledge with a friend’s mentee or helping my sister automate some of the less valuable bits of her job, is just the icing on the cake. I’m doing cool work for my team’s objective and my corporate objective, and although I can’t talk much yet about the latter I may be hitting some of you up on the down low to ask questions about money. I’m lucky, and I worked hard, and I’m grateful. I think these things can all be true at the same time.
2Feedback. I’ve been guilty of asking for feedback badly and giving feedback badly. I’m trying to be better at that. A few conversations I’ve had recently as well as things I’ve read are pushing my to understand how to do this better. Breakfast with a colleague brought up one point: how do you give feedback to someone who sees “mean” where you see “honest (if blunt)”? And then these posters flew past (and identified for me by Zuz, so thank you Zuz):
So I’m going to redo my feedback questionnaire when I get in on Monday to better reflect these suggestions, and make sure my future feedback is like this.
3Feeling the edge of my possibilities. Some of this is from my current low mental health, but I suspect some of it is also that my job now commands a lot of my energy. In either case, I’ve found myself turning down requests from other people, and that’s felt good for the first time ever. Every time I’ve turned people down before I’ve felt guilty for 24 hours and rung them up in a blind panic asking them to take me back.² I don’t know what happened, but I really hope this confidence stays.
I am still taking on way too many self-directed projects, because I’m desperately trying to fill my evenings in less expensive ways as I save up for a flat. I’ve got too many on the go at the moment. I’ve noticed this solely because I’ve started recording things I’m doing and the time I’m spending on them, inspired by Dan’s meetings data. It’s valuable, and I’ve settled on the same heuristic as him — more than 40% of my day in meetings completely wipes me out. This is generally correlated with getting takeout. Fewer meetings → slimmer me, so let’s make this happen.
4All the good people helping with my corporate objective. Dan poking me to be a bit more OneTeamGov in my corporate objective. Morgan challenging loads of my assumptions. My line manager reminding me to look at the bigger (bigger) picture and consider whether I was over-invested. The little team of people coalescing around it and offering support. Someone raising an issue on the code repository because the prototype wasn’t working for them and then making a pull request to fix it.³ This objective is so exciting because it’s only 50% about code. The other half is the human-centric stakeholder management like getting people to buy into your story. I’ve got to find evidence and then build a compelling narrative out of it. It’s (probably) not going to make me a better technical developer, but it’s going to make me a better leader, and I’m excited and forking grateful to everyone engaged in it.
⁰ It’s a really interesting job, and we’re looking for more people to come and do the job too. If you’d like to be a developer, now is a very good time. We’re running a pilot scheme for people at lower grades to make the jump and we’re hiring developers, senior developers, and a bunch of other roles. Plus my organisation is full of cool people like the team with a Goblet of Wisdom that tweets every morning:
¹ I literally googled ‘important car parts’ for this metaphor, I have zero clue what an axle is or does.
² Yes, this is absolutely tied to last week’s revelation that I desperately need people to like me.
³ A pull request is when someone copies your codebase, makes a change, and then asks if you’d like to incorporate their changes into the core codebase. It’s immensely helpful because it spreads the work around and, in this case, meant I didn’t have to trudge around trying to find a Windows machine with the right permissions to replicate the error.
Jean-Paul Sartre wrote a lot about being free. To whit: it sucks. This week I’ve mostly thinking about the fact that freedom is approaching me like a freight train.
Monday was a bank holiday, so I tried setting up an ISA. I failed. Bank websites are horrible. I’m completely bemused by how any institution with such clear and predatory competition can continue to be terrible. I also began revising hard for my Java exam with this very excellent free course from Coursera. It’s in French, which is good because I definitely need to improve my French.
I also read “Big Ball of Mud”⁰, which is an excellent paper discussing how beautiful software projects become jungles of spaghetti code¹. I really wish I’d read it sooner, and I’m putting it on my recommended reading list along with Boiling Frogs and the actual Agile Manifesto.
On Tuesday I had a very interesting interaction about IR35 and being a contractor. I’m considering it as part of my ongoing search for people who’d like to rent my brain, and that short conversation turned into a wealth of resources about being a contractor. It seems like an interesting life, but also fairly cut throat. If any readers would like to tell me why it’s the best idea/worst idea ever² I’d be indebted to you. I will of course write about it, unless I’m contracted to do work I’m not allowed to write about. In which case I’ll write about how nihilistic and existentialist media is³ currently in vogue as a reflection of our despair at the world.
Ooh, and I offered to help Sam Villis make stickers which is an exciting little project. They’re going to say “Be generous”
At work I caught up with what happened last Thursday and started preparing for the objective setting meetings for my two Fast Streamers. I’m gutted I’m not going to be around to manage them through to the end of their postings; having had managers swap on me in posts I know how disruptive and frustrating it is. Leaving feels like a dick move.
I don’t have anything pithy here. It does feel like a dick move, and I don’t like it.
On Wednesday Spotify, a Swedish company, floated its stock on the New York Stock Exchange. To celebrate, the NYSE proudly flew the Swedish flag outside its building.
But before it did that, it flew the Swiss flag. Let’s not wonder for too long how or why this happened, but instead focus on the INTERNATIONAL DIPLOMATIC INCIDENT that ensued.
It's @Spotify's big day! The company is going public and @NYSE intended to pay homage to the company's Swedish roots, but flew our flag instead 🤭 It only took 15 minutes to fix this mistake, but no worries our Nordic friends are humble and we are neutral, so no tiff will ensue😉 pic.twitter.com/9k8wAtYVBQ
I made some progress on an extraction-transformation-load project at work. It’s the kind of puzzle/problem/coding challenge that I absolutely love, so I’m trying to carve out time away from managing people to do this. Balancing this when I’ve still got new(ish) starters is tough as — at my insistence — I have a lot more contact time with them for them to identify problems. As they settle in I think they’ll get better at coming to me with issues, but at the beginning I want to be proactive and identify problems early. And then visibly act on them. Because:
I think managers should exemplify the behaviors they want to encourage. Take real vacations and don’t work while on them. Keep healthy working hours. Don’t stay plugged in after hours. Don’t hide mistakes. Take a mental health day every now and again.
Still, that cuts down on the coding/developing part of my job. I am currently finding that wanting to do both is hard to find in the job market: people tend to want one or the other. On the other hand, I’m finding it very hard to balance at the moment so maybe I’m the one being unreasonable.
Thursday is my non-working day, so I made approximately five kilos of ragu over five hours and it was absolutely flipping delicious. I also had a phone interview for a software developer role; way more junior than I am currently but the team seem really keen on personal development and mentoring. I’m really up for that: I like learning new things more than I like big salaries or fancy titles.⁴
In the afternoon I went to see the aforementioned Sam and we talked about fonts. Talking about fonts is brilliant, and if you like fonts⁵ then you should watch Helvetica. I refuse to link to the trailer because it’s terrible. The ratio of how bad the trailer is versus how good the documentary is can’t be understated. It’s terrible. Fine. Fine. Here it is.
90 SECONDS OF THE SAME, HORRIBLE, REPETITIVE NOISE. Oh look, Helvetica. There it is again. And again. And — yes, I get the point. Now we’re going to find out wh-oh, nope, it’s just another example. GET TO THE POINT.
My point, by the way, is that fonts are cool, and mint tea served in Grind at the Whitechapel building is exceedingly minty, and sometimes seeing a friend and talking about fonts segues into reflecting on what you’re actually doing. And that’s an analogy for weeknotes.
On my walk home a recruiter contact of mine got in touch, and since his building was on the way home I swung by. He’s in the Heron building. It has horrifying, outside facing, glass elevators. I hate them. I can feel my intestines trying to escape via my throat in an attempt to wind themselves around a nearby post and arrest my movement every time I approach them. But since his office is on the eleventh floor and I don’t do enough cardio to make that feasible, I clenched my everything and rocketed upwards.
He’s found a job that would suit me almost perfectly — and that sounds like the kind of coaching/developing role that I’m aiming for — and he’s going to Poland this weekend. We chatted about the role and I made a request for vodka. Keep your fingers crossed for the safe delivery of both.
On Friday I chickened out of telling one of my Fast Streamer’s managers that I’m leaving soon, and I’m still trying to work out why. There was a perfect opportunity, and yet for some reason I didn’t. I’m going to think about why I did it over the weekend. It was weird. I still feel weird about it in a way I can’t really define, but I think it’s linked to what I said above: saying it out loud confirms I’m thinking about myself more than them. And that feels like a dick move.
I got confirmation for another software engineering role, although this is with an organisation that’s got mixed reviews from people I’ve spoken to. I’m waiting to reserve judgement, but it’s making me nervous before I start.
This weekend I’m finishing up coursework about a travelling salesman and a project called “Philip Hammond and the Temple of Glom”.
I have two new colleagues on short term contracts — loaned from the Civil Service. One immediately went on annual leave, while the other has been hard at work. It’s been absolutely eye-opening. As they’ve grown into the project they’re working on, they’ve freed up a huge amount of the mental energy I didn’t even know I was expending on it. That, in turn, has made me so much better at my job.
My point is probably that if you get to the point where you say “I’m too busy to hire someone”, you should hire someone.
So: Monday I had a one-to-one with my colleague. I ask the colleague to come with an agenda and share it with me ahead of time, so I don’t get blind-sided by big questions. So far the approach has been effective; my colleagues are thoughtful and honest, which has helped guide the way I do my job. I’d like to learn more about ways to improve them, so if you have suggestions please throw them at me and I’ll try to collect them.
It was the last week of term and the UCU strike had ended, so I had my last programming class before the exam. It was a valuable session; I’m still getting to grips with Java but made some progress. I am still entirely confident that it is a terrible, horrible, no good language, but it’s helping with the very good Scala course I’m doing. It’s on Coursera and it’s created by l’École Polytechnique Fédérale de Lausanne, and if you’re interested in functional programming I recommend it.
In job news, I found out that a position I’d applied to had already been filled — but would I like to meet the director to talk about joining a different team?
Tuesday was backlog grooming, which the aforementioned colleague facilitated, and customer problem solving. Backlog grooming is an opportunity for the business side of the operation to come together and argue priorities and roadmap. It’s really helped to get the new colleagues up to speed and helped me sharpen up the product’s vision, because new colleagues have a tendency to poke holes in assumptions you didn’t realise you had. If you don’t have any new colleagues to hand, you can always borrow some from a neighbour.
I applied for a job that required me to take a situational judgement test. Situational judgement tests ask you to image yourself in a situation and then evaluate four responses to the situation. Apparently you can automate cultural fit now, which I have two conflicting thoughts on:
Tech bros hiring for cultural fit⁰ is a contributing factor to the lack of diversity in our industry. By writing down what your culture is and letting a computer check if people react in the same way as you to the same situation, you can remove some bias you would have for or against that person. But:
Culture is mostly unwritten; the people who commission and input into this software don’t deal with the day to day culture; the idea that you can neatly encapsulate vast, unspoken cultural stuff in 15 questions with four answers is patently absurd.
In any case, the test identified me as a bad fit. It was a novel experience though, and gave me insight into a dystopian world of automated decision-making that can only be just around the corner.
Wednesday passed without major incident, and I took advantage of the evening to finish up the work I was doing on my side project to make the algorithm work and the interface usable.
Unfortunately, it takes a long time to process the data, which means if I deploy it anyone who tries to use it is met with this page:
So: now I’ve got to write something fancy to move the data processing to the server-side while the client-side displays an animation to keep the user interested.
I’m frustrated, but I’m also learning new things that I’m really enjoying. So that’s nice. It also works as long as you only ask for ten data points, so if you promise not to break it you can try it here. If you feel like a fun challenge, print off the data points you get and see if you can get better matches than the system.
(If you spot any horrendous results, please let me know!)
Thursday was my day off and my partner worked from home, so I made some fish with a dill sauce for lunch. Eating together is something we try to do as much as possible because we’re both so busy, and it was really nice to be able to do lunch as we wouldn’t have the chance to eat dinner together.
I went on to university in the afternoon. Information systems got a bit heated as we discussed ethics in computer science. There’s a whole thesis to be written on whether our industry ought to be regulated in some way, and now’s probably not the time.¹ There are also theses already written about the actions of Snowden and Manning, and the recent whistleblowing about the stunningly shifty activities at Cambridge Analytica². People have Strong Feelings about this stuff. It’s a good start.
Computer Systems was a blur of confusion. I’m going to be spending my (now free) Thursdays before the exam reading the textbook from cover to cover.
Friday everything was on fire.
Customer issues came in from left right and centre. A client was accidentally missed off a mailer a couple of weeks ago and found out today from someone else in their industry. I’m really frustrated that we dropped the ball, particularly because this client has a unique insight into upcoming work that we really value. It also makes us look unprofessional and I really, really hate that.
I had to crunch through some tests for another client, and because computers can smell your fear that was the moment my laptop decided it was time to do updates.
Matters were made worse by the fact that the afternoon was given over to the retrospective. Some tough conversations happened, as they should do, but I came away from it wondering how valuable my input was. I felt as if I’d done nothing but complain, and I don’t like that. There’s plenty of good to celebrate, but I felt like I was playing the bad guy. I’m going to keep an eye on this and see if it resurfaces in a fortnight.
Incredibly short week, so work will be crunchy as I bring everyone back up to speed. On the other hand, bank holidays are good and mini-breaks with your cool and awesome partner to Bletchley Park AND the National Museum of Computing are the absolute best. Next week’s weeknotes will feature many pictures of my immensely excited face.
⁰ Cultural fit is a phrase which here means “Are they, too, a tech bro?”
¹ Since you ask: pilots flying planes today rely heavily on software. Despite this, pilots are highly regulated and rightly so. But the person writing the software — who’s regulating them? As far as I know: nobody. And if that’s the case, it makes me nervous.
² This year’s favourites in the boat race against Oxford Analytica
True fact: it’s called the pilot because it’s what gets a show off the ground
I am a Digital and Technology Fast Streamer in my second year. I’m currently on secondment to the private sector, where I own a Software-as-a-Service platform. I’m also the co-ordinator for the Fast Stream Forum, a network formed to support Fast Streamers across government.
These are my weeknotes
At work we had our weekly push to production, so I wrote up a release note detailing all the changes we’d be making. Writing release notes is one of my small joys, because it’s a unique content-writing opportunity — you’re only speaking to people who already use and understand your product, which means there’s less chance of misunderstanding and a closer relationship. That means I can be more playful than I otherwise would be.
I try to put aside half a day on Tuesdays to look at the backlog. Our resources are tight and our ideas are infinite, so it’s always challenging to look at all the things we’d love to do and decide which one is actually important. There are times when I get it wrong, but starting with user needs is a helpful way of distinguishing the great ideas from those that are just exciting.
I also organised a conference call — long time readers might remember that I helped to organise a conference earlier this year, and the bidding process has begun for Fast Streamers looking to organise it for next year. A few members of the team agreed to speak about it, so I got to send out invites for a conference conference call.
I didn’t make it into the office, but I’m lucky because my organisation works entirely out of the cloud — so I sat at home with my feet in a bucket of ice water and reviewed customer support emails. I love seeing these because although they indicate something went wrong, it’s the first step to getting that problem fixed. It’s also an incredible insight into what people are doing — the platform is software that smooths the permitting and licensing process, and it means I get tiny sneak-peeks into things that are being filmed before they happen. It’s weird but very cool.
In the world of the Forum I checked some new entrants into the Facebook group we’ve organised. It’s a community tool that helps new entrants get to know each other and ask questions that are worrying them, and an opportunity for us to talk about all of the exciting things the Forum does to support Fast Streamers — from diversity networks to Book Club to the chance to learn a new language.
I also got a chance to chat to Kylie, who’s just all round incredible. She recently did a talk about normalising diversity that you go and read right now. She asked why I never come to Rainbow Raves, nights out for an LGBTQ* network that started in MoJ but is now cross-government. I responded that I’m just too old for heavy drinking (#27morelike47) and in less than five minutes she’d organised a picnic.
It’s not an overstatement to say I’ve got everything crossed for my next post to be in MoJ digital. #fanboy
I got my offer to enrol at Birkbeck University, where I’ll be undertaking a part-time MSc in Computer Science. I was elated for a whole day, before suddenly getting very nervous about juggling my full-time work with the MSc, which includes (among other things) a “major piece of programming work” and a 12,000 word report on the same.
Naturally I turned to Twitter, where all neuroses go to flourish. I got a huge wave of useful, friendly responses: some reckon it’s feasible, others reckon I should just do it full time. I’m still weighing it up, but I’m hopeful that my next post — starting in September — will be supportive and understanding.
My team did the sprint retrospective, and as always it was a valuable. On this occasion a team member I’m supporting took on a facilitation role and kicked ass, so I’m hopeful she’ll continue to do it and build her confidence. Our dev team are out in the canary islands (#notatalljealous) so retros aren’t as easy as they would be if we were all in the room, but we managed okay.
Today was another day when the programme I’m on clobbered me with the realisation that it’s awesome. The committee of the Forum got together and i got to hear about the incredible work other people are doing — Nathan, who looks after diversity networks, Lauren who’s working on continual improvement in our learning and development offer and Kieran, who’s doing huge work on improving the social aspect of the Fast Stream. I got to present my ideas for an external wiki to improve knowledge maintenance and the work I’m doing to improve communications.
The rest of the day was spent writing a strategic roadmap and vision for the future of the platform. I like writing these things because I get to talk about what’s possible and articulate a vision that stretches further into the future than the product’s roadmap. Technology is advancing at an incredible rate, and one of the key differences and best things about the private sector after government is that I can be a little more relaxed about using untested technologies — the cost of failure is significantly lower, although there’s great work going on to change that with devops practices being sponsored in the big departments.
That’s my week. Next week I’m on leave for two days and at the AWS Summit in London, so wave at me if you see me.