I got this question repeatedly since my last article on the topic. Readers asked me how much I make from a book, and what are my benefits for writing books.
I wrote before about why I published my first book, “Usable Software Design”. It was simply because I wanted to publish a book, and because I believed that the ideas related to usable software design deserve to be heard. I wanted to publish a book for about 25 years at that point.
I knew however that it’s very unlikely I’ll get a lot of money from writing. Not everyone is a JK Rowling or a Stephen King, and even less so in technical books. Not even Martin Fowler, a well-known personality, author of core books, and a prolific author, doesn’t get most of his money from books.
So then, what are my reasons for writing books?
First reason is that I love writing. I would be writing anyway; so why not writing something that might last and reach a wider audience? At the same time, I want to improve my writing, and what better way than to practice and get feedback from professionals?
Second reason is that writing a book allows me to focus on a topic and understand it deeply. I could do this without writing a book, but it turns out that being “forced” by deadlines and by editors who depend on me helps maintain my attention for longer periods of time. Even if I master the topic, this process allows me to do a 360° flight around the ideas and come up with better arguments, with metaphors, and with more questions.
Third reason is that it’s fun to set a challenge and deliver on it. There’s a good example of this in my “Hands-on functional programming in C++” book. I wanted for a long time to introduce monads by first explaining their advantages through examples, and only at the end mention “and by the way, this construct is called a monad”. I passed this challenge – the chapter on design patterns from the book covertly discusses monads.
Fourth reason is the long tail. As I mentioned, a book doesn’t necessarily pay, and it rarely pays in the short run. But it’s not a linear progression. Let’s say I write ten books, and my tenth book becomes popular for a certain reason; this will influence sales for the other books as well. Or, the reason the tenth book becomes popular may be partly because it is the tenth book. I therefore hope that by the time I have to retire (which I hope will be quite far away in the future, because I love what I do), my revenue from books will be nice, if not consistent.
Fifth reason is that it’s great to have my voice heard. I believe I have things to say, things I’ve learned during 20 years in this industry, working in almost every country in Europe, in multiple programming languages, and in many different environments. Writing books gives me a chance to distill my experiences and understand them better, while also expressing them. It also helps that I’m now 42, and I stopped being worried about expressing my ideas. I’ve also disconnected from the success of my ideas; I believe my experience is valuable, I do my best to share it, but it’s up to the world what it does with it – I’m not responsible for that.
Based on this analysis, my plan is to continue writing and publishing books. I’m in this for the long run. I’d like to publish at least 10 books. Some of those books will be with an editor, on themes that were market-researched and safe, with the benefit of getting some money whether the book succeeds or not. The other books will discuss wild ideas, in the spirit of “Usable Software Design”, that I’m willing to self-publish, put my own time and money on the line – because I believe these ideas need to be heard.
Will this work? I don’t know, so let’s talk again in 30 years or so ;).
In the meantime, check out my book “Hands-on Functional Programming in C++”. The book gives a practical perspective on how to use functional programming, which you can apply even if you’re not a C++ programmer or if you’re just beginning with C++. The language has evolved a lot, so if you learned C++ 10 years ago, you may be surprised by its new features.