100 things I learned writing my first technical book 
Tags: javascript, java
Published: 2021-12-26 05:58:28

---
title: 100 things I learned writing my first technical book 
published: true
description: A hundred things I learned writing my first technical book "Data-Oriented Programming"
tags: javascript,java
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mjivc53fr5thzskss7om.jpg
---

I just completed the manuscript of [Data-Oriented Programming](https://www.manning.com/books/data-oriented-programming?utm_source=viebel&utm_medium=affiliate&utm_campaign=book_sharvit2_data_1_29_21&a_aid=viebel&a_bid=d5b546b7) and I thought it was a good opportunity to reflect on what I learned from this journey. 

Here are a hundred things I learned writing my first technical book:

1. Writing a technical book is much harder than writing blog posts.
1. Writing a blog post is like running a sprint while writing a book is like running a marathon.
1. Writing my first technical book without a publisher would have been a MISSION: IMPOSSIBLE!
1. Each piece of the book content must be clear and interesting. Each part, each chapter, each section, each paragraph, each sentence.
1. "Clear" is more important that "interesting". If something is not clear to your reader, it cannot be interesting for for them.
1. A possible way to make things clear is go from concrete to abstract.
1. A possible way to make things interesting is to teach the material as a story with fiction characters and a bit of drama.
1. The "why" is more important than the "what".
1. The "what" is more important than the "how".
1. An average writer makes the reader think the author is smart. A good writer makes the reader think the reader is smart.
1. A technical book is written for MQRs (Minimal Qualified Readers). 
1. Figuring out what are the qualifications of your MQRs (Minimal Qualified Readers) is important as it allows you to assume what knowledge your readers already have.
1. It's hard to figure out what are the qualifications of your MQRs (Minimal Qualified Readers).
1. Checking book sales could be addictive.
1. Making a good Table of Contents is crucial as it is the first part of the book potential readers will encounter.
1. Making a good Table of Contents is hard as you need to figure out what you really want to talk about.
1. The Table of Contents might evolve a bit as you write your book.
1. You should resist the temptation to write the first chapter before the Table of Contents is ready.
1. It's not necessary to write chapters in order. But it's easier.
1. Never assume that your readers will read the next chapter only because they have enjoyed the previous chapter.
1. You should always convince your readers why what you are teaching is important and relevant for them.
1. Before writing a chapter, you should formulate to yourself what is the main objective of the chapter.
1. If a chapter has two main objectives, it's a sign that you should split it into two chapters.
1. A chapter should be treated like a piece of software. You should resist the temptation of writing the chapter contents without a plan.
1. A possible way to make things interesting is to use concrete examples.
1. A possible way to make things clear inside a chapter is to start with the easy stuff and increase the level of difficulty as the chapter goes.
1. Do not hesitate to highlight sentences that convey an important message.
1. It's OK to engage in writing a technical book without mastering every topic you want to cover in your book.
1. Writing technical book involves a descent amount of research even if you consider yourself as an expert in the field.
1. Finding attractive but accurate titles to book chapters is an art.
1. You can learn a lot from a failed attempt to write a book, provided that you put your ago aside.
1. If you try to write a Wikipedia article about the topic of your book before it is mentioned by other sources, it will be rejected.
1. It's possible to write a technical book while keeping your day job as a programmer, provided that you are willing to wake up early or sleep late.
1. Writing a technical book takes between a year and two.
1. Don't rush! Enjoy the journey...
1. It makes lot of sense to use a source control software for your manuscript.
1. AsciiDoc rocks!
1. PlantUML rocks!
1. NeoVim rocks!
1. Using a tool - like PlantUML - that generates diagrams from text makes it easy to refactor multiple diagrams at once (e.g rename a label, change a color).
1. People on Reddit could feel hurt by opinions that take them out of their comfort zone.
1. On Reddit, when people feel hurt, they could become violent.
1. Being mentored by an experienced writer is a blessing.
1. If you are lucky enough to be mentored by an experienced writer, ask them to be hard with you. That's how you are going to improve your book!
1. A good technical reviewer is a representative of your MQRs (Minimal Qualified Readers). They can tell you upfront is something is going to be unclear to your readers.
1. You should make sure your readers will never frown while reading your book.
1. A project manager that pays attention to the details is important.
1. Your publisher is your partner.
1. You could make more dollars per copy by self-publishing but you'd probably sell much less copies.
1. Asking early feedback from external reviewers is a great source of improvement.
1. Releasing an early version of the book (approx. when the first third is ready) allows you to find out if the topic of your book is interesting.
1. Finding a good book title is hard.
1. Finding a good book subtitle is even harder.
1. You need to be very careful not to hurt the sensitivity of any of your readers.
1. Having your book featured on HackerNews home page do not mean selling lots of copies. 
1. Twitter is a great medium to share ideas from your book.
1. Writing a book could sometimes take you to flow.
1. My real motivation for writing a book was neither to be famous nor to be rich. It only wanted to accomplish a child's dream.
1. It's hard to find your voice.
1. Once you have found the your voice, the writing flows much better.
1. Usually readers stop reading after reading the middle of the book. If you want them to read the second half of your book, you need to find a way to hook them.
1. A possible way to hook your readers is to tell a story.
1. Inspiration is not linear. It's OK to stop writing for a couple of hours.
1. Motivation is not linear. It's OK to stop writing for a couple of weeks.
1. Be open to critics - even when they hurt your ego.
1. The more you write, the more you like it.
1. It's safe to assume that every developer can read JavaScript. 
1. It's a great feeling to mention the work of other authors.
1. You should make sure that each and every code snippet - that appears in your book - runs as expected.
1. Invoking "it's so obvious I don't need to explain it" is not an acceptable argument. 
1. Writing your teaching materials as a dialogue between an imaginary expert and a imaginary novice is a very useful process in order to figure out what questions your materials might raise in your reader's mind.
1. Sometimes the questions that an imaginary novice would ask about the stuff you teach would be tough. Don't ignore them. It's an opportunity to make your book better.
1. Rewriting a chapter from scratch because you forgot to save your work could be a blessing as writing from scratch might lead to a material of higher quality.
1. Writing in a coffee shop makes me feel like a famous author, but in fact I am much more productive at home.
1. Writing a preface - after the whole manuscript is ready - is really a pleasure!
1. You should think about the way your contents is going to appear on the paper. Use headlines, highlights, call outs and diagrams to make sure it doesn't look boring.
1. Resist the temptation to impress your readers with "cool stuff" if you think it might confuse them.
1. Working on your book is a good reason to wake up early. Sometimes, before sunrise (even in summer!). 
1. Include at least 2 or 3 diagrams in every chapter. It makes the material fun to read and easier to grasp.
1. Draw your diagrams on a sheet of paper before using a drawing software.
1. It's OK to use colors in diagrams for the online version of the book. But remember that the print version of the book will be not be in color.
1. Mind maps are a great visualization tool. Use them smartly.
1. When a section is more difficult to read that the others, let your readers know about it.
1. When a section is more difficult to read that the others, make it skippable.
1. It's OK - from times to times - to copy-paste a diagram in order to save from your readers the need to flip back.
1. Asking a friend or a colleague to read your work in progress is not a productive idea. The best feedback come from people you don't know.
1. Brainstorming with a friend or a colleague about a difficulty you encounter might be a productive idea.
1. Throwing away some (good) ideas is sometimes necessary. Not easy but necessary.
1. When you are blocked in the middle of a chapter, it might be a sign that you need to rethink the chapter.
1. When you are blocked in the middle of a chapter, it might be a sign that you need to rest and come back later.
1. Adapting parts of your book to blog posts could be a good idea. But you need to resist the temptation of copy-pasting verbatim as the blog posts will be without the context of the book.
1. If feels great when someone with lots of followers tweets about the fun they had reading your book. 
1. Don't worry if your English is not perfect. Your manuscript will be proofread later.
1. "Not being an native English speaker" is not an excuse for your lack of clarity.
1. Writing an appendix is much easier than writing a chapter.
1. Using humour in a technical book is possible. Hopefully, it's well appreciated. 
1. You should write the chapter introduction after all the other parts of the chapter are written.
1. Getting positive feedback - even from people who are easily enthusiastic - feels good.
1. Front matter is the last part an author writes.
1. Writing a hundred things you learned from writing a technical book is not as difficult as it may seem.


That's it! If you find some of these lessons interesting you might want to write a book of your own or to take a look a the one I wrote: [Data-Oriented Programming](https://www.manning.com/books/data-oriented-programming?utm_source=viebel&utm_medium=affiliate&utm_campaign=book_sharvit2_data_1_29_21&a_aid=viebel&a_bid=d5b546b7).