As I mentioned in a previous post, it’s my goal this year to read and review one tech-related book each month. This month, I read The Unicorn Project, by Gene Kim. The book is a work of fiction, and is the story of an auto parts supply company that is struggling to participate in the digital transformation of retail business. I was a bit dubious about reading a work of fiction that aimed to tackle the common problems of DevOps; I assumed either the lessons or the story would be boring. I’m happy to say that wasn’t the case! I really enjoyed this tale and learned a lot in the process of reading it.
The hero of the story, Maxine, goes through the same trials and tribulations that we all do in the workplace. At the beginning of the book, Maxine has just been chosen to be the “fall guy” for a workplace failure, even though she had nothing to do with it and was actually on vacation at the time. As a punishment, she is sent to a project that is critical for the company’s success, but has been bogged down for years in a quagmire of environments, permissions, and archaic processes.
I could definitely relate to Maxine’s frustrations. One day I was having a particularly tough day at work, and I was reading the book on my lunch break. Maxine had been working for days to try to get a build running on her machine, and she had opened a ticket to get the appropriate login permissions. She sees that there’s been progress on the ticket, but when she goes to look at it, it’s been closed because she didn’t have the appropriate approval from her manager. So she opens a new ticket and gets her manager’s approval, only to have the ticket closed because the manager’s approval wasn’t allowed to be in the “Notes” field! My troubles that day were different, but I too had been struggling with getting the build I needed; I felt like shouting into the book: “Honey, I feel your pain!”
The real magic in the story comes when a small band of people from various departments gathers together to try to make some huge process changes in the company. They are aided by a surprise mentor, who tells them about the Five Ideals of the tech workplace:
1. Locality and Simplicity– having locality in our systems and simplicity in our processes
2. Focus, Flow, and Joy– people can focus on their work, flow through processes easily, and experience the joy of understanding their contributions
3. Improvement of Daily Work– continually improving processes so that day-to-day operations are simple
4. Psychological Safety– people feel comfortable suggesting changes, and the whole team owns successes and failures without playing the blame game
5. Customer Focus– everything is looked at from the lens of whether it matters to the customers
Using those Five Ideals, Maxine and her fellow rebels are able to start making changes to the systems at their company, sometimes with permission and sometimes without. I don’t want to give away the ending, but I will say that the changes they make have a positive impact.
There were a couple of key things I learned from this book, which have given me a new understanding of just how important DevOps is. The first is that when we create a new feature or verify that an important bug has been fixed, it means nothing until it’s actually in the hands of customers in Production. I have fallen for the fantasy of thinking that something is “Done” when I see it working correctly in my test environment, but it’s important to remember that to the customer, it is totally not done!
The second thing I learned is the importance of chaos testing. As companies move further toward using microservices models and cloud technologies, we need to make sure we know exactly what will happen if one of those services or cloud providers is unavailable. Chaos testing is a great way to simulate those failures and help teams create ways to fail more elegantly; for example, by having a failover system, using cached data, or including a helpful error message.
I’ll be thinking about this book for a long time as I look at the systems I work with. I definitely recommend this book for developers, testers, managers, and DevOps engineers!