A friend of mine posted the video below and I was immediately struck by it. Guilty as charged. I am definitely a procrastinator in many areas of my life. If you watch the video until the end, you’ll find out that we all are on some level. Even if you are great at managing deadlines, there are plenty of things in life that have no deadline and therefore we keep putting them off. We need to get better at handling things that don’t have deadlines.
That’s a great observation about life in general, but what does that have to do with software engineering? Actually a lot. There are a lot of things that we typically put off. We put off refactoring our code and paying back that tech debt. We put off automating some of our processes. Why? It’s not that we don’t care or don’t think they are important. It’s that we let the tyranny of the urgent overwhelm the priority of the important. We’ve got deadlines to meet and code to get out the door and we lose our focus on what really moves the needle long-term.
What’s the Cure?
The key to making important things that don’t have deadlines happen is to be very intentional about setting aside time for them. We need to enforce some sort of artificial sense of urgency. Without that procrastination will take over. We need to be proactive.
I propose that every software development group ought to have a regularly scheduled Tech Debt Day. I recommend once every other week, you set aside an entire day to do nothing but pay down technical debt and improve your processes. Now, exactly how often you schedule it and whether it is a full-day or a half-day is entirely up to you. Maybe 1 day a month is enough or a half-day every week, works better for your team. The key is it should be regularly scheduled and that time should be sacred. It needs to be on everyone’s calendar and everything else needs to be scheduled around it. Create a ritual around it. Do whatever you can, buy everyone pizza if you need to, to get your team excited about it.
Treat Tech Debt Day as it’s own separate project. Set up a separate issue tracker and as you all go through your day to day work, if anyone sees something that needs fixed or improved and it can’t be done right now, take note of it. Then the day before tech-debt let everyone on the team get together for 30 minutes or an hour and evaluate all the issues and coordinate to make sure they aren’t stepping on each other’s toes. I suggest giving the team as much autonomy as possible. Allow each member to pick what they want to work on. You’ll get more buy-in that way and will dramatically improve morale.
If you would like to talk more about different strategies to improve your team’s workflow, let’s schedule a call!