July 26, 2020
Marketing, launched!
For once I was true to my word, and I launched.
In no real order, some takeaways thus far:
- People have been very very receptive to the overall changes in copy, which makes me happy. I would be lying if there was not a part of me that absolutely dreaded the prospect of spending all this time and energy only to have existing customers & followers be like “oh, this sucks.”
- The numbers have been very very good. Conversion to registration has roughly doubled; incoming traffic (which still needs some time to bake out) has also increased accordingly.
- I shipped with a bunch of bugs. Some of these were trivial (the crack copyediting team of my partner, my friend, and myself missed a couple glaring typos); some of these were less so (custom domain CSS had some jank.) All of these have been fixed except a few (pricing and testimonials look janky on mobile, which is more or less fine in the short term given only 30% of my traffic is coming from mobile but definitely not fine in the medium term.)
- There is still work to be done! I’ve knocked out some integration pages and have some compete pages coming up in the next few weeks but those are pretty templatized and mindless. I’m happy I shipped the major pieces now; the long tail of content is less a “project” and more a “going concern”, and unless anything interesting comes up soon this will be the last I write about the marketing redesign for a bit.
Internationalization, somewhat snagged.
A lack of forward progress and an influx of complicating factors set back internationalization a bit this week. The good news is that the frontend work is pretty much done (minus a few bad pushes in which I broke the draft recipients modal for a solid hour or so); the bad news is that I hate Django’s backend internationalization model, which relies on a lot of relatively outdated tools.
I’ve expanded the script I talked about last time to handle backend work, and it mostly works (except some issues with newlines, which I think is a self-inflicted wound.) I forgot a few things in the initial corpus of strings I identified:
- The premium subscription trial flows;
- The subject of literally every subscriber-facing email.
The first one’s not a big deal; the second one means I have to do a bit more architectural futzing. This is perhaps my least favorite stage in the product cycle: the end is kind of in sight, and there’s a janky thing I could rush out the door and deliver to folks, but there are a lot of landmines in the way.
A previous version of me would have been too cautious, and delayed shipping indefinitely in favor of getting the thing perfect. Now I think I’m on the other side of the spectrum: I am too eager to ship, and that results in a lot of paper cuts and pain along the way. I’m trying to reach a little bit more balance with this, and so I’m taking these setbacks in stride. After all, this is pretty much all uncharted territory for me, and on net its been less painful and more fun than I would have otherwise anticipated.
“Engineering as marketing”.
Jon Yongfook tweeted about my perennially favorite phrase, “engineering as marketing”, earlier this week. This is a subject that I am very sensitive to, as someone who:
- doesn’t like to do marketing
- does like to trick himself into writing code and pretending that it’s valuable.
In general, I’ve shied away from this sort of deliverable: the closest I can justify here is, well, rebuilding a marketing site, and then at least I’ve got data (and SEO gods) to back me up. The tweet reminded me of an evening project I whipped up a year or two ago, though, which was an API cost calculation tool.
I haven’t run the numbers, but this has received...probably one thousand lifetime pageviews and <10 conversions? Probably not worth it.
But sunk costs are sunk costs, and I’ll probably spend an hour cleaning it up, updating the costs, and re-launching it. (I like Zach Holman’s take on launching — launching something only once is for suckers.)