Tom Donohue Tom Donohue

From developer to author: how I wrote a book

Ever since I was at school, I’ve harboured dreams of coming up with some amazing software idea. You know, that brilliant website or life-changing app.

As software developers, we’re blessed with the ability to create whatever we want. Coding is a very powerful tool to turn an idea into reality. How about an e-commerce store? Sure. How about a file-sharing site? Yep, done.

But developers don’t always have the business ideas to match their technical abilities. I have a list of my own “amazing software ideas” and, to be honest, most of them are complete rubbish!

Over the past few years, I’ve grown to accept that I’m unlikely to come up with the next YouTube, or the next Facebook – and actually I’m quite glad of that.

Instead, I’ve realised that I have the skills of writing and teaching, and I know how to publish a web site.

So over the last few years, I’ve tried to move from being solely a content consumer to being both a content consumer and a content creator, and it’s been a great journey so far.

In this blog post – which is a slight break from the usual tech content here – I wanted to share my journey to this point, of which the highlight for me has been writing a book, which I self-published in 2019.

And it all started…. with this blog.

How I got started

One of my original aims in creating this blog was to chip away at the nagging feeling I often get that I don’t deserve to be in my job at work (some people call this impostor syndrome).

I hoped that by teaching everything I know, in public, it would help me to realise that my knowledge is deeper than I think, and that I do have chops to be in the position that I am today.

At the same time, I wanted to create things to help human beings. Every day I create things in my job, but a lot of these things can be summarised as just a few dozen lines of code for a company’s bottom line. Reaching an individual person, and helping them solve their problems, can often be way more fulfilling.

I wanted to create the kind of content that I would have found useful as a beginner. I thought that if I would have appreciated it, then someone else would do too.

Since I had some experience coding and coaching on application integration software, I decided to focus on that as my topic. So, in 2015, I set up a WordPress site, named it Integration Wire1, and started sharing things that I know in programming.

Getting visitors

I didn’t write very often, perhaps once a month at most. But after a year or two of writing, I’d built up a small collection of articles on the blog. I added a comments plugin to the website (initially Disqus, then retired for privacy reasons in favour of the excellent Isso), and started to answer some questions from readers.

I never once wrote a “guest post” for other blogs, did outreach, link-building or any of that SEO stuff. I knew about those tactics, but the truth is that I wasn’t really comfortable in drawing attention to my work in case it really sucked.

I had the belief that if I wrote sufficient quality content, and Google indexed it, that people would find it, eventually. (It’s debatable whether organic discovery on Google is becoming almost impossible these days.) And that would be a confirmation to me that I was doing something worthwhile.

But that describes what actually happened. I must have written something which helped people. I started to appear in the search results, and people found my content. To this day, I’m extremely reliant on Google for traffic (this is not a good thing - but a sad fact!).

I started to get hits, which spurred me on to write more articles.

Getting started, getting blocked

The next stage in the journey came at the start of 2017, when, instead of adding another crazy idea to my “amazing ideas” list, I started to wonder whether I could find a way to expand on my writing instead. I was getting several thousand visitors a month on the site. It seemed logical to try to focus on something that was working.

But before even starting, I became blocked at the stage of choosing a topic for the book.

I brainstormed a list of topics that I know about, which intersect with topics that people want to learn. But I went round in circles many times, unsure of what to write about.

Should I write about something that I’m less experienced in, but is more popular?

Do I even know enough about any subject to write about it?

After creating endless lists, I decided to keep it simple, and focus on what I’d spent most of my professional time working on the last year. This would mean writing a book on Apache Camel.

If you don’t know Camel, it is a framework for integration developers. It’s a relatively niche open-source library in Java. But it isn’t so niche that it’s an under-served market. There are even print books on Apache Camel, including the excellent Camel In Action, which I owned and had learned a lot from.

But, despite choosing a topic, I still had blockers. I thought to myself, “But my topic is too niche!” And, “I can’t create something that already exists!”

The smart reader will recognise that these two statements are contradictory. How can something be so niche that it’s not worth exploring, but also mainstream enough to support multiple print books? This is an example of where my brain goes in defensive mode, trying to convince me of all the reasons to not try something.

I needed to unblock myself so I could begin writing.

Firstly, my rational self realised that if a book already exists in a niche, it’s not a bad thing, it’s a good thing. If there are books that already serve this audience, it means that lots of people want to know about the topic.

The second thing that got me unstuck was this quote from Sean Wes, who is a writer and course creator:

“There’s nothing new under the sun, so stop trying to be original.”

Is it OK to write a book on a topic which has already been written about?

How many books are there on making bread, or writing JavaScript? How many paintings are there of sunflowers? Probably quite a lot.

The choice of topic alone does not make a creative work unique. What makes a work unique is the combination of voice, style and topic.

I wanted to share a book on Camel for absolute beginners, written in the same style as my blog. I might say different things from other writers, explain in a different manner, or structure my thoughts in my own individual way.

Sufficiently unblocked to get started, I just needed a title. I picked the title Camel Step-by-Step, based on the step-by-step tutorials I’d been publishing on this very blog. And so I was ready to start writing.

The ups and downs of writing

I started writing in February 2018, and I tried to write whenever I had both the free time and the enthusiasm to do so. I had no previous experience of estimation for an undertaking like this, but I set myself a target of 30,000 words2 and an optimistic release date of August.

To prevent myself from getting blocked again just thinking about the table of contents, I decided to plan the book as a set of mostly-independent chapters. This meant that knowledge from one chapter wouldn’t always be required to read the next one. It would also make the job of writing individual chapters much easier, not having to worry too much about flow.

Fortunately, I had my blog posts to draw on – and statistics for the most popular posts to show what topics people were most interested in – which were a really good base to use for the book. I planned to use the more popular posts to structure the book, and then write the rest of the book content around them. This was a real boost.

After an initial buzzy start, the next few months of writing became less of an enjoyable side project and more of a chore. My original August launch date slipped to September, and then even further. Then, my job got pretty busy, and I found myself with less energy to work on the book. At weekends, I just wanted to catch up with friends, not spend time writing. And if you get out of the habit of doing something, it becomes harder to return to it.

I was approaching that stage in any project where I feel it becomes harder for me to get over the finish line. This is the point when everything seems to be convincing me to give up or, even worse, just silently abandon.

To try to keep myself on track, I set up a system to track my words written. With my 30,000-word goal still in mind, I recorded my daily writing on a spreadsheet, and created a chart, so that I could visualise my progress. The intention was to hit the word count at any cost, and then start editing.

I started waking up earlier, so I could squeeze in an hour’s writing before arriving at work. I found a quiet local coffee shop, and hit the keyboard uninterrupted, as the world outside started to wake up and go to work.

When it got even tougher, I stripped back my nice-to-haves - those things which I had hoped to add to the book, but knew were just adding more work. I cut the scope of the book, and cut some chapters that I had originally planned. I just wanted to get it finished.

Slowly but surely, I could see the end was in sight.

The launch

I remember the day that I received my first pre-order. It was half-way through writing the book, and I’d put some details about my book project on this very blog, inviting people to preorder if they were interested.

Getting the first pre-order was so motivating! Someone had a problem, they had found my website, found my content helpful and considered the not-yet-launched book to be worth paying for. I will always be extremely grateful to that person.

I still find this simple idea of being an independent content creator very inspiring, even though we just take it for granted now. Not so long ago, writing a book would have required pairing with a publisher and waiting months to see a product in print.

The pre-order never would have happened if I hadn’t put some information on my blog about the book. I recommend this to everyone who is writing. Don’t wait until the very end to announce your project to the world.

As the weeks and months went by, a couple more pre-orders rolled in. I started to worry about the project slipping, and not fulfilling the promises I’d made to these people.

I had mostly finished writing by October, but I pushed the launch date further back, because I wanted to spend time working on the book’s accompanying code examples. Although I had cut out some written chapters, I decided that creating the code examples was mandatory, as I always find them useful when I’m learning anything.

By this point, I just wanted to get the book out there. I was sick of reading chapters, re-writing sections, and trying hard to not add further tasks to my workload.

The book was ready in January 2019. I never did a big launch, or advertising. I had a small email list of people who were interested (about 100 people at the time). I put together a landing page, linked it to my product in Gumroad, and sent out the first edition to those who had pre-ordered.

After all those months spent writing, the finished product was finally online!

Around the time of the launch, I probably sold 4 or 5 copies, from mailing list subscribers.

During the next 3 months I sold 25 copies of the book. Since then, I don’t do much publicity for the book, other than the links on my blog, but it still sells 1 or 2 copies per month.

How I feel about it now

Writing a book still feels like a huge achievement.

As I’ve been reviewing the book recently, I’ve looked at the table of contents and I’ve been asking myself, Did I really write all of this? I see the word count and I wonder where all of those words actually came from.

Overall, I’ve sold 75 copies since the book was launched. It’s not approaching bestseller volumes, but it’s 75 people who I hope got help with their problems. I think about those individual readers, what they got out of the book and what they’re working on now.

Writing a book was my first step in returning to a role as content creator, rather than just passive content consumer.

As grown-ups I think we’re less willing to create something and put it out there, for fear of not succeeding. Instead, we’re more likely to just read and share articles. It’s been great to put something out there, and say “I created this”.

Writing the book also helped me at work. This was an unexpected, but nice side effect. People came to me to ask about the book, even though I barely mentioned I was even writing it.

I’m now “the guy that wrote the book” in my team, although I still don’t really feel like it.

I’m keen to continue this journey, but I’m not sure where to go with it next. I might be over-thinking that right now. But writing on a niche topic does make it difficult to think of what to do next. (Can you tell that I’m blocked again? :-) )

What I would tell someone who wants to do the same

So back to the purpose of this article. I said I wanted to share my story.

In this article I’ve shared my process, and the various self-imposed hurdles that I had to overcome to complete a book.

Everyone’s situation is different, and what appears easy to some might not be so easy for you. I’m sharing my experiences here to show you what I struggled with. You might not have the same issues. But the only way you’ll really know how it goes is by doing it.

To anyone who wants to do this:

Just start writing. All the preparation, research and note-taking in the world means nothing without progress and output. If it’s not published to the world, it might as well not exist.

Create a blog and write blog posts. These little content pieces will grow your confidence and credibility, and will help establish a structure for your first book.

You already know enough. I struggled many times during the book, agonising over whether I really knew the source material. By writing, you will not only strengthen your current learning of the topic, but you will learn many new things in the process.

Be proud of your style. The things that make your voice unique should be emphasised in your writing, not suppressed. I’ve found it hard to find my own writing style, and it’s still tempting to weaken my own voice in favour of pleasing the mainstream. Don’t do that! Be yourself.

Experiment more. The web is an excellent place for experimenting. If something doesn’t work, you can remove it or change it straight away. Don’t wait for one single amazing idea to hit you. You can try lots of things out.

No-one cares. (This is one of the most important things!) When you put something online, billions of people won’t notice. They won’t notice if you make a typo, or a mistake in your technical writing. Most people will never see your life’s best work. It might seem that by putting your work out there, you put yourself on show to millions, but for the vast majority of people, this will probably never be true. If you suddenly go viral and people notice your mistakes, big deal: it’s only HTML, you can always go back and change it.

Plan and track progress on paper. This is a recent learning for me. I’m well-experienced in writing organised to-do lists in text files, but then not really acting on any of it. Only this year, I’ve finally realised that I’m not very good at keeping focused if my task list exists solely in a digital format. The act of writing things down on paper (e.g. bullet-journalling) has been a revelation for me recently.

Stop self-sabotaging. I often think that my work is not good enough, or not useful, or will be full of mistakes. I think it’s my subconscious trying to cushion any potential blows. (Even while writing this article I can hear that same inner-voice talking!) But there comes a time when you’ve just got to ignore that voice, otherwise you will never achieve your potential. Don’t think about ignoring that voice altogether, but just try to turn its volume down.


Writing a book has helped me grow in many ways. It has improved my writing, it has helped me realise what I can achieve when I focus, and it has helped me at work.

I think you should write, too. You can create content that someone will appreciate.

Even if you feel that you’re working in the deepest, most obscure technical field, or that you haven’t got knowledge worth sharing, your combination of experience and voice is unique, so share it.

What do you think? Let me know in the comments!

  1. I think this detail is important, because initially I had the naive thought that I needed to publish content under a ‘brand’. I later realised that is absolute rubbish! Today, my blog’s name is basically just my name (Tom D - oh, that’s me!) 

  2. I don’t know why I picked a target of 30,000 words, it just seemed like a nice round number! 

Photo by Sonia Jandahari on Unsplash  


What do you think? You can use Markdown in your comment.

To write code, indent each line with 4 spaces. Or, to paste a lot of code, you can put it in and share the link in your comment.