A breakdown of selling 640 copies of my first product Deployment from Scratch.
I don’t know exactly when was the first time I thought I could write a book, but at some point, I found myself at the crossroad of continuing my job as a CTO of a small startup or take some time off to improve my health (sitting jobs are not healthy!). I chose to prioritize my health and do something on my own. I felt that starting a SaaS business was a big task, so I decided it would be an excellent time to start with a book.
I chose a topic that combines my Linux background from Red Hat with being a web application developer. I was not thinking of any topic I might like for a simple reason. I had no real following online, so the only thing that could help me sell was my credentials and being a little unique in my approach.
I felt that despite there being a lot of DevOps books, their focus is always on a particular tool or cloud. So I chose to explain everything without any high-level tools, which I think is a good way to learn and sometimes completely enough. It’s how I deploy my projects, after all.
And that’s how the idea of Deployment from Scratch was born. I called it VPS for Makers back in October 2018.
Once committed, I announced the start with this post. The post goes over a few of the book’s main topics, and you can notice that my idea was to keep the book lighter and smaller. The feedback I gathered later from the mailing list made me build a vast resource of 500+ pages (yes, people wanted more, not less).
I then posted an announcement to the Ruby subreddit, which I am a regular of. In the end, I didn’t start with a question but instead said I’ll attempt to do it. Of course, I could have still abandoned the idea if there was no interest.
There is nothing like marketing too early.
You signed up for two jobs if you decided to write a book. Writing and marketing. And marketing is likely even more vital if you want people to find and read your work. Luckily I was writing a blog for many years, so I had at least one marketing channel. Once I decided to write it, I put the information and links everywhere on my blog and social media.
Note that I had a minimal following which, minus the bots was almost non-existent. Nevertheless, use what you can, and try to grow your marketing channels alongside your writing. Yes, it’s even more challenging this way, but you want a sale in the end, don’t you? I wanted. So apart from posting on my blog as usual, I also begin to tweet regularly.
I wrote a dedicated post before on how I got the first 200 subscribers for my book. It took me 493 days and involved renaming the book twice.
I started writing in October 2018. I did five months of full-time writing in Prague before accepting a part-time contracting job. Initially, I thought five months might be enough for me to write it, but the scope quickly grew, and the progress was slow. Because of that, my writing continued during my adventures in Colombia, Mexico, Panama, Vietnam, Albania, North Macedonia, and Serbia.
In the end, I counted a more than one year of full-time work on the book. Yes, it might also be due to me not being that good or not writing 8/h a day, I’ll admit. But I want to stress that it was a significant undertaking on my side, not a weekend project. I also only wrote bachelor’s and master’s theses as long-form texts before, and they were far shorter. Only the master thesis was in English.
So writing the book was hard. And pretty chaotic by using a big Trello board and TODO comments everywhere. I also changed the way I built the book PDF along the way by abandoning gitbook and adopting Pandoc. Part of me is surprised I had something that looked coherent in the end. I also relied heavily on Grammarly Pro and volunteers that were interested in proofreading since English is my second language.
2.5+ years in, I finally started to sell the alpha version of the book. Starting April 2021 while enjoying the seaside in Durrës, Albania, I started to sell to a mailing list of 600+, and made 20 sales over the first 24 hours. I finished selling 80 copies that first month, which roughly translates into $2000.
After a few alpha versions, I made a beta version as I was closer to the final release. I was able to sell 178 copies before the final release in the end. It helped me a lot mentally that I might not face a zero. Of course, money in the bank helps too. If you can, do some pre-sale or pre-release sales. It will do wonders.
I didn’t do a pre-sale, and I am super happy about the decision. I wouldn’t want to keep people waiting for three years to receive a product from me. It could break my spirit (which was low at times). So I did a pre-release of something that could be a book already (the first ten chapters that worked together) while having most of the rest done.
Most of the marketing continued to be growing my mailing list with my blog and some tweeting.
As authors, we never want to finish. There is always something to improve or to get back to. I finished while still having an entire Trello board with ideas and references to check. But at some point, you have to say enough is enough. I announced the 1st edition release on my blog on 1st September and used Reddit to announce it to a few communities.
The first and main one was a Ruby subreddit. I knew I’ll do it from the beginning. They were a few reasons for it, but the main one was that I actually used a post to this community as part of my validation. So then, when I finished, I posted the announcement as follows:
Posting on Reddit is a hit or miss, and self-promotion is certainly thrown upon. But creating a detailed post that continues after three years was highly rated for what can be considered an advertisement. I guess that most developers also know they do not have that much money in writing and thus appreciate if someone puts in the work.
The alpha version was also a reason I got invited by Jeremy Jung to the Software Engineering Radio podcast which then aired during this release month. Good timing.
The release month ended with 96 sales and $3950 in the bank, mostly from the mailing list, but several Reddit announcements helped. Some, of course, ended up with zero attention. Also, if you plan to self-promote on Reddit, be a real Reddit user first. I spend time on Reddit and try to follow the rules.
After the release I got lucky two more times. First time, I got invited to another podcast. We did an episode with Jason Swett from his The Code with Jason Podcast.
Second time was a successfull submission to the SHOW HN section of Hacker News. HN is a place I visit daily, and I even made it to the homepage before few times. So I knew HN front page brings you a lot of traffic, although I never benefited from it apart from boosting my ego. People come to read your post and leave. I never got to the front page by posting myself, either.
Still, it was a place to try my luck. In December 2021, I found myself sitting in my Airbnb in Dar es Salaam, and I decided it was time to pull the trigger. The timing appeared to be perfect. Almost too perfect since the few good comments were attacked for being ingenuine. But it didn’t stop the post from success. 300+ upvotes brought me 100 sales in a day and another 50 the next day.
Sales of digital products come with spikes of virality (usually when they release), but go down over time. My best month is the one when I posted to Hacker News in December 2021, a few months after the official announcement. I made $8930 in sales. In the lowest months, I made $640.
Since I worked on the book for a full year in terms of hours (spread in three), you could say it earned me a salary equivalent of ~ $2000 (before tax). So it’s not that much from a salary perspective especially considering how hard it was. But despite that, it feels amazing. I was basically able to write and market a technical book. I am proud of myself for that.
As you figured out by now, I am self-publishing. I wonder how much I would get with a publisher, but I just don’t believe I would achieve such numbers for myself. Could they really find thousands and thousands of customers for you? The support would certainly be appreciated as I had to depend on volunteers. But I did find people that helped me a lot. In a way, it would be easier, but I also enjoyed the challenge and being my own boss. I would likely self-publish again, but there might be a case or time when going with a publisher is a better choice.
If you are a fellow dev, you might have to consider writing a book yourself. And so, apart from the odds of success, you might want to know-how. If you make a deal with a publisher, they would likely have a system in place for you to use. But if you are going to self-publish, it’s up to you. I wrote my book in Markdown and LaTex. I then built the PDF using Pandoc. I also used a lot of Ruby, which I already wrote about in Ruby for ebook publishing. I would make my whole setup public if it weren’t such a mess as it is. I did the technical illustrations with draw.io.
I don’t know how many more books I can sell, but I gave myself a little goal to make it to a thousand copies this year. So far, it looks like I won’t make it, but I am not giving up. I have some updates planned for the book – I will probably expand the text on containers, secret management, and database failovers. As for marketing, there are still things to try. I can still form partnerships, find affiliates, or try advertising. I am also considering selling the standalone PDF, which would allow me to sell at a much better price. We’ll see.
I guess the final thought should be whether this is something I would do again. After all, it was a lot of work over a couple of years. Maybe the single most mentally challenging thing I did, even (although I might be saying this only because I forgot all of the pain of studying informatics at this point). Still, writing a technical book in one’s line of work is also satisfying. Seeing the final result, the 5-star ratings, or emails as well.
I say I would do it again. Perhaps a bit differently if I would know beforehand it might take so long. However, I don’t think I would go through it again once I did it. I plan to continue the work in some capacity, but I wouldn’t be able to roll out a similar book again. I would write a novel instead (hah).
← IT'S OUT NOW
I wrote a complete guide on web application deployment. Ruby with Puma, Python with Gunicorn, NGINX, PostgreSQL, Redis, networking, processes, systemd, backups, and all your usual suspects.