S09E03: Chocolate month has begun!

This is the end of week 3 in my new role. I’m still not feeling like I’ve fully grasped everything I need to, but I’ve met more people and figured out more of the space I’m working in. I know I should be content with that, but I’m not. It doesn’t feel like I’m working hard enough.

But I have written a bunch of code, so at least I’ve got some serotonin this week.

For Advent of Code this year I’m trying to write functional Python. Functional Python isn’t just Python that works – though goodness knows I frequently fall short of that target – but Python written in a functional style. I’m trying my best to follow this guide and avoid using anything mutable. It’s a really good, whole brain workout, even if it means I’m doing absurd hacky workaround like this:

def iterator_length(iterator_of_unknown_length: Iterator[Any]) -> int:
    try:
        next(iterator_of_unknown_length)
    except StopIteration:
        return 0
    return 1 + iterator_length(iterator_of_unknown_length)

when I could just do:

len(list(iterator_of_unknown_length))

because none of the data I’m working with should be infinite. But it’s a challenge, and it’s less of a challenge than:

There are no women in this list, because all of the women I know doing this challenge are doing it sensibly in Python, Rust, Ruby, and C#.

C# is not really a sensible language for scripting challenges, but it’s better than something that uses monads: a concept whose Wikipedia page starts

In functional programming, a monad is a type that wraps another type and gives some form of quality to the underlying type. In addition to wrapping a type, monads define two functions: one to wrap a value in a monad, and another to compose together functions that output monads (these are known as monadic functions)…

Someone with a giant brain, probably

…and gets no clearer with length or time.

I think I’ll learn some valuable things, though the most valuable thing is likely to be that objects are beautiful and mutations are to be treasured.


I’ve written myself some objectives for the next 115 working days. That is not a lot of days, given I will need to take some of them off for holidays and sickness and so on. I think we need to implement capability based pay in my organisation, because the market for DDaT folks keeps getting hotter and I don’t think we’re keeping up. The alternative strategy is to simply give up and treat software and digital services like toilets, or the supply of electricity: something complicated and well-paid, and best left to the market.

I don’t buy that approach for the moment, but I am going to dig into it and see if there’s a case to be made. Knee jerk reactions are not an effective way to strategise.

With that being said I can foresee some real challenges ahead, so if you work on capability based pay and have some hard-won lessons you could share with me, please say hello. You can find me in the usual places.

I’m also hoping to speed up recruitment: again, if you’ve done that around the public sector, please drop me a message.


I’ve managed to secure a slot coaching at Codebar Paris. I am immensely excited to potentially speak French and coach software engineering, two things that I love dearly. If you happen to be a developer with a couple of free hours every so often I implore you to sign up with Codebar. It’s huge fun and virtual for now, which means you don’t have to stay at work until 8 or 9 at night and stagger home in the dark.

Admittedly it means sometimes that you sit at your desk for 11-12 hours, so – keep an eye on that, yeah?

That’ll do. I love you dearly. Buy flowers, they cheer you up more than you’d expect.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s