Hi folks! One month ago I published my first ebook on Gumroad. I went into the process with absolutely no idea what I was doing, and no real idea of what to expect. I wanted to see if I could write and sell a book, so I struck out with that goal in mind and winged it all the way to the finish line.
Now that I am through the writing and publishing process, I thought others who are considering writing an ebook (especially a technical book like mine), might find value in hearing about my process, what went well, and what could have gone better.
I’d love to hear from other folks who have gone through this process, or to do my best to answer questions for people who are considering writing something of their own.
I started consistently publishing Ruby on Rails-focused programming tutorials on my personal blog in June of 2021. I was fortunate that my articles picked up some traction organically, primarily through high rankings for a couple of articles with very low competition, popular terms for folks looking for information on new pieces of the Rails stack.
From June to December, traffic on my personal blog grew from < 1,000 visitors in June 2021 to > 5,000 visitors in December of 2021, almost entirely from Google search, with Twitter and Reddit making up the bulk of the rest.
In addition to the organic search traffic my tutorials attracted, my work was shared regularly on social media (especially Twitter and Rails-focused subreddits) when the niche technology I write about was mentioned.
I had some nice traction and some clear indicators that people were finding my work useful, and I knew that I wanted to write something more substantial than the quick, surface-level content that can fit into a single tutorial.
So, in November I tweeted a rough chapter list to see if there was any interest in a longer form version of my writing and it went about as viral as any tweet can with my tiny Twitter presence (maybe 200 people at the time of the tweet). I took that as another good sign and got to work.
Since the book is a step-by-step, line-by-line walkthrough of building a Ruby on Rails application, my time “writing the book” was split in half. I first wrote all of the code for the application, taking detailed notes of each change and splitting the code into what felt like coherent “chapters”. I did not write any prose during the first phase — my chapter outlines were code blocks and file names.
Once I had the application built and each code change captured in my rough outline, I went back through my notes and stepped through each change, writing rough explanations for each block and testing the code for completeness.
After the code and rough outline was assembled, I stepped through each rough “chapter” and started writing detailed prose and telling the story of each chapter. This process of build > code notes > prose was basically the same as my process for the tutorial blogs I’d been writing for months, so while it was daunting to write 11 coherent, sequential chapters, the production process being familiar was helpful.
After the detailed prose writing was finished, I went through several rounds of copy editing and polishing, along with 3 full run-throughs of each line of code to ensure accuracy and consistency. During this pass, I also captured all of the gifs and images I needed for each chapter to give readers landmarks to compare their progress to the book.
Once the polishing rounds were past, I sent out the book to beta readers (see below for details) and then spent a month waiting for feedback/incorporating feedback from beta readers.
All told, I spent approximately 150 hours coding, writing, and editing the content of the book before launch. Of that time, roughly 60 hours was coding, and the rest was writing and editing.
In early January, I wanted to give myself a clear deadline to finish the beta draft, so I sent out another tweet asking for early readers.
My idea here was to both get feedback on whether the content was useful/confusing/interesting/awful from strangers and to have an opportunity to test out the web application that I built to host my book (see below for details on that).
Approximately 30 people reached out expressing interest in being beta readers (this felt like a great number given my limited social reach) and I selected 10 to send the book to. I had never run a beta reader program before and had no idea what to expect, but I decided keeping the list of beta readers relatively short would be easier to manage and would keep me from being overwhelmed with feedback.
I ended up receiving feedback from 5 of the 10 beta readers, 3 sent very detailed feedback and 2 sent more general feedback, all of which was useful. The detailed, chapter-by-chapter feedback was most valuable, and I think I was quite fortunate to get as much detailed feedback as I did.
In retrospect, I should have done more to vet my list of beta readers — without getting lucky with few very kind folks I may have been left with no early feedback on the book because some of the people I selected were not ready for the commitment required to read and offer feedback on the book.
I’ve been coding for a long time, and I’ve bought quite a few programming ebooks (and plenty of physical programming books) over the years. When I started writing, I assumed that I would publish my book as a pdf, with basic syntax highlighting and otherwise kind of a meh experience. This is how every programming book I’ve read over the years was packaged, so that’s what I went in thinking about.
As I converted my content to PDF, I was very unhappy with the reading experience. I write long, step-by-step code tutorials, which naturally means my readers are looking at a ton of code, and copying/pasting a lot of it into their editors and terminals to follow along with the tutorial. On my blog, readers can click a “Copy” button to copy and paste each code snippet, which makes a difference when working with dozens of code snippets in a tutorial.
I also rely heavily on gifs to provide visual check-ins on what the application looks like throughout the book and, how the elements we build work — click this, this happens, click that, that happens. These visual elements make long coding tutorials much more consumable.
Both copy/pasting with a click and embedding gifs proved to be extremely difficult to accommodate when publishing the book as a PDF.
I also started having nightmares about finding typos the day after launch that day one purchasers would all see, and worrying about how to distribute major book revisions in a coherent way or otherwise improve the content of the book after launch in a way that ensured readers would be able to find it.
All of this weighed on me for weeks, and I ultimately decided the solution was to build a web app to serve my book as basically a fancy blog with user authentication in front of it. This is the silly engineer thing to do – build a whole dang web app to serve some static text content to readers, but that’s the path I chose.
Ultimately, building the simplest version of the book-as-web-app took ~15 hours to code and deploy to production. Much less than writing the book, but kind of a painful distraction while I was in the polishing phase and finishing the app was a blocker to delivering the book to beta readers for a few days.
I’m now on the hook for ongoing maintenance of the book’s web app, which has been minimal so far, but is something I have to be mindful of as long as the book is relevant.
Fortunately, readers have been happy with the delivery method of the book — so much so that I’m working now on building a SaaS to help other technical writers publish their books to the web without having to code a reading app from scratch like I did.
My very sophisticated marketing plan for the book consisted of a tweet thread drafted up the night before launch, along with a 20% discount off the list price during the first ~week after launch.
I sent out the thread on February 23rd with no idea what would happen.
My realistic goal for launch was to sell one copy of the book. My “I think I can do this goal” was to sell 20 copies of the book, and my “there’s no way I’ll hit this” goal was to sell 50 copies of the book in the launch period.
My sales chart for the launch week looked like this:
I hit all of my goals, which was a huge surprise.
A few things that worked during the launch week:
All of my sales but one came from Twitter and direct links:
After the initial burst of sales from the book launch tweet, sales dropped to basically zero until I started talking about the book again in my newsletter and on Twitter at the end of the discount period.
Unless I’m actively promoting the book, sales will be very slow!
In the three weeks since the discounted launch period ended, sales look like this:
Five total sales, with no more than two in any given day. The two sales in one day came on a day when I published a blog that included a brief blurb about my book at the end — probably not a coincidence.
In this time period I’ve also had one buyer ask for a refund, which I immediately granted and then helped the person work through the setup issues they had in their environment that made them unable to get value from the book — I wish I were at zero refunds, but 1 out of 63 feels okay.
Ultimately, I classify the launch of my book as a success based on the original goals I set for myself.
Writing a book was not very profitable on a per hour rate (nearly 200 hours for $3,000 is not a great return compared to my hourly contracting rate!) but I greatly enjoyed the work and I knew from the outset that this work was an investment in myself, rather than for immediate financial gain.
I learned a ton, got better as a writer, built a fun web app, created a product that a few people wanted to pay for, and earned my first real dollars on the internet, which feels like a nice milestone.
If I were going back to do the process over, a few things I would spend more time on:
hi David, great write up! 🔥Thanks! I love how engaged your twitter following seemed to be. W/ only 200, it seems like having 30 people wnat to beta read your book is amazing. Any tips on how you got such an engaged audience?
Thanks! I think I was fortunate that a few larger accounts retweeted me/interacted with the beta reader tweet which got into onto the feeds of folks that I wouldn't have otherwise reached.
My relationship with Twitter is complicated and I definitely am not the right person to ask about building an engaged audience there! Any success I've had on Twitter is entirely down to good fortune and writing valuable long form content on my blog that got folks to follow me mostly so they can see when I write a new blog post.
I wrote how I use Twitter here: https://www.indiehackers.com/post/how-i-built-a-healthy-happy-relationship-with-twitter-80294ca30c
Great analysis @davidcolby, thanks! I saw similar results after launching my book. Instead of twitter, I rode a HackerNews wave…
Hey, a few days ago I published an ebook boilerplate you might be interested in. Here's the reasoning behind it: https://www.indiehackers.com/post/the-2022-tech-stack-for-an-e-book-lessons-learned-ce34886908 Would love to hear your thoughts — esp. on the proposal at the end of the post.
Thanks, Joe, sounds like we've got similar interests here.
I'm working on a similar idea to your proposal (early landing page is at scriptive.io), but with books written in markdown rather than hosted on Notion to avoid vendor lock-in and for more value added to the book experience for the author and the reader.
Happy to chat more about this if you want dig a little more into the details.
Oh cool! Yea I get why you'd wanna avoid vendor lock-in but I'm in a Notion rabbit hole rn and it's difficult to escape — their editor is way too good to go back to markdown.. I think esp for tech books where you're explaining code, selective highlighting, for example, helps a lot. IDK how I'd do that with markdown?
Its interesting that you enjoy the Notion editor so much — I tried it for a while but moved back to Bear. Old habits die hard I guess!
I like the selective highlighting and the general formatting in your book, but the big drivers for me were the ability to embed a copy button with each code snippet, and line numbering of fenced code blocks. Maybe Notion supports those, or can be made to with some extra effort?
I haven't built the markdown editor to be a WYSIYG experience (its basically a clone of Github's right now) so it can happily accept whitelisted HTML elements. Things like selective highlighting, asides, and details/summaries are all doable without much effort which all get properly formatted when the chapter text is rendered.
I'm thinking about writing a book, and this was a great read to help me better visualize the process! Thanks for sharing!
"I greatly enjoyed the work and I knew from the outset that this work was an investment in myself, rather than for immediate financial gain." <-- Awesome attitude, sounds like it paid off big time!
Thanks for sharing this David 🙌🏻. I've been thinking about sharing some of my knowledge (based on blueprint workshop & specification that I provide for non-tech entrepreneurs that want a mobile/web app and don't know where to begin) into an eBook for selling or an online video course (using Teachable, for instance).
I'm also thinking about the value per hour that this would possibly bring and how to "get a vibe for the interst in this upfront".
Your approach and lessons learned give me input to start outlining my goals and how much work I would need. I also work towards validating buying interest upfront before actually putting in all the effort of writing / filming.
Thanks again and keep building, learning and sharing 🙌🏻
Thanks for the feedback! Glad to hear my write up was helpful for you as you think through the right approach for sharing your knowledge.
I think the thing that I lucked into doing right was validating the interest up front — the time and energy investment was really high and I'm not sure I would have gotten to the finish line without having publicly validated that people wanted what I was building.
Saying I was writing a book also put some helpful pressure on me to actually follow through, which made it easier to carry on when the work felt daunting.
Good luck on your journey!
Solid underlining for validating before creating, thanks David!
David, thanks for the write-up. The thing that stands out to me is the new book-as-an-app that you built. There could be lots of interesting use cases for that type of product. It might be worth exploring as it's own product, as you clearly felt the pain of clunky PDFs.
Thanks for the feedback!
Agreed that there could be interesting use cases for the book-as-an-app — I'm working on generalizing the app into a SaaS product at scriptive.io.
Still a few weeks away from being ready for beta readers and lots of work left on the marketing side, but I'm excited to see how it evolves.