---
title: "Writing A book Is Like Developing Software"
url: "https://osherove.com/blog/2007/3/13/writing-a-book-is-like-developing-software.md"
canonical: "https://osherove.com/blog/2007/3/13/writing-a-book-is-like-developing-software.html"
published: "2007-03-13T01:12:57"
updated: "2007-03-13T01:12:57"
tags: ["Art Of Unit Testing", "General Software Devel..."]
author: "Roy Osherove"
description: "I'm in the process of writing my upcoming book: The Art Of Unit Testing , and it's proving to be a big challenge. Bigger than I imagined. ( Here's the first sample chapter - PDF ) Book == Software Development. The…"
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# Writing A book Is Like Developing Software

By Roy Osherove March 13, 2007 In [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [General Software Devel...](https://osherove.com/blog/category/general-software-devel)

**Historical article** · Originally published March 13, 2007; technical details may be outdated.

I'm in the process of writing my upcoming book: [The Art Of Unit Testing](http://the.artofunittesting.com/), and it's proving to be a big challenge. Bigger than I imagined. ([Here's the first sample chapter - PDF](http://www.manning.com/osherove/free.html))

Book == Software Development. The Comparison might seem a bit weird at first, but my experience so far seems to be compatible with this.

Some examples:

- Creating the Table Of Contents == Big Design Up Front

When submitting your book proposal to your publisher(I work with Manning on this book), they'll ask you to provide a TOC for the book including chapter length, sub sections in each chapter etc. Whatever you write there is at best a guess.

As I wrote the first 2 chapters of the book I realized that the TOC I had was all wrong, and that I was doing it all wrong. So I rewrote the TOC because I suddenly realized that half the subject I wanted to talk about in the last half of the book, actually belong in the first few chapters, and that 3 chapters from the rest can be combined, and that some of the stuff I wrote is simply not going to be relevant, as a specific chapter, that is.

Kinda like design, where you realize you designed something wrong the minute you try to implement the design.

- You learn as you go

Like software, you realize what you actually want to say in the book as you are writing it, so the design needs to keep changing, and your thoughts about what's good and what's not keep changing as well.

- It's always more complicated than you initially thought

Nothing to add here.

Have you ever written a book? Feel the same way?

## More in Art Of Unit Testing

[All posts in Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing)

- Apr 27, 2007

    ### [Poll: What Mock Frameworks do you use?](https://osherove.com/blog/2007/4/27/poll-what-mock-frameworks-do-you-use.html)

- Apr 26, 2007

    ### [Choosing a Mock Object Framework](https://osherove.com/blog/2007/4/26/choosing-a-mock-object-framework.html)

- Mar 13, 2007

    ### [Test Reviews Vs. Code Reviews - Some Helpful Tips](https://osherove.com/blog/2007/3/13/test-reviews-vs-code-reviews-some-helpful-tips.html)

- Mar 2, 2007

    ### [Testable Designs - Round 2: Tooling, Design Smells and Bad Analogies](https://osherove.com/blog/2007/3/2/testable-designs-round-2-tooling-design-smells-and-bad-analo.html)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
