Writing a Programming Book in 2021
It is said that there are three things you must do in your lifetime: plant a tree, have a child, and write a book. I recently finished the last one. Nevertheless, I wrote a programming book. A programming book in the 21st century with all those wonderful online resources you can find for free? Yes. Are you some sort of romantic fool? Maybe. Let serve these lines to describe my experience and give you some do’s and dont’s that can save your time.
Why a book?#
Now we have many available formats to broadcast any educational material. They are handy and easy to use. We have platforms where everybody can develop content like YouTube. Or platforms such as Coursera where universities or recognized education institutions can publish their courses and materials. Then, why a book?
Some reasons I find convincing for writing a book.
Writing well improves communication It recently became a trending topic how Jeff Bezos banned PowerPoints in favor of six-page memos. The richest man on Earth asking his employees to elaborate his ideas instead of writing a bunch of bullets. A craving? I don’t think so. Only if you can elaborate your ideas using your language, you can properly disseminate them. This is something we have forgotten because of our laziness in writing.
You don’t really understand something unless you can explain it to your grandma This is something Einstein said. He was right. I already knew all the concepts I explain in the book. However, I have to say that explaining them was not so easy. I had to revisit some of them, write and rewrite many examples until I was happy with the given explanation. I can say this exercise has improved some of my programming skills.
Reading is a good exercise for your brain The expansion of video on-demand platforms, in particular YouTube, has made easily available a large number of educational resources. I use it, you use it, we all use it. However, it has been demonstrated that reading is more efficient and brings great benefits to your brain. This doesn’t mean you shouldn’t use online video platforms. I find them a very valuable complement.
Make a valuable contribution By making a valuable contribution I don’t mean my book to be the next Hamlet or a ground breaking best-seller. Not at all. What I expect is to help someone, somewhere to fix, solve, improve or advance in his life or career. That should be the ultimate goal.
Credibility You are going to spend a while collecting, redacting, and formatting ideas. Finally, you will put your name there. If you have made a good or bad job your name will be attached to it. This is something that boosts your credibility.
You need almost no resources Writing is the cheapest dissemination activity. No cameras, no microphones only a computer and your favourite text processor.
Self-publishing or looking for a publisher?#
If you write a book, the next step is to look for a publisher. Someone who will publish your book, pay for the production costs, marketing, proofreaders, marketing, etc. Sometimes publishers contact you looking for a book about a specific topic. In any case, the publisher acts as a quality filter and brings some resources that can be difficult (or expensive) to be obtained by the author. We all know the stories of great authors getting rejected manuscripts one after the other. Well, this is not my case. I wrote a programming book. Of course, we all know there are publishing houses with a long catalogue of programming languages. And they do a good job.
Self-publishing has always been an option for authors. Some publishing houses offer you resources to publish your work. You simply pay them and they review and print your book. It seems to be a fair arrangement. However, after five minutes in Google, you will find out that many self-published authors had terrible experiences or were scammed. Finding a decent and professional publishing house requires time. You cannot trust the first one you find in Google.
Other platforms try to digitalize the process and help you reach a larger audience. Probably the most popular is Kindle Publishing by Amazon, but there are others. You write your book, prepare a cover, upload it, and make it available to the readers. It sounds awesome, and actually, it is. However, you have to be your own publisher which means that you must deal with the layout, cover, proof-reading, title, marketing, and all the tasks an editor is supposed to do. I can tell you this can be an overwhelming task if you want to reach a certain level of quality.
I chose self-publishing. Why? Well, I wanted to go through all the journey from writing the content to the cover design, and I did not feel in the mood of looking for a publisher. I knew it would be quite a ride, and it was. I was particularly ambitious, especially with the book layout, but this is something I will explain in another post. Then comes the marketing and all that…
My recommendations#
There is a good bunch of resources on the Internet about self-publishing so if you find you had enough you can skip this. However, I would like to share some of my thoughts with you.
Stay to your table of contents A book has a beginning and an ending. Remember that. Write down your table of contents before you start writing. Spend your time defining the contents, they must make sense in your head. Remember, a book tells a story, and a programming book does it too. It is tempting to start writing. Don’t do it. You will regret it.
Structure your contents A programming book is particularly demanding in terms of contents. Inside a chapter, you will have text, code, figures, tables, formulas, plots, etc. Think about everything you will need and prepare a template. Will you refer to your images as figures or pictures? Is your code going to be formatted or highlighted? Do not move forward until you have a well-defined structure.
Set a writing routine This is really important. This is not about intensity, it is about consistency. If you stop writing for a long period, this can be catastrophic. If you stop writing, this must be scheduled. Maybe you can use this break to read your work so far. And this leads me to the next point.
Read, read, and read again You will be your first reader. This means that you will be the first person to find typos, errors, and inconsistencies. The only way to find them is to read. If you feel stuck, you can simply read over that section you wrote weeks ago. You will probably find errors or a different perspective.
You don’t judge a book by its cover, but everybody do Let’s be honest. A book with a good cover is a million times more appealing than that title in Comic Sans. This is even more important if nobody knows who you are.
Be humble When writing a technical book you must accept something: you are not the one who knows the most. Maybe you have created a new technology, but even in that case, I’m sure that someone may find an error or a misleading explanation.
Enjoy the ride When someone pays you for your work there is a wonderful sensation of self-realisation. Be thankful to those people who trusted you. Remember that this is only the final step. Every step during the writing process brings you a bit of wisdom that improves you as a person and professional.
Be ready for new editions Technical books are never finished. The book has just been published and I’m thinking about improvements, extensions, and new sections. Self-publication is extremely flexible and helps to release new editions.
Summary#
If you have reached a certain proficiency in any topic, art or science, a book is a wonderful channel to disseminate and share your knowledge. Be bold, make your index, and start writing. Writing will help you improve your communication skills. There are a million guidelines for authors to improve their skills. The bullets I presented here are my humble contribution from my experience self-publishing a programming book.
Thanks for reading.