For the last 6 months, I've been working with Packt publishing writing a book on Angular. This is the first time I've ever written a book and it has been a big old slog of work, but it has been worth putting in the work.
We all see these 'famous' developers who have written books, attend all the conferences and even find time to work on open source projects and while it's not a good idea to compare yourself to others, sometimes you can't help yourself. So for the last year, I've had an idea of writing a book, but never actually started. Then I was contacted by Packt asking if I'd be interested in writing for them. I think they had read some of my blog posts and were interested.
This was the push I needed, and so I quickly replied to them and said yes, my life as an author has started. But if you've never written a book you can be completely unprepared for what you need to do. I wish I had either asked someone about what is involved in writing a book before I started, it may have put me off.
So what you need to know before writing a book is, first, no matter how much time you think it'll take it will take longer. I originally thought that I'd find enough time in the day to write and then be able to make good progress on the book. You see I work for myself as a contractor, so if I don't work I don't get paid. I needed to carry on working as I write the book. I did think that it'll be easy to work all day and then write for a couple of hours in the evening. Unfortunately, this did not happen every day, first of all, you finish a days work and your brain doesn't have the capacity to then switch from coding all day to writing. It's hard to concentrate, what you write makes no sense and you just can't think about coding after spending all day working as well.
So I thought I'd spend more time at the weekends writing, but soon life gets in the way. You need to spend time with your family or there are things to do around the house. Your plan of spending all day Saturday and Sunday may soon turn into an hour on Saturday and a couple of hours on Sunday. (Thankfully my wonderful wife is very supportive of me and was happy for me to work on the book when possible).
I soon found that getting up early and spending a couple of hours in the morning helped. I was getting up at 6am and writing before work started. I had a contract where I could work from home, that helped a lot.
The second thing you need to know about writing a book is that you need to be consistent. Writing every day if you can, even if it's just an hour helps so much. Getting that daily writing means that you can carry on from where you were in the previous day far easier. You can get 'into' writing quickly, ideas for what you are going to say come to you easier because you've got ideas flowing from you. It's like pushing a large ball up a hill, the more momentum you get the easier it is. Momentum is key in writing a book.
You'll also have to be comfortable with feedback on your work. As I submit chapters to the publishers they are reading and reviewing them. Which means I get feedback on what I've written, now if I've written a section or a sentence that I think is fine, but the publisher thinks it's confusing or needs some more work, you have to be comfortable with this feedback and respect the experience they have. I may know about Angular, but they know about books.
Not only do you need to be consistent and declined you also need to have a detailed plan of what you're going to write. Before I started I need to provide an outline of the book, what the chapters are, what the reader will learn in each chapter and how many pages you'll have in each chapter. In hindsight, I wish I had spent a little more time on this plan than I did. I guessed the number of pages for some chapters and you will have to fill those pages. So if you think you can write 40 pages on Unit Testing, you may find this hard, think about it that's about 12,000 words!!!
Now, not only do you have to write the text for the book you need to find the time to write the supporting code for the book too. This can take a large amount of time as well and needs to be something to consider if you're planning on starting a book
Now, while I found writing a book hard I do think to go through the process I've learnt so much about Angular, the topic of the book. Having to explain concepts to someone is the best way to learn and to find out what you do know about a topic and what you don't know. You really have to research and understand a topic before you can write about it. Gaps in your knowledge will be filled in through this research.
So would I go through this again? I think I would, but maybe on a smaller scale or through self-publishing. I have been thinking about writing a smaller book on a topic within Angular, something on NgRx maybe.
Writing is hard, it takes planning, time and dedication, but the learning you'll do through writing is a great benefit.
My book isn't out yet, hopefully soon, just going through the last reviews and amends now, but when it's out I'm going to let as many people as possible know, and hopefully, someone will even buy it.