The Ownership Effect
You make better decisions when you have skin in the game.
When you don't have to bear the responsibility, it's easy to fall into the trap of prioritising convenience over putting in the effort required to make the right call.
I experienced this during a hiring process for junior engineers. In the earlier stages, where you're getting a sense of their character and experience, it was easy to pass candidates through, because the real decision would fall to someone else.
At those stages, it's easy to try to be optimistic and focus on the positives about a candidate, rather than being objective.
Later, in another hiring round, my boss gave me very clear instructions: "If you pass a candidate, they join your team."
I have a very small team. At that point there was only me and two other engineers. Even adding one more person would be a big change.
My perspective on interviews changed completely. I was now absolutely focused. Could I manage them? Were they motivated? Did they have the skills to succeed?
No one's perfect, and we were hiring a junior. So I couldn't be too strict. But at the same time, I wanted any new joiner to be a positive addition to the team.
It's the same with software development.
When you need to meet harsh deadlines, it's tempting to just focus on delivering. Reusability, maintainability, and even stability are things that can be ignored. Because maybe you're just working on a small change. You might never work on that codebase again. Or you simply don't care.
I've come across people like that. I've probably even been that person myself. And sometimes it's good developers that make bad decisions. Just because of the situation they've been put in and the priorities they choose.
There are a few situations that I've had personally that have made me change my approach.
When we started an on-call rota at work, we suddenly had to be very precise when choosing what was an error and what required an alert, alongside thinking about automatic failure recovery. When you suddenly have to stop what you're doing and investigate and fix a production bug, that's when you've got skin in the game.
Long-term ownership has a similar effect. When you are the one that has to maintain a codebase, you make different decisions when writing code. You'll want to steer clear of shortcuts that will cause you pain down the line.
If you're leading a team, this is something to remember. Give people ownership and they'll make better choices.
And if you're the one writing the code, you can use it to your advantage. Seek out the work where you'll have to live with the consequences. That's where you'll do your best thinking.