Adding Friction
Today, we're diving into an interesting topic: friction in development processes. I recently had a conversation with Tom about this, and it brought some new perspectives to light.
An Initial Confusion
During a call with our engineering team, our CEO Tom suggested adding a bit of friction to our processes. This was strange because I always want to remove friction to make things smoother and faster. Velocity is crucial for us— Tom harps on how we want to move quickly and efficiently. So, why would we want to add friction?
Friction Generates Heat
While friction does slow things down, it also generates benefits.
For example, we conduct code reviews, which slow down development but lead to increased stability, better product alignment, and reduced technical debt. These processes, though seemingly slowing us down, actually contribute to a more sustainable and team-involved development
This reminded me of a decision made at at a security awareness company I used to work for. We conducted typically annual security awareness training on a monthly basis. We had data from our customers that conducting these tests/lessons quarterly had a significant improvement over annual training, but monthly training didn’t really yield better results than quarterly training. So why did we do it monthly?
First, we wanted to make sure we never got hacked. It was an existential threat to the business if one of our own employees fell for a phishing attack.
Second, we wanted to make a point of how important this was and to build it into the identity of the company. It became part of the culture that our courses were espousing to our customers.
In essence, adding friction in certain areas can yield significant benefits. It's like in physics—more friction can generate beneficial heat. For us, it's about strategically introducing pauses and checks to enhance the overall process.
Slowing Down to Move Faster
Sometimes, we need to slow down in order to move fast. At first this makes no sense but there is a simple analogy that makes it blindly obvious: Formula 1.
The software development process isn’t a drag strip where you can put the pedal to the metal and go in a straight line. There are many twists and turns and you don’t even know where or when they’ll show up!
The prime example here is writing tests. Writing tests can seem like an additional, time-consuming step that slows down the development process. However, by integrating tests early and consistently, developers can identify bugs and issues before they become costly problems. This proactive approach not only improves the stability and reliability of the software but also enhances the team's confidence in their codebase. The initial slowdown caused by writing tests is offset by the time saved in debugging and fixing errors later on, leading to faster, more efficient development cycles in the long run.
In this sense, adding friction strategically to ensure you’re not driving off a cliff, or in software terms, bring down production actually lets you move faster than if there were no guardrails.
The Cost and Risk of Adding Friction
One challenge is maintaining a balance. Large companies often introduce excessive friction, leading to bureaucratic slowdowns. It’s important to focus on velocity while continuously re-evaluating and fine-tuning the process. Tight feedback loops and minimizing unnecessary latency are crucial.
Recognizing and Implementing Useful Friction
It's crucial to recognize when friction is necessary. Friction should not be added randomly but should serve a clear purpose. For example, implementing a mandatory pause between merging and deploying code forces developers to reflect and catch potential issues.
You should also continuously evaluate any added friction. If it's not yielding the desired benefits, remove it. Optimizing for velocity ensures that unnecessary friction doesn't become a permanent hindrance.
Final Thoughts
Friction can be incredibly beneficial when applied thoughtfully. It helps prevent errors, enhances security, and fosters a culture of careful consideration. However, you need to strike a balance to make sure you’re not grinding to a halt. If you add friction and slow down your process in the right places, you’ll be amazed at how much faster you can go!