More on this book
Community
Kindle Notes & Highlights
by
Gene Kim
Read between
July 29 - August 11, 2024
Maxine loves coding and she’s awesome at it. But she knows that there’s something even more important than code: the systems that enable developers to be productive, so that they can write high-quality code quickly and safely, freeing themselves from all the things that prevent them from solving important business problems.
Everyone around here thinks features are important, because they can see them in their app, on the web page, or in the API. But no one seems to realize how important the build process is. Developers cannot be productive without a great build, integration, and test process.
Dr. Seuss books, Oh, the Places You’ll Go. The book describes the dreaded Waiting Place, where people wait for the fish to bite, wind to fly a kite, for Uncle Jake, for pots to boil, or a better break … Everyone is just waiting. NO! That’s not for you! Somehow you’ll escape all that waiting and staying. You’ll find the bright places where Boom Bands are playing. Everyone on the Phoenix Project is stuck in the Waiting Place, and she is determined to rescue everyone from it.
sifting through all the poo for anything resembling a peanut—
She warns her husband and kids that she is currently incapable of conversation and finds two mini-bottles of Veuve Cliquot rosé in the fridge. When her teenage kids see her, they know immediately to avoid her. She is wearing her “Mom is in a super bad mood” face. While they prepare dinner, she crawls into bed and watches movies.
Just because she felt busy doesn’t mean that she actually did anything meaningful.
In a terminal window, she pulls up her work from yesterday and, without looking at it, deletes it all.
“I’d love to talk to someone that matters about what an amazing job you did and how grateful I am for your help.” She happily stayed on hold for ten more minutes to talk to a supervisor and then spent ten minutes gushing in great detail about all the help that she had received.
Maxine returns to her desk two hours later. She had taken Derek and his supervisor to lunch—out of appreciation for their help and to atone for thinking the worst of Derek. She got the chance to explain the world of development to him, and his earnest curiosity was infectious. She described all the exciting career tracks available for technical people outside of the helpdesk, hoping it might encourage him to explore some of the options available to him.
“But whatever language you’re using, the most important thing is to run your program all the time,” she says. “When I’m doing something for the first time, I run my program every time I change anything, just to make sure it still compiles and runs. That way, I don’t make the same mistake for hours without knowing. Better to catch the mistake the first time you make it, right?”
Learning Clojure, her favorite programming language, was the most difficult thing she had ever done, because it entirely removes the ability to change (or mutate) variables. Without doubt, it’s been the one of her most rewarding learnings, because she’s found that about ninety-five percent of the errors she used to make (like the ones the girls just made) have disappeared entirely. Functional programming is truly a better tool to think with.
A healthy software system is one that you can change at the speed you need, where people can contribute easily, without jumping through hoops. This is how you make a project that’s fun and worthwhile contributing to, and where you often find the most vibrant communities.
Captain Kirk apparently hit the warp speed button, despite Engineer Scotty telling him the dilithium crystals were about to blow.
work on features. I give them to QA and Ops to test and deploy. Then I work on the features for the next release. That keeps me plenty busy.”
Maxine leaves, boggling at what he said. She has never in her career abdicated all testing and deployment to someone else. How can you create anything of value if you don’t have feedback on how it’s used? she thinks.
They are stunned when they discover that clicking the product category drop-down box floods the database with 8,000 SQL queries.
big-endian
Kurt storms off before she can even wish him good luck. Maxine shakes her head. The lack of trust and too much information flowing around is causing things to go slower and slower.
If you want to help, learn to be a doctor or learn some middleware. In the meantime, just stay out the way because we’re doing our best.”
Maxine knows that she looks slightly out of place at the Dockside, but wow, Kirsten looks way out of place, like she was on the way to an event for senior law partners but had a flat tire while driving by with a dead cell phone and had to come in to find help.
“You’d think we have thirty teams of ten people, with each team able to get things done independently. But at times, it’s like we have only one team of three hundred people … Or maybe three hundred teams of one. In either case, something is very wrong …”
“A couple of years ago, probably during budgeting season, some bean counter looked at those three networking vendors and decided to consolidate them down to one switch. Sort of makes sense, right?” he continues. “So without asking anyone, they went ahead and did it. And not just in one plant, but in a bunch of the plants. They replaced the three switches with one bigger, beefier switch, and then moved all plant traffic onto it,” Dwayne says. “But what they didn’t know was that they had three separate outsourcers managing the three different networks. So now all three outsourcers who used to
...more
This highlight has been truncated due to consecutive passage length restrictions.
Nicole Forsgren and Jez Humble
“Precisely,” says Erik. “Build responsibility moved from Dev to QA to interns. Tech giants like Facebook, Amazon, Netflix, Google, and Microsoft give Dev productivity responsibilities to only the most senior and experienced engineers.
‘technical debt is what you feel the next time you want to make a change.’
First Ideal of Locality and Simplicity. We need to design things so that we have locality in our systems and the organizations that build them. And we need simplicity in everything we do. The last place we want complexity is internally, whether it’s in our code, in our organization, or in our processes. The external world is complex enough, so it would be intolerable if we allow it in things we can actually control! We must make it easy to do our work.”
“The Second Ideal is Focus, Flow, and Joy. It’s all about how our daily work feels.
The Third Ideal is Improvement of Daily Work. Reflect upon what the Toyota Andon cord teaches us about how we must elevate improvement of daily work over daily work itself.
The Fourth Ideal is Psychological Safety, where we make it safe to talk about problems, because solving problems requires prevention, which requires honesty, and honesty requires the absence of fear. In manufacturing, psychological safety is just as important as physical safety. And finally, the Fifth Ideal is Customer Focus, where we ruthlessly question whether something actually matters to our customers, as in, are they willing to pay us for it or is it only of value to our functional silo?”
The First Ideal—Locality and Simplicity The Second Ideal—Focus, Flow, and Joy The Third Ideal—Improvement of Daily Work The Fourth Ideal—Psychological Safety The Fifth Ideal—Customer Focus
On Wednesday morning, Maxine and Cranky Dave join Kurt for the first meeting with the Data Hub engineers. Maxine’s surprised to see that Cranky Dave was able to join Data Hub so quickly too. She asked him how he managed to swing that. Cranky Dave merely smiled, saying, “One of the many benefits of my winning personality—no manager passes on the opportunity to give me to a different team. It allows me to go wherever I want.”
But in reality, when developers work, they’re usually staring at the screen, deep in concentration, trying to understand what the code does so they can safely and surgically change it without breaking something else as an unintended side-effect, especially if they’re working on something mission-critical.
Maxine nods, because Tom is confirming her long-held belief that multi-threading errors are at the very limits of what humans can reason about, especially since most mainstream programming languages like Java, C#, and JavaScript encourage mutation of shared state.
Risto Siilasmaa
“Business people can see features or apps, so getting funding for those is easy,” he continues. “But they don’t see the vast architectures underneath that support them, connecting systems, teams, and data to each other. And underneath that is something extraordinarily important: the systems that developers use in their daily work to be productive.
Maxine smiles as she hears the suggestions fly fast and furious. They start making a list: Every developer uses a common build environment. Every developer is supported by a continuous build and integration system. Everyone can run their code in production-like environments. Automated test suites are built to replace manual testing, liberating QA people to do higher value work. Architecture is decoupled to liberate feature teams, so developers can deliver value independently. All the data that teams need is put in easily consumed APIs …
Steven Spear
‘It is ignorance that is the mother of all problems, and the only thing that can overcome it is learning.’
“The opposite of the Third Ideal is someone who values process compliance and TWWADI,” he says with a big smile. “You know, ‘The Way We’ve Always Done It.’ It’s the huge library of rules and regulations, processes and procedures, approvals and stage gates, with new rules being added all the time to prevent the latest disaster from happening again.
As Sensei W. Edwards Deming once observed, ‘a bad system will beat a good person every time.’
Stanley McChrystal
“That’s not servant leadership, it’s transformational leadership,” Erik says. “It requires understanding the vision of the organization, the intellectual stimulation to question the basic assumptions of how work is performed, inspirational communication, personal recognition, and supportive leadership.
“Some think it’s about leaders being nice,” Erik guffaws. “Nonsense. It’s about excellence, the ruthless pursuit of perfection, the urgency to achieve the mission, a constant dissatisfaction with the status quo, and a zeal for helping those the organization serves. “Which brings us to the Fourth Ideal of Psychological Safety. No one will take risks, experiment, or innovate in a culture of fear, where people are afraid to tell the boss bad news,” Erik says, laughing. “In those organizations, novelty is discouraged, and when problems occur, they ask ‘Who caused the problem?’ They name, blame,
...more
“When something goes wrong, we ask ‘what caused the problem,’ not ‘who.’ We commit to doing what it takes to make tomorrow better than today. As Sensei John Allspaw says, every incident is a learning opportunity, an unplanned investment that was made without our consent.
‘Everyone must be responsible for their own safety and the safety of their teammates. If you see something that could hurt someone, you must fix it as quickly as possible.’ He told everyone that fixing safety issues should never be budgeted—just fix it, and they’d figure out how to pay for it later,” Erik continues. “He gave out his home phone number to all plant workers, telling them to call him if they ever saw plant managers not acting quickly enough or not taking safety seriously.
More and more dependencies, as far as the eye can see, she thinks. There is no place in this whole screwed-up system where you can get anything done. It doesn’t matter whether you’re creating the ticket, processing the ticket, waiting on the ticket, or working the ticket. It doesn’t matter. You’re trapped in a web of dependencies, completely unable to get anything done, no matter where you are.
“You know the joke—what’s the plural of ‘developer’?” says Maxine. “A ‘merge conflict.’”
“Developers should be solving business problems … Not … this … This is madness.”
“I’ve seen things. Unspeakable things,
“I’ll ask for forgiveness later if we need to,”