Writing A Book Is Hard

Hey Helen, I know you were disappointed you missed out on a chance to contribute to 97 Things Every Java Programmer Should Know, do you want to write a book with me?

Trisha Gee, Spring 2020

That's how it started.

It's that easy.

[Maniacal laughter in the background]

I have long wanted to write a book. It didn't really matter what type of book (novel, technical) or on which topic (I have opinions on everything). I wanted My Name On The Front Of A Book. I wanted to be An Author. I knew Helen also wanted to be An Author, and that by working together we could keep each other accountable and actually do this.

I had a relationship with O'Reilly after working with them on 97 Things. Actually, it goes back further than that, I first started speaking to them many years ago about working on a Head First title. So in March 2020, we approached O'Reilly and told them we wanted to do a Head First book. We told them we wanted to update Head First Java, if possible. They said yes, great, we'd love that! So we spent a couple of months writing an audition chapter for them, we actually re-wrote the chapter on Exceptions pretty much from the ground up.

The good news? They liked us! The bad news? Bert and Kathy had decided pretty much at the same time that they would do it themselves. What are the odds?

Fine, that's out of the window. Back in 2014, I had discussed with O'Reilly doing "Head First Data Structures and Algorithms". So in June, we auditioned for that one instead. We spent summer working on it, which was a very different experience to Head First Java because it needed us to create brand new material from nothing. In the end, we needed to make some big changes to move it further. It felt like a lot of work, so we parked that one.

During the process of writing together for these auditions, it became clear that we worked really well together. We have known each other for a long time, we went to university together and have stayed close since then, often spending lots of time talking about our jobs and our careers. We had never worked together though. While writing the auditions, I realised I really wanted Helen to work with me at JetBrains. Her background in tech and her technical writing skills were exactly what JetBrains needed in a developer advocate on the Java team. Helen passed the interview process with flying colours, and she joined me and Mala on the Java advocacy team.

The idea of working on a book together didn't go away though. Helen and I sat down and brainstormed an easy book to write. Something that one or both of us knew really well. Something that we just had to braindump down onto paper and sculpt into a book. We decided to write a book about IntelliJ IDEA.

We knew that writing a book about a technology that was constantly evolving was risky, but during the spring and summer of 2020 Mala and I had created, or refreshed, the YouTube videos for a bunch of fundamental features, and Helen had been taking those videos and creating written content on it. We thought, "all" we have to do is take those fundamental topics and put them together in a cohesive story. There would be some gaps we would need to fill in, which would pull the whole thing together as a book with brand-new content. It would be done by the end of the year. Maybe it might take a bit longer.

Oh, my sweet summer children.

We created the "Getting to Know IntelliJ IDEA" book on Leanpub in September 2020. We chose Leanpub because we figured we could self-publish a book on this topic, and I had a bit of experience with Leanpub.

In October, we had a chat with Josh Long because I knew he had self-published his Reactive Spring book, and we wanted to know how he had done it. He told us his book was "a series of blog posts and tutorials he'd already written" and that he, too, had thought it would be quick and easy to write. And that it had taken him two years (I think it was). We nodded. Yes yes, these things take longer than you think. But we are dedicated. And in lockdown. And have nothing better to do.

We committed our first changes to the book's GitHub repo on 16th October 2020. Seven months after we first decided we wanted to write a book. Honestly, that should have been the first warning sign that this whole thing was going to take ages.

An image of the github commit history, showing that most of the commits happened in the last 6 months

Looking back over the commit history we made steady, incremental progress from November '20 to March '21. Which is incredible now I think about it, because in Feb/Mar 2021 I was pushed to the limit by my commitments and my health was starting to suffer.

Between April and September 2021 we made a bunch of progress on the book, combining pair-writing with IntelliJ IDEA's new-at-the-time Code With Me remote pairing functionality, and working apart on the stuff that interested us. We chipped away bit by bit, thinking we'd get it done by the end of 2021.

Then… O'Reilly called and asked if I wanted to help out with Head First Java. I was super torn, because I knew that would take away any time from practically anything else, but I've been involved in Head First Java conversations since before my 7-year-old was born, and I was desperate to help get it out of the door. I discussed it with Helen, and we decided that it made sense for me to work on that as well.

I thought I took a break from Getting to Know IntelliJ IDEA to work on Head First Java then, but looking at the commit history, we actually worked harder in October 2021. We were getting the book into a state for early tech review from JetBrains' other advocates and applying the feedback we got from them.

By November, things were really hard. I could not keep up with the job, two books, and managing two young kids in their first year at a new school. I was burning out. I resigned from JetBrains, pulled back from the IntelliJ IDEA book and focused on Head First Java and my family. In theory, HFJ was supposed to be done by the end of 2021, but I missed various deadlines and there's loads of stuff I always forget about that happens at the end (like updating the Appendices, going through the proofreading process, and triple-checking everything), I wasn't done with it until March 2022.

Helen had worked alone on the IntelliJ IDEA book over November and Christmas, but the start of 2022 was a bit of a break. It's super hard to work on a project like this alone.

In April 2022, four months into my 12-month sabbatical from paid work, we decided we should "just finish" the book. Yep. Maybe it would be done by summer. Maybe I could have six months of sabbatical to myself.

By July, we "just" had to add screenshots, check the code, make sure everything we'd written so far was still true in IntelliJ IDEA 2022.2 (it was not - the new dependencies window makes things a lot easier), put it through Grammarly, check all the links, double-check the chapters that the other author had worked on, make sure we hadn't missed anything, write the Appendices, figure out the final formatting for the PDF, and come up with some blurb for LeanPub.

And hey presto, four months later it was finished.

[More maniacal laughter]

On 6th November 2022, we finally released the finished book. Two years of writing, and even more time before that getting to the right place to start writing.

I am very proud of what we've achieved. This book is more comprehensive, much better structured, and more helpful, than I ever imagined it would be. If you want to read a useful blog post about what's actually in the book, read Helen's.

If you buy it, I expect you will learn something from it. Maybe just one thing. But I hope you will go back to it again and again, when you're a bit stuck on how IntelliJ IDEA "thinks" about particular things.

I hope you get to know IntelliJ IDEA a little better.

Buy our book!

Author

  • Trisha Gee

    Trisha is a software engineer, Java Champion and author. Trisha has developed Java applications for finance, manufacturing and non-profit organisations, and she's a lead developer advocate at Gradle.

One Reply to “Writing A Book Is Hard”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.