“The only way to make the deadline — the only way to go fast — is to keep the code as clean as possible at all times.” — Robert C. Martin
Do you lead a team of engineers who have an obsession with clean code?
Do you bemoan your team “over-engineering”, spending too long “tinkering”, rather than working on obvious improvements?
Maybe there are too many cards in the backlog about refactoring this or improving the tests for that. Or too many bullet-points in the daily snippets about tidying up things that have already shipped.
The business wants results fast. The engineers want clean code. That sounds time consuming. These things seem at odds, like different motivations. This causes tension.
Does it feel like part of your job is to counteract and challenge this natural engineering impulse — this apparent weakness that, for some reason, afflicts all your best engineers? Are you the one who has to constantly remind people about speed and urgency?
If this is you, here is a different perspective on your team.
Your engineers don’t want clean code. Your engineers want to move fast. Clean code is just the method that allows engineers to move fast.
If, in some strange alternative reality, spaghetti code made them move faster, then engineers would studiously write spaghetti code.
Clean code is not their goal, moving fast is their goal. There is no conflict of motivations.
The most successful teams I have worked in, without exception, were those that regularly brought some housekeeping/axe-sharpening/pain-removal cards into the sprint. Then they cleaned up even more within the context of other jobs.
These teams often contained somebody who was passionate about code cleanliness and that individual had a hugely positive, even vital, influence on the team as whole. These are the unsung heroes who have transformational effects on the success of products and the fortunes of tech companies.
As a leader you hire the best people, people who know the details of their job far better than you. It isn’t the leader’s job to understand the value of every technical task in the team’s backlog. The leader’s job is to build a team you can trust and then get out of their way.
About the Author