After I published An Elegant Puzzle, I consolidated my notes into What I learned writing a book. That was my first book writing and publishing experience, and I learned a great deal. When I started working on Staff Engineer, I sort of knew what I wanted to do, but because I ended up self-publishing, I ended up learning at least as much as with my first book.
There are a bunch of great articles on writing technical books out there like The Economics of Writing a Technical Book, Writing a book: is it worth it?, and this thread on the Orange site. My experience isn’t incredibly unique, but perhaps it will be useful for folks debating publishing a book, and either way, I will learn a lot from writing this.
Finally, before getting into the details, two huge “thank yous.” First to Gergely Orosz who was a month or two ahead of me working on _The Tech Resume _and saved me many dozens of hours along the way. Second to the TechWriters community who provided a great deal of feedback, suggestions, and publishing experience.
I started thinking about my next writing project in October 2019, about six months after An Elegant Puzzle was published. I wasn’t excited to write another book about engineering management but did enjoy the prospect of publishing another book. There were a handful of books I could imagine writing, but the one that felt most natural was one exploring the plight of the Staff engineer. Staff engineers are the core of large technology companies. Still, at many companies, neither the Staff engineers nor the engineering managers have a clear vision for what the role actually entails.
Once I had a clear idea, I started figuring out how to approach the book.
This project’s overall schedule was roughly:
- Started the project in October 2019
- Released StaffEng.com, June 2020
- Cover started, December 10th, 2020
- Cover completed, December 20th, 2020
- Editing started, November 2020
- Foreword completed, January 20th, 2021
- Editing completed, January 27th, 2021
- Early Edition for sale on Gumroad, January 28th, 2021
- Full Release on Amazon and Gumroad, including paperback, February 5th, 2021
- Audiobook, estimated late February 2021 to early March 2021
These dates are slightly rough in a few places; not everything has a clear starting or stopping date but is more or less accurate.
I didn’t keep a particularly clear budget and some items are slightly arbitrary to allocate against this project versus other projects (for example, Mailchimp is costing about $80/month now, but half of that is due to my blog’s mailing list). That said, to the best of my sleuthing, this is a somewhat accurate budget:
- Cover art: $500
- Mailchimp: $480 = $40/m * 12m
- Canva: $78 = $13/m * 6m
- Gumroad = $60 = $10/m * 6m (excluding processing fees)
- Audiobook narration & production: estimated $3,000
- ISBNs: $295 for 10 ISBNs (cheapest size for 2 codes)
- Frontendor: $59 (styling for marketing site)
- Airtable: $288 = $24/m * 12m
So all in, that’s $1,760 for everything excluding the audiobook and $4,760 including it.
I’m trying not to spend too much time fixating on sales, although I have to admit I like numbers that go up. I’ll occasionally be updating sales numbers on the Exuberant Sketches page for Staff Engineer. As of 2/15 (10 days after Amazon launch, about 15 days after Gumroad launch), the sales are 1618 copies via Gumroad, 944 paperbacks, and 762 Kindle. That’s a total of 3,324 copies. It’s still very early days on whether the sales remain steady or quickly taper off, but either way, I’m trying to focus more on the folks saying the book has helped them understand their role (or get promoted) rather than the raw sales.
I’ve come to believe that folks don’t value things that they don’t pay for, so I wanted to charge a reasonable price even if folks could still get most of the content for free on staffeng.com. Initially, I was thinking of charging $10 everywhere, but that felt like it would undercut the market in an uncharitable way to folks trying to make a living off writing technical books, so I decided to go with $25 for both paperback and digital copies.
Money moves slowly (especially money from Amazon), but from that, I’ve been able to donate $9,000 so far across Black Organizing Project, Resilient Coders, /dev/color, and Black Girls Code. I will be excited to donate more as it comes in.
For An Elegant Puzzle, I was able to draw from my own experiences as a manager, but I knew I wasn’t going to be able to do that for a book about Staff engineering. I decided to start by interviewing a handful of folks.
These interviews became staffeng.com, and served not only as a great way to ground the book in real experiences but also an effective mechanism to build up an email list of folks interested in the topic. I put together the site in Gatsby in a few days, although knowing what I know now, I wish I had used Hugo (much simpler, fewer moving pieces, easier to get CI/CD working on Github Pages). From there, I found a good domain, created the Github repository, set up Github Pages to host it, and created a new MailChimp mailing list.
I stored up about ten interviews before starting to release them, with the first being from Keavy McMinn. Around the same time, I also began writing the guides and releasing them on this blog, with the first being Learn to never be wrong. I dripped out the stories and guides, sharing them via mailing list and promoting the stories a bit on Twitter and LinkedIn.
That write-promote loop became the project’s overall cadence. I started with a goal of twenty interviews (recently hit with Aaron Suggs as the twentieth), and with an initial slate of guides. Both the goal and the guides got reworked a number of times as I went, and the project became clearer in my mind.
In September 2020, I started working on the actual book itself. The book is a private repository on Github that pulls in content from the public lethain/staff-eng repository as part of its build. It is a 438 line Python script, a 48 line makefile, and a bunch of Pandoc configurations. It’s a one-line command to rebuild the epub, digital pdf, and print pdf versions of the book and runs in about two minutes (most of the time is spent in LaTeX generating the pdfs).
You can see a redacted version of the build script on Github.
This is pretty similar to how An Elegant Puzzle worked, except my goal there was simply to produce something good enough to hand over to Stripe Press, whereas my goal here was to create something to send to users directly. It was easier than I expected to get something pretty good.
The popular opinion is that any time spent creating tools is wasted, but I sort of disagree. It took a couple of hours to add QR codes for every reference into the print copy, and I just wouldn’t have been able to do that without creating my own tooling.
Digital formatting was pretty straightforward, but I did run into a bit of a learning curve getting the paperback working under Kindle Direct Publishing. It took three rounds of printed proofs before it turned outright, and I gave up entirely on KDP Cover Creator–the final cover was actually made in Omnigraffle, which I find pretty funny.
The cover image was illustrated by an artist I found on Fiverr, and then I created the full cover image on Canva. I was very intimidated by this process, but it ended up being pretty painless, and I love how the cover turned out.
It took less than two weeks from creating my Fiverr account to having a completed cover, and cost about $500. Next time I will try to find an artist to work with directly. Fiverr was a great way to ease the learning curve, but the compensation for the artist’s work was low. The biggest issue I had was accidentally using the approval copy of the cover illustration rather than the final copy and realizing later that it had a subtle watermark. This meant that I had to go back and remake all the various assets, but really that’s pretty minor.
I was able to find about a dozen folks from Twitter who were willing to review book chapters. This was immensely helpful and greatly improved the quality of those sections. I used Grammarly to do an initial pass on grammar and typos, and my wife Laurel was kind enough to do a final close editing pass for other issues. I explored getting a line editor, but ultimately the timing didn’t quite work out.
While I’d always considered making an audiobook for Staff Engineer, I was leaning heavily towards not making one by the time I finished the digital release. However, enough folks asked about it that I decided to look into it. I went into it hoping that I might be able to record the book myself, but life with an eight-month-old kid in a small house just didn’t mesh with the logistics of recording an audiobook: 20+ hours to record, and the need for a very quiet space.
So then I gave up on the audiobook again, until someone else asked for it, at which point I dug a little further into Audible’s audiobook creation platform, ACX. Then I gave up again because it felt a bit too complex and complained about it on Twitter, which led to Ian Joshua, a product manager at Audible, demystifying the process over a Twitter DM.
A few days later and I’d listened to thirty narrator auditions, submitted an offer, and the audiobook was underway. I won’t have a precise cost to create the audiobook until it’s fully finished, but my guess is it’ll be around $3,000. Audible payments are fairly inscrutable, so I honestly don’t have a clear sense of how this will pan out financially. I’m hoping to at least break even and get a free education on audiobook creation.
I’m pretty sure that I met Tanya Reilly while asking her if she’d be willing to do an interview for this project, which led instead to a discussion of an adjacent project she was working on. We kept in touch a few times afterwards, and when I started thinking about my dream author to write Staff Engineer’s foreword, she was absolutely the first person on the list: Tanya’s talk and post on Being Glue is the seminal work on Staff-plus leadership.
As such, it’s hard to exaggerate how excited I am that she agreed to write the amazing foreword that she did, and I hope to return the favor (I imagine more figuratively than literally, although literally would be fun, too).
For some reason, I never even considered adding a foreword to An Elegant Puzzle, probably because my personal network was much smaller at that point and an entirely unproven author to boot. I’m really glad I didn’t go that route this time. This is kind of a funny statement because that was only two years ago, but that’s genuinely my experience of it.
Carrying on in that vein, I was very intimidated by the process of finding blurbs when I wrote An Elegant Puzzle, but it was much easier this time. There were a number of folks who I met while recording interviews but who weren’t able to make the interviews work from a timing perspective. Of those, Amy Unger and Nicky Wrightson were kind enough to provide fantastic blurbs. In addition to Amy and Nicky, several others were generous enough to review the work, including Padmini Pyapali, Kevin Stewart, Uma Chingunde, George Orosz, Emily Robinson, and Shawn Wang.
These blurbs ended up on staffeng.com/book, the Gumroad page, Amazon page, and even the printed book.
I decided to sell via Gumroad and Amazon. Both have gone well.
Gumroad has been fantastic. I initially hoped to go with a direct Stripe integration, but it would have required a bit too much tool building when I knew I should be focused on finishing the book itself. I also added a hosted Gumroad store at store.lethain.com, which seemed like a good idea at the time, although I haven’t found much of a use for it yet.
Amazon has been good as well, and I’ve found the paperback experience with Amazon KDP to be surprisingly great. The print quality of all the paperbacks I’ve received has been quite good, although at least one person has submitted an Amazon review with a poor-quality print, which is quite a shame and hard to track down as they use multiple printers in each region. That said, the quality has been quite high for most folks, and having a physical copy was an important goal for me.
I wanted to have the same ISBN for Gumroad and Amazon, which meant that I spent $250 for ten unique identifiers from Bowker. ISBN pricing feels like a scam, but fortunately, the rest of my selling experience was great. In retrospect, I’m not quite sure why I did this. I probably should have just not bought ISBNs because I don’t anticipate Staff Engineer being sold in any contexts that would actually need them.
Someone once told me that books are sold rather than bought, and I tried to keep that in mind when I started marketing Staff Engineer. I did a variety of things here:
That was pretty much it, I think. For An Elegant Puzzle I spoke at a couple in-person conferences and went to a handful of private company events to talk about the book, but I’m skeptical that those did too much. The only thing I really regret not being able to easily recreate was the feature with First Round Review which created a surprisingly large amount of visibility.
Btw, Gergely’s Want to Start a Startup, as a Software Engineer? Sell Something Online is a great piece on book marketing.
On the advice of Alex Xu, author of System Design Interview, I decided to start experimenting with a small amount of Amazon advertising. Alex’s experience was good conversion, reasonable clicks, and very hard to scale up volume. So far, I’m seeing a couple of dollars in spend a day out of a $10 daily budget, and am seeing roughly $0.40 per click, but too early to say whether this is going to drive many sales.
That’s a wrap
When I launched An Elegant Puzzle, Brianna Wolfson told me that books are sold over the first six months, not just the first week, and that really stuck with me. It was also, with the exception of a week where Amazon pulled An Elegant Puzzle’s digital version for two weeks due to a communication misfire over quality reports, true. An Elegant Puzzle sold ~13k copies in the first five months. If Staff Engineer sells that many copies in its lifetime I’ll be pretty happy.
If Staff Engineer ends up being helpful to you, please drop me a note!