Figuring out what to work on next is one of the hardest problems in software engineering.

I know that’s a bold statement but I believe there’s ample evidence to support my claim. In a recent post, I talked about the value of always working on the most important thing. In it I wrote:

It’s difficult to identify the most important thing [to work on next] because the solution space is huge and it’s difficult to compare stories. But I’ve found the Theory of Constraints to be a helpful way to quickly zero in on high value areas without looking at the whole business in excruciating detail.

The problem is that learning the Theory of Constraints from a textbook is hard. So, over the years, several experts have written novels about people learning about and applying the Theory of Constraints to make it easier for you pick up the basics (the novels are entertaining too).

(As an Amazon Associate I earn from qualifying purchases.)

1. The Goal: A Process of Ongoing Improvement

(paid link) By Eliyahu M. Goldratt and Jeff Cox

This is the book that started it all. It’s the 1980’s and Alex runs a factory that is headed for bankruptcy unless he can turn it around. Orders are late, inventories are too high, and his competitors are stealing his customers. But Alex finds a mentor who teaches him the Theory of Constraints. And that opens his eyes to how his factory really works. Alex shares what he is learning with his senior people and with a lot of hard work they figure it out and save their company.

Of the four, I read this book first. And it gave me a really good appreciation for the complexities of optimizing systems and how badly you can mess things up with good intentions. It’s also easier to get the concepts when you are dealing with physical things in a factory. You can literally see work-in-progress piled up in front of the constraint in a factory, which is not true when your product is software.

2. It’s Not Luck

(paid link) By Eliyahu M. Goldratt

This is the sequel to The Goal. Alex has been promoted and is now in charge of a division of three companies. Profits need to improve or the board will sell Alex’s companies. Alex learns more about the Theory of Constraints and how to apply it to other kinds of problems, not just manufacturing problems. He uses his new skills to save the day one more time.

Of the four, I recommend you read this book last, if at all. It introduces the “Thinking Processes”, which are Goldratt’s tools for logical analysis. I’ve tried them and they are truly powerful but learning them is a big investment. And my guess is that less than one percent of you will want to take your learning to that level. Here’s a brief description of the “Thinking Processes”. And if you really want to learn them I recommend Goldratt’s Theory of Constraints (paid link) (by H. William Dettmer).

3. Velocity: Combining Lean, Six Sigma and the Theory of Constraints to Achieve Breakthrough Performance

(paid link) By Dee Jacob,‎ Suzan Bergland,‎ and Jeff Cox

Amy is made interim president of a failing company, despite being unqualified for the position. She attempts to implement a Lean-Six Sigma hybrid improvement program that was thrust upon her by her parent company. The program throws the company into chaos and makes things worse. It’s only when Amy truly comes to understand how her company works and learns about the Theory of Constraints, that she’s able to make intelligent decisions and save her company.

Velocity contains a subplot about improving the performance of a research division, which will be of great interest to any software developer. After reading this book you’ll also gain an understanding of the strengths and weaknesses of Lean, Six Sigma, and the Theory of Constraints. These systems are popular in the business world so it won’t hurt you to know something about them.

4. The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win

(paid link) By Gene Kim, Kevin Behr, and George Spafford

Bill is a mid-level IT manager for an auto parts manufacturer. One morning he gets called into the CEO’s office and learns that his boss and his boss’s boss have been fired and he is now in charge of IT. The future of the company hinges on the successful launch of a new IT project named Phoenix, which is already millions of dollars over budget and more than a year late.

The project must launch successfully and at a predetermined date or the entire IT department will be outsourced. Bill quickly learns that IT is an absolute mess. The company is drowning in its own chaos but Bill starts learning about the Theory of Constraints and DevOps and he slowly starts to make progress. And through a lot of hard work, Bill and his allies manage to save the company.

I enjoyed this book the most. In fact, I couldn’t put it down.

How these novels are going to help you become a better programmer

What we’re really talking about here is systems thinking. And that’s a hard topic for most people to get their head around. I read several textbooks on the subject and I can tell you without hesitation that you are better off reading one of these novels first.

Each of these books follows the same pattern. The protagonist is promoted into a bad situation where they quickly learn they don’t have the skills they need to succeed. They are overwhelmed by chaos and problems and can’t figure out what they can do to turn things around with the resources available to them. Eventually each protagonist finds a mentor to coach them. They learn about systems thinking and the Theory of Constraints from their mentor. Then they apply what they learned to focus their improvement efforts on their constraint to maximize their impact.

Programmers often find themselves in similar situations. We are frequently under-resourced, drowning in tasks, and up against a deadline. If you learn enough systems thinking and Theory of Constraints, you can start to see the patterns and use them to find your constraint. Once you’ve identified your constraint it becomes easier to ignore the other stuff (because working on it is a waste of time). Instead, you focus on your constraint and making the largest possible contribution to the results of your company.

Recommendations for reading

You don’t need to read all four novels to become a better programmer. These suggestions might save you some time:

  • start with The Phoenix Project (paid link). It’s the newest book, it will be the easiest book for most programmers to relate to, and it has a great resources section at the end of the new edition
  • read Velocity (paid link) next if you still want to learn more
  • read The Goal (paid link) if you work in manufacturing or you really want to read about the Theory of Constraints from the guy who invented it. Feel free to skip all the subplots about family drama (except those with Amy’s boyfriend because he is also her mentor)–these subplots don’t add much to the story
  • if you do choose to read more than one book, don’t read them back-to-back. Try to space them out so you have a chance to apply what you learned from the first book before you dive into the next

Takeaways

These books are entertaining and educational. And I guarantee reading any one of them will change how you approach your work as a programmer. Once you understand the Theory of Constraints and what it means for your work, you’ll never see your backlog the same way again. I promise.

Have you read any of these books or think that you might? I’d love to hear your thoughts in the comments section.