We’re about three weeks into the shelter-in-place, one week into the governor mandated shelter-in-place order, and about 8 projects down.
Ok, maybe that’s an exaggeration; one sec.
5 projects in.
Five projects of tidying up, moving things around, and ensuring that 6 people can all survive in a 1800 sq ft house.
They were small projects; and each on their own not at all important — mere nuisances we would encounter. Like the Hall Tree we purchased in October of last year for our new entry way (warning: clicking on that link will take you to a twitter thread that spans 11 months with lots of photos detailing the progress), that we didn’t put together until now.
Or reconfiguring the office so that my wife and I could share it (that bookcase behind me in this video doubles as her desk).
Anyway, not to lose myself here, but let’s just say we’ve had a lot of projects. Projects that weren’t really essential. We didn’t have to do them.
Except we did.
None of those projects would increase our bottom line (if such a thing actually exists in a family), but they would make it much easier for us to live together under one roof for 24 hours a day.
Your codebase is just like that.
It’s a place where your entire team lives together, works together, and tries to make it work. And unlike our halltree project; it really does add to your bottom line when you keep it tidy, or take on those small projects.
Your product owner doesn’t live in your codebase, and neither do your stakeholders. They don’t realize that that developers live here. They don’t realize that just like that annoying box that was sitting in the corner for six months (our hall-tree), any annoyance in your codebase will fester into slowing down your team’s productivity given enough time and pressure.
For instance: If you use Entity Framework, those abstractions you put into place before you realized DbContext was already a unit-of-work abstraction will hurt you at some point. If you put that off, yea, you could work around it, but you’re dealing with an annoyance that will affect every member of your team at some point, for an indefinite amount of time (until it’s fixed).
This doesn’t mean you should fix all the annoyances; but if you treat your team’s codebase a lot like you’d treat your house; you’ll start to change how you view it. It’s not a set of functions and components that generate money: It’s more than that, it’s a place where you live, and decisions you visit upon your codebase will affect your entire team.
I don’t know about you, but if I’m going to be living somewhere for six months or longer, I’m going to be sure that it’s not going to cause me six months of pain. I’m going to make sure it’s as easy to make changes and improvements as possible. I’m going to structure my project in such a way that getting into that codebase day after day is a joy, not a pain. I’m going to use TDD.