April 27, 2020
First: hello from my new iPad keyboard. I’ll spare you the requisite bloviating about yet another piece of Apple hardware, but I quite like this one, and it means I can be a little more efficient shifting more and more non-development work away from my desktop. Notion works well; Mail works well; Zendesk works well. And thanks to Juno, I can even do some limited diagnostics/data exploration work!
Here’s a thing that I’ve known to be true for a while but have found to be particularly true in the past few weeks, as all element of my life bleed together: two hours is not the same thing as four chunks of thirty minutes.
…Mm, let me take a step back.
Buttondown’s done quite well in the past two months. I haven’t actually done that much financial analysis, but MRR is out of its six-month trough; new users are signing up in droves, and outbound volume is very high.
Happily, this actually hasn’t translated into that much support burden. The investment in a really content-heavy FAQ has paid dividends, I think: I don’t find myself repeating answers any more, which is really great for my mental sanity.
Still, I’ve felt a bit of the usual timebox crunch lately: there are only so many hours in the day, and so many things to do, so what really needs to get done?
I took a step back, looked at my roadmap, and asked myself what the actually important things are. Two things jumped out:
- The most common support request I get is “your system is telling me my email is invalid but it’s not”, which is a bad user experience and annoying.
- Mailgun costs a shit-ton of money relative to SES and I can save a couple hundred bucks a month by migrating some volume over.
(There are a long tail of other issues, too, that are important and I’m excited to work on: internationalization, teams support, etc. But those felt more like cosplay choices than anything serious. Yes, I need to support different languages and teams, but that’s just going to increase my inbound burden in the short term.)
So I looked at the first thing and said, hm, this is really only a couple hundred lines of code to fix altogether. It’s the size of task that I never jump on at the end of the day when I just want a quick win, but it certainly wouldn’t take me an entire day or week to hammer out.
And I did what I rarely do: I just threw everything on Do Not Disturb and wrote the critical path code for two hours. It’s shipped now.
I think I’m bad at medium-sized tasks: not quite bite-sized, but not large enough that I get into the whole “right way to do things” flow of baking out a feature branch and breaking down the interface and all that.
(I’ve also started working on SES support! This has gone…also somewhat painlessly, but it’s a certified Big Task. More on that — replete with some truly terrifying code samples — next week.)