In the winter of 2015, I was a junior computer science major in college on my month-long winter break. I was fresh off my summer internship at IBM Watson as one of about 80 interns across the country that summer in the young program. I worked with Java that summer to build a ML search framework alongside a PhD. It was a great time.
As I had done during every summer and winter break since my freshman year, I needed a project to work on to continue my learnings outside of the classroom, which was how I learned best; hands on experience was my thing — ask anyone. I also enjoyed teaching what I was learning whenever I was presented the opportunity. I even signed up to be a teacher’s assistant for y school’s introductory computer science course for th upcoming semester. With all of that in mind, I came up with the idea to share my learnings in a book to help others learn what I had learned during my freshman and sophomore years of my computer science studies, which focussed heavily on the Java programming language.
Context
Before we dive in, here’s some information about the end product:
- The book spans 204 pages when in the form of a Kindle e-book and 108 pages on an 8x11 magazine style print.
- There were 7 chapters with multiple topics covered in each.
- I am the author of the book Java for Humans, not Cody Ray Miller [the guy on Udemy who stole the name (and accompanying search rankings) of my book to use as his course’s title]. As you can tell, I’m not over this, yet; maybe one day.
Planning
As I had learned from my studies, implementation of a project usually went as well as your plan. Accordingly, I made a plan for the topics I wanted to cover in my book, the tone I wanted to strike, the cadence at which I wanted the reader to consume the content, and the target reader. Once I had all of that figured out, it was time to break up the topics into chapters. With the chapters planned out from beginning to end, I would be able to tackle them one at a time in a way that would not overwhelm me.
A big part of the planning was naming my book. When I was a kid, my teachers always praised me for the titles of my essays. My approach was to choose a title and use that to lead the content the essay and the story that was to be told. With a track record of success, I used that same approach to name my book “Java for Humans” because I wanted to teach the concepts of Java programming in ways that humans could easily relate to. With that guidance in place, it would be easy to decide between which phrasing to use to explain a topic when necessary.
Executing
I was on winter break, living on my parents’ couch. I had all the time in the world to write this book. However, I was sure to not use all of my free time on the book; that wouldn’t have ended well because I could have ran the risk of burning out or not producing my best creative work due to exhaustion.
Writing a chapter a day
I made a plan to write a chapter a day. Because some chapters were shorter than others while a few were significantly longer than the rest, I made exceptions to this rule as necessary. Most days, I wrote a chapter; some days, I wrote two chapters; and for the more taxing topics, I wrote anywhere from a third to a half of a chapter per day. There were only a few days that I struggled to meet my goal for the day. Those days were the ones dedicated to complicated topics. However, there was no day that ended with me feeling burnt out or ready to quit. I was usually more excited to wake up for the next day to write the next chapter.
Everyday, I woke up excited to cover the next topic of my book. I brushed my teeth, ate and started writing on my Windows laptop. This was three years ago, but I probably spent somewhere between three and six hours a day writing. The morning wasn’t always the right time to write, but I made sure to write each day until the book was complete. If I didn’t write in the morning, I wrote in the afternoon or evening. I didn’t try to write at night because there was too much going on then.
Writing supporting resources for each chapter
Because my book covered technical topics, I needed to provide practical exercises for my readers to practice what they learned at the end of each chapter. This was usually the most challenging task for each chapter, but it was fun to put the ideas to practice. After I finished a chapter, it was the perfect time to produce its complimentary exercise because I had just relearned the related concepts.
An exercise was a program that could be executed by the reader on their own computer once he or she completed the related chapter. The read would then be encouraged to add to the program and make it their own. Creating an exercise for most chapters took anywhere from an hour to three hours. The more complicated chapters took around four hours to produce.
Editing
Writing the contents of the book took about a week. I was moving fast. I was having fun. Then came editing.
During the writing process, I chose to move fast and keep going section after section, chapter after chapter. I didn’t want to stop every few paragraphs to edit and polish. That would have led me to lose interest, or it would have interrupted my creative flow. I moved fast because I didn’t stop often. I also knew what I was talking about, so I didn’t make many errors; this is important — be sure to understand and appreciate what it is you are writing about.
Editing wasn’t bad, it was only less fun than writing. Regardless, I spent about a week editing the book I had just spent a week writing. I went through the chapters multiple times to correct grammar. I went through more times to correct code that I had written to accompany an explanation of a concept. I went through even more times to polish the analogies that I used to make the concepts easily understandable, relatable, and enjoyable to read.
That completed my writing process. Once the book was edited, it was ready to be published. I published the book on Medium in December 2015.
Binding
Once I published the book on Medium, I considered it done. However, I wanted to have it in my hand as well as via e-book because people started asking for it. I downloaded Blurb’s BookWright software and got to work on turning my written words into a paperback book.
I can’t remember how long, but formatting took me at least two months to complete because I was back in school. I probably formatted a chapter per week. This can be a tedious process, but it was rewarding to receive my physical book in mail from Blurb.
Promoting
With the book published online, I could start promoting it to readers. This part was pretty easy. All I had to do was share the table of contents or the book’s dedicated website, JavaForHumans.com, with my students in the class in which I was assisting the teacher. I also shared it with the professor and he added it to the recommended resources section of the course’s online portal. I was happy to hear the students who read my book tell me they had an easier time understanding the material of the course.
The pages of Java for Humans that are published on Medium have been viewed over 118,000 times with an average read ratio of about 36%. Most of my traffic comes from organic Google searches, some from JavForHumans.com, others from Medium, and a considerable amount from official university websites and other educational referrers. I also shared chapters of the book on Twitter using Signal, Facebook, and ManyStories, which have all contributed non-insignificant amounts of readers.
Conclusion
I’ve learned a great deal from this experience over the last three years. If I ever want to write another book, I now have a framework that I can use to produce my best work in a short period of time without burning out or losing interest. I hope this has been helpful to you as you consider writing a publishing your own book.
I would love to hear about your process in the comments.