Weeknotes 2021 WK 4

On shipping software, and drinking less coffee

I’m creeping towards a release for Button. Target is early access for the middle of February, with a more complete v1.0 for the end of March. (Will and I were on TalkPython this week discussing deployment, where we talked a little about Button.)

Getting towards the deadline, I’m in the stage where the number of tasks left rises almost incessantly. “Oh, so you hadn’t remembered that need to make sure the Password Reset Confirm template had the site styles applied?”, and so on.

This is my absolute favourite part of shipping a piece of software.

Inevitably, as you put in place the infrastructure that goes around the core functionality, you reveal a whole host of piddly-little-jobs, that no way do you have time for.

If you’re going to get the software out, nonetheless, you have a simple choice: Fix the date, flex the scope. Find every way you can to cut something that’s not really essential. As you do this, the thing takes shape in your hands. Ah, of course, I don’t need that. Ah, of course, it’s better this way.

It means that what results it never what you imagined. (But you imagined SkyNet — it was never going to be that)

Not to worry. Get it into hands. Then iterate based on actual usage. This is the core of the Release Early, Release Often mantra. It’s the cutting edge of mind-meets-world.

The essential tool here is feature flags, which for Django I use django-waffle. What am I going to do with this half-started bit that’s clearly not ready? Wrap it in a feature flag, and bump it. Repeat. Come back to the feature when you have time, flip the flag, you’re done.

Flags allow an incremental approach, straight to production. I’m working on updating the homepage. It’s not at all finished, but I can work on it a bit, release what is ready, and come back later. This applies throughout. Highly recommended.

But ultimately, you just need to get down to it. There’s always more to do than you thought, and there’s no substitute for time at the coalface. (This being a mining analogy, I’m pretty sure it’s a British-ism.) Normally, you'd think this would require drinking more coffee than the usual. Let’s power it with rocket fuel. But actually, I’ve been drinking less.

Will McGugan (@willmcgugan) author of the amazing rich Python library has been talking about his experience giving up coffee. Better sleep, more energy, and so on. I wasn’t quite ready to give up, but I had long been thinking about cutting down.

Inspired by Will, from just before the new year, I’ve reduced my coffee intake to just a single cup (with a top up) mid-morning. I was at two to three times this.

It’s a month or so later, and I have to say the results are marked. My sleep quality is greatly improved. I fall asleep almost immediately, and don’t generally wake at night. I’m rising earlier, feeling fresher, and my energy levels are sustained better through the day.

All in all, it’s this change that’s fuelling my drive to get Button out of the door.

I planned to give the current routine until the end of February to see how it went. I’ll definitely continue with it. I'm not currently feeling the need to go further and stop drinking coffee entirely, but I might give it a try. In contrast to a period without alcohol, the one consideration with caffeine is withdrawal, which I’m not seeing the need to deal with right now, but given the positive results of cutting back, it’s something I’ll no doubt look into eventually.

I have to say I’m grateful to Will for posting about his experience.