How to develop Software like a CTO

Tylor Borgeson
Jan 10 · 7 min read
Diego PH on Unsplash

The U.S. Bureau of Labor Statistics predicts that in 2020 there will be 1.4 million more software development jobs than applicants who can fill them in the U.S. alone.

That statistic is even more surprising when you learn that in 2018 there were 23 million software developers around the world

These numbers mean two things:

  • Good Software development practices are a must
  • There are a lot of opinions on what “good development practices” look like, and navigating those opinions can be challenging

There are however also a few individuals in the Tech Field who often share their opinions on software development in the forms of interviews, blogs, and books, (Martin Fowler or Kent Beck for example) whose opinions are often seen as valuable in the Software world.

One of those people is Founder and longtime CTO of Tripwire, Gene Kim. Mostly known for his books, Kim has had a profound impact in his career on the outlook on the importance of Software Development Practices. Many are familiar with the books he has written or co-written: The Phoenix Project, The DevOps Handbook, Accelerate, and were delighted to see his newest release The Unicorn Project.

While The Phoenix Project focused much on the DevOps / Infrastructure side of Software Development, The Unicorn Project follows Tech Lead and Architect Maxine as she tries to navigate the challenges of ever changing requirements and external dependencies in her Dev Team. In Phoenix used “The Three Ways” and the “Four Types of Work” to describe important concepts which many use to help define DevOps today.

In this article I would like to share the key takeaways from some of Gene Kim’s finest works.

Takeaways from The Phoenix Project:

The Three Ways:

The Principles of Flow

  • Work flows in only one direction — downstream
  • Defects are never passed downstream
  • We should always be trying to improve the flow

The Principles of Feedback

  • An upstream feedback loop should be in place
  • The feedback loop should be as short as possible, meaning quick feedback on additions/changes

The Principles of Continuous Learning and Experimentation

  • Seek to master things through practice
  • Learn from success and failure
  • Promote experimentation rather than fearing it and the possibility of failure.
The Three Ways as an image

The Four Types of Work:

  1. Internal Projects — an example of this would be migrating from a locally hosted data center to a cloud provider
  2. Operational Changes — this could be something like deploying new features
  3. Unplanned Work — failures, bugs, or sudden changes in plans which require immediate action.

Takeaways from Accelerate:

The Four Key Metrics:

  1. Deployment Frequency — how often changes are deployed to production
  2. Mean Time to Recovery — how long it takes to recover from a discovered failure
  3. Change fail percentage — what percentage of your changes cause an error, failure, or bug in your system

The metric measurements between low, medium, and high performing teams are divided as follows, with the leftmost column being a high performing team:

The Four Key Metrics for High, Medium, and Low performing teams

The Phoenix Project and Accelerate helped to set a basis, which many teams are still trying to adapt, on which Software Development Teams can measure their productivity and efficiency while directly having an understanding of how they can improve in those areas.

Takeaways from The Unicorn Project:

The Five Ideals:

Locality and Simplicity

In order for this to work, we need simplicity, meaning that parts of a product or software itself is loosely coupled from others and is kept as simplistic as possible in its implementation and infrastructure.

Focus, Flow, and Joy

“Is our work marked by boredom and waiting for other people to get things done on our behalf? Do we blindly work on small pieces of the whole, only seeing the outcomes of our work during a deployment when everything blows up, leading to firefighting, punishment, and burnout? Or do we work in small batches, ideally single-piece flow, getting fast and continual feedback on our work? “

Improvement of Daily Work

“Amazon likely spent over $1 billion over six years rearchitecting all their internal services to be decoupled from each other.”

Psychological Safety

Customer Focus

Some of my favorite quotes from the book:

“Hoare principle: “There are two ways to write code: write code so simple there are obviously no bugs in it, or write code so complex that there are no obvious bugs in it.”

“Punishing failure and “shooting the messenger” only cause people to hide their mistakes, and eventually, all desire to innovate is completely extinguished.”

“Creating software should be a collaborative and conversational endeavor — individuals need to interact with each other to create new knowledge and value for the customer.”

“Technical debt is what you feel the next time you want to make a change.”

These three books help to layout a sort of template or example which development teams can follow when working on projects and trying to increase their efficiencies, with many of the largest and most successful software companies already using these ideas. I am looking forward to the next book this guy writes.

What do you think? Is there something he missed?

The Startup

Medium's largest active publication, followed by +581K people. Follow to join our community.

Tylor Borgeson

Written by

Full Stack Software Dev interested in Machine Learning, AI, Infrastructure, DevOps and Agile. Aspiring Wine Sommelier. Runner of long distances

The Startup

Medium's largest active publication, followed by +581K people. Follow to join our community.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade