Hello! This week I’m talking about software development processes:
- Why it’s common to abandon process
- Why great teams use more process than average teams
- And how to get the benefits of using process (without the pain)
Most teams start with a prescriptive process.
Someone outside of the team decides that the teams needs a more rigid process. It’s the thing holding them back from getting the results the business needs. So, they prescribe a popular and well-documented process (e.g. Scrum.) And it helps in the beginning. That is, it improves the team’s performance.
But soon the team runs into problems.
And those problems are not in “the guide.” No, these problems are:
- Full of nuance
- Hard to diagnose
- Seem unique to the team
Which means the team gets frustrated with the process.
This happens for a few reasons:
- The coach that was original helping the team “transform” is gone.
- Or, the business is just pushing the team beyond their limits. Overwhelming them and their new process.
- Finally, it can happen because the team is trying to adopt too many new things at once. Process overkill.
Either way, the team gets discouraged, thinking that the process is the problem.
The process used to work.
But once it becomes a burden, calls to abandon it (or parts of it) get louder. And who can blame the team? This process was forced on them without all the tools required to make it work.
So that discouragement leads to abandonment.
Now the team is worse off than when it started.
It’s jaded, frustrated, and without an effective process to help meet the needs of the business.
Process == Discipline
Most mediocre teams think they are better off without process.
But great teams know this isn’t true. That’s because great teams equate process with discipline. That is, they use process to hold themselves to a higher standard and achieve great things.
Great teams also embrace and apply the idea of Shu Ha Ri.
For any process or technique, great teams will:
- Follow the rules
- Break the rules
- Make the rules
Which means, they are looking for ways to operate inside of the constraints of the system.
Great teams understand that you have to follow rules before you break them. Because you have to understand a process before changing it. But most teams jump straight to breaking rules.
So how do teams stick with a process long enough to understand it?
How to re-kindle an effective software development process
If your team is somewhere on the “abandon process” journey, here’s how you can adopt some discipline and find effectiveness again.
Step #1 – Set expectations with the business
As the saying goes, sometimes you have to go slow in order to go fast.
But you don’t want to catch anyone by surprise. The business hates surprises. Instead, set expectations with stakeholders that the team might need to slow down in order to get back on track.
Make sure you’re clear about:
- What the team is changing
- How it will impact their current work
- How long you expect things to be “slow”
- What you need from stakeholders to make it a success
Step #2 – Set expectations with your team
You got some breathing room from the business, but it’s not all sunshine and rainbows.
The team needs to be self-aware. That is, they need to understand how their process (or lack thereof) impacts the needs of the business. And how making changes to adopt greater discipline will eventually give them more autonomy. And software teams love autonomy.
Make sure you’re clear about:
- Expected timelines for improvement
- How the team wants to organize their work
- Who will decide what and when they will decide it
- What you need from individuals to make it a success
Step #3 – Listen to your process
One of my favorite ideas about TDD is “listen to your tests.”
When it’s hard to test a module, its usually an indicator that the module is poorly designed. Same goes for process. When some part of the process is hard to implement, that struggle is telling you something.
Keep an eye out for symptoms of larger problems:
- Who controls the flow and access to information
- How long it takes to go from idea to production code
- Inter-personal conflict and misalignment on the team
- When and how frequently changes in direction are made
Step #4 – Inspect and adapt (slowly)
Process only works when it works for your team.
Otherwise it’s just extra work. Waste. And an unfortunate part about teams abandoning process is that they also abandon good ideas. Good ideas like “Inspect and Adapt.”
To fully embrace a disciplined process means adjusting it over time to:
- Grow and expand as your team learns more
- Match the constraints of your team and organization
- Avoid making the same mistakes over and over again
- But without compromising on principles that make it effective
My key takeaways:
- Great teams treat process as discipline
- Listen to the process to make it work for you
- Teams abandon process for the wrong reasons
- Don’t give up on process just because it’s uncomfortable