Thoughts on Publishing a Technical Book (Part 1)
I recently published my first technical book, Django for Beginners, and wanted to write down some things I’ve learned along the way.
Django was the first web framework I truly learned but it was a difficult struggle. Python, the programming language it’s written in, is a very comfortable first language for newcomers. However Django documentation is strongly geared towards experienced developers who already know Python well and have previous web development experience. I really struggled at first learning the basics in Django. But for some reason I kept at it, even as other languages/frameworks like Ruby on Rails have done a much better job of being friendly for newcomers.
The book thus was my attempt to write the equivalent of the Rails Tutorial. I wanted a beginner-friendly guide to Django that showed how easy it can be to use without overloading readers with all the advanced features it also has.
The first iteration was a website where I wrote a beginner-friendly version of the official polls tutorial, which I find to be way over-the-head of most newcomers. This received some initial traffic as clearly others had trouble following it, too. It was only a year ago, after the acquisition of a startup I was involved with, that I decided to become serious and write an actual book. Typically the process took much, much longer than expected. Writing the actual code wasn’t that hard. But figuring out the proper tone for the text, updating all the examples, updating the version of Django since it changed from 1.10 all the way to 2.0 while I was writing, all contributed to additional time. By the end of 2017 the online book was complete and receiving substantial internet traffic. The site had become a first-page Google result for “django tutorial.”
I opted to use Leanpub to self-publish my book. The content was already in Markdown format and for $99 I could update and format a book version that can be packaged into various formats to sell on Amazon and elsewhere. Leanpub is pretty good and I don’t have any real reservations in recommending it. Obviously a professionally designed layout would look better but given how frequently I make updates to the text, I think having an automated layout approach works best for now.
Finally a few weeks ago I went through all the steps to publish the book. It’s now available on Leanpub and also Amazon in Kindle and paperback format. I emailed my newsletter subscribers upon launch and received a nice bump in initial sales. As of this writing I have daily sales on both versions of the book though it’s far from becoming a bestseller.
Dollars and sense
Now that I’ve written and published my own book I have a far deeper appreciation for why there’s so little up-to-date Django content. Or more generally: up-to-date technical programming content. Simply put: the economics are tough.
Technical books like mine require constant updates. Django has a yearly release schedule so at least once a year I will need to update both the text and the code for a new version. I also have to educate myself on all the changes and stay knowledgeable which can be challenging if work forces me to spend most of my time in a different language/framework ecosystem.
Amazon makes the publishing process pretty easy, but any book sold over $9.99 receives a 35% royalty on Kindle and roughly 40% for paperbacks. A Kindle book sold for $9.99 receives a 70% royalty. So I make the same amount at the end of the day charging $9.99 for my book as I do charging $19.99. However, Amazon is not the only place I sell my book and even $19.99 feels like a low price to me for something that is current and technical. By contrast Leanpub provides a 90% commission but the traffic on the Leanpub site is not very large. Amazon is the big fish in the publishing pond.
Given these economics, if I wanted to make $25,000/year on the book I would need to sell 3,571 copies per year. And if I wanted to become a full-time technical book writer making, say, $100,000 year, I would need to average sales of 14,286 a year. Note that that salary does not include health benefits or other goodies that normal full-time employment provides. So really it would require something closer to $130,000 year to even up. For these reasons, almost every technical writer holds down a full-time job or runs a software consultancy where they can treat a published book as a marketing expense. Even then, keeping the book up-to-date often just isn’t worth it.
Videos are an area that is interesting: many developers prefer to see a live screen of content. However the production costs of high-quality video are quite high and it’s very tough to make updates. You can’t just edit/replace changes but must redo everything from scratch. Anyone can post content on YouTube though you need literally millions and millions of views before the economics move the needle at all. There are a few entrepreneurs who sell video courses full-time such as Wes Bos, Scott Tolinski, Tyler McGinnis but these seem to be true outliers.
Future
So what does the future hold? Personally I feel like I have all this web development knowledge I’d like to share with the world. I learned to code in my 30s so my take on things is different than web natives who have been coding since they were in middle school. And there’s room for many different approaches to teachers so the more people teaching what they know about web development the better.
However when I look at the cost/time tradeoffs of actually producing content vs working a normal job, it’s hard to see how regular content creation wins out. I enjoy doing it for now but I can easily see a time when I’m swamped at work, swamped with personal obligations, and writing out another tutorial or even keeping an existing book up-to-date with the latest release of a framework just doesn’t feel worth it.
I hope that’s not the case. I’d like to keep producing educational content on the side since it’s fun and solidifies my own understanding of concepts. But it’s still quite a challenge to create high-quality resources even if you have the knowledge and the desire to do so.
One interesting approach is that taken by sites like Thinkster which are web only. They have free and premium content which is primarily text-based so there’s no bouncing a user off to another site to buy an actual book. They also charge a monthly subscription, not a one-time fee. And since they’re not going through an intermediary like Amazon or dealing with physical books, the take-home revenue is closer to 97% (3% for credit card processing) rather than less than half. The same approach is true for entrepreneurs selling video courses from their own sites.
We’ll see what my own future holds. I’m pleased I published my first book. I plan to keep it up to date and I’d like to write more in the future. I hope the considerations I’ve laid out in this article are helpful–not discouraging–for other developers who also want to create high-quality educational content.
I’ve written a follow-up Part 2 piece on what I’ve learned in the six months since I initially wrote this.