I stumbled upon this quote rewatching the Lex Fridman Podcast #364 with Chris Voss. A powerful quote. Makes you think about how deep the saying “Stick to your values” goes.
I was fascinated because it reminded me of many teams who stick to bad core values.
Ever heard any of this?
We will never use <technology X>
<X is bad>
Pair Programming is a waste of time
You must have code reviews and PRs
I’ve been advocating for modern development practices for over a decade now. A clear outlier for lack of progress in badly performing teams is their inability to adopt new methods because their core values prevent them from doing so.
Examples of Bad Core Values
I. Striving to be busy all the time
Business is the largest signal that your tech team is a wasteful cost-centre. Hyper-optimizing time spent coding, time tracking to 15minute intervals is what keeps developers from recharging their batteries after their first 45minutes in the morning.
By the way, that’s likely how much productivity you get out of them for the entire day.
II. Constant all-hands meetings
3 hour sprint plannings, retrospectives, 30minute daily huddles with 10 people. Having blocked-out calendar time to go through JIRA and Emails. All these activities prevent actual work and contribute nothing to the overall productivity of the team. Such teams are stuck estimating a roadmap for a quarter that is 3-times over their effective capacity.
They get stuck in this loop:
Spend a week estimating and planning 5 features
Deliver 2
Spend a week estimating and planning 5 features
Deliver 1
Crisis support
And repeat…
III. We will <automate|fix|test|refactor… pick one> later
You fill up your calendar with three types of activities:
Designing your product
Planning your execution
Execution
Without improvements in the method of execution, teams can get stuck over-designing and under-executing badly set goals.
Quality-improving activities are your salt and pepper, they make everything run smoother, “taste better”. When would you like to season your meal—before or after you have eaten it?
Examples of Good Core Values
In line with the quote in the title. Here are quality-producing values that cost you and are worth sticking to.
I. Become a Profit Centre by eliminating process waste
Cancel unnecessary meetings. Document what you can, host meetings only to confirm that information was received, not to transmit it.
Check how long each step of your deployment pipeline takes.
Get annoyed debugging manually on support triage? Write tools, eliminate manual
Takes too long to verify whether features work? Write tests, automate checks
Waiting forever for code review? Pair program instead, rendering reviews obsolete
Wasting too much time estimating work? Shorten the deadline, releasing sooner instead
II. Be inclusive and lean, vertically integrate across all departments
Rather than having hand-offs, hand-backs and commitment & review meetings include the entire team in a collaborative effort. On a strategic level these can be Event Modelled and Domain-driven storming sessions.
On a tactical level, sit down your product manager, designer and engineers to mob program together, exploring a live prototype to get immediate feedback.
Surprises are for birthdays, not product launches!
Get bad news as soon as possible.
III. Clean up, before you start working
Before you start making a change, improve where you are situated, make the change easier to introduce. Then introduce the change.
This applies to all areas: product, business requirements, coding, design, sysops, devops…
Analysis and complaints about debt is for teams stuck in the past, chasing their tail. If you want to accelerate, you have to think about future problems.
Remember, a successful business will increase in complexity over time. The only way to manage it is to prepare for it as you’re introducing it. If you introduce it hoping you’ll manage it later (maybe) you’re digging a grave and are turning the team into a cost-centre.
Lex & Chris
In case you want to watch it.