Embarking on the adventure of penning down a new book on React Anti-patterns has been an exhilarating journey of discoveries and learning. In this newsletter issue, I share a snippet of this expedition from its inception to the challenges encountered, and the evolutions in my narrative approach along the way.
I’m Embarking on a New React Book
I kicked off my next book journey since late May this year after my travel back from China. It’s a book all about React Anti-patterns (and naturally, after discussing the issues, various solutions follow). This topic has held my interest for a long time, and I haven’t noticed many discussions around it in the React sphere.
The book is structured into 13 chapters with around 300 pages as planned, and it’s quite a chunk. I was quite confident about a few chapter contents as I have some blog posts I believed were good enough to be transformed into a chapter, but for the rest 2/3, it’s somewhat uncharted territory. I either didn’t have good examples in mind before I picked it up or I had some vague ideas but not well organized.
My Struggles
After breezing through the familiar 1/3, I began to worry. And it got worse when I pondered on the rest of the content. Worrying itself turned out to be much worse than the unprepared (unorganized) content.
But an interesting facet about non-fiction book writing is you don’t have to follow the sequence; it’s nice to, but not necessary. One downside is that when you introduce a new concept in a later chapter, and it should have been introduced in a previous one, you need to update the index and references. But other than that, you can skip a few chapters and start with a chapter with some examples you think fit.
Knowing what to say is important, but sometimes what's more important is knowing what not to say. As a naive author, I was obsessed with dumping what I know to my readers, maybe to appear knowledgeable to convince the readers my content is trustworthy - which is a really bad habit, but hard to detect by oneself.
Don’t assume
I sought advice from my colleague and book author Martin Fowler one day, for reviewing the draft of another book Test-Driven Development with React. I received a lot of valuable feedback, and one of the most inspiring comments was like “You seem to be assuming the reader know what enzyme does here…is it necessary to introduce this concept? as a reader am I familiar with the library you use here already?”, and at that moment, I realized how many such assumptions I have made in my books, and how much unnecessary content I have written.
Since then, I changed the way I write. I resisted the temptation to say more content. Instead, I only introduce one concept at a time, removing anything not directly linked. It turned out people started to appreciate this new approach. The new definition of being knowledgeable to me is to know what you don’t say, and focus more on what you have to say.
Building the Graph
Back to the anxiety - my problem isn’t that I have nothing to say, actually quite the opposite, there's too much content and some of it is less organized, I didn’t have a graph in my mind at that point. The graph doesn’t come from your mind, but from the actual work. The more you spill out, the more likely the graph emerges and connects - not the other way around.
One Step at a Time
Writing a novel is like driving a car at night. You can see only as far as your headlights, but you can make the whole trip that way... — E.L. Doctorow
As a software engineer who has been trained to embrace changes and value step-by-step incremental delivery, I decided to apply the same approach in book writing too.
I have milestones, a good backlog and a clear definition-of-done for each - as long as my editor is happy to accept it, it’s done done. And just like code reviews, we would have a few back and forth on the draft.
And then I only focus on one chapter at a time, I don’t even think of the rest of the remaining chapters at all. And for the one in hand, I pour all my energy and effort in. I refine the illustrations, rewrite the code snippets, and reword. My editor offered me so much great advice too, from rearranging the section order, to the introduce-subject-explanation pattern, to the formatting and styling.
With this new approach, I finished one chapter, and then another, and then another. And last week, I just wrapped up all the chapter drafts, with 9 of them accepted, 1 in the second round of reviewing, and 2 in reviewing.
Closing Thoughts
As I wrap up this issue, the journey of penning down my upcoming book on React Anti-patterns unfolds as a thrilling blend of self-discovery, unearthing new knowledge, and refining my narrative craft. Each chapter drafted, every feedback loop with my editor, and the continuous strive for clarity and value in content, mirrors the iterative and enriching process of software development we endure daily. It's a reminder that the path of creation, be it code or words, is laden with challenges, yet every step forward is a leap towards mastery. The road ahead is still long with reviews and revisions, but the progress is promising and the learning, boundless.
Your engagements and support have been the wind beneath my wings, and I am thrilled to share more as this journey unfolds. Until the next issue, keep coding, keep learning!
nice, cant wait to read the book 😬