Holidays always strike me with an equal amount of panic, leisure and fun. We casually talk about the ways that holidays impact our work but we rarely put a strategy around it. There are lulls and then moments of intense focus to fulfill short term deadlines. This style of bimodal operation during this time of year and on-call responsibilities can ruin holidays, or at least make working in the new year a dread. For development teams, the holidays become particularly awkward.
In our development teams, the holidays bring a lot of unique twists to the team dynamic.
1) Communication lacks continuity
Because people take more days off, team and cross-team communication break apart. Cross-team communication, in particular, often isn’t the strong point for development teams to begin with. But, during the holidays, it’s near impossible. Inter-team communication is also a challenge. But, oftentimes, there are enough available resources on the team at any given time.
2) Tickets get abandoned
More things get dropped during the holidays. Some things are dropped because your team realized they have mandatory functionality to get done before the end of the year and developers are forced to bow out. But, abandoned tickets also pop up because it’s easier to push things out when tasks rely on inputs from multiple teams – which is even harder than usual during the holidays.
3) Food, blankets, and other comfy things
OK, admit it. During this time of the year, your belly is full, you want the cozy blanket and the fireplace. We all get a little bit more complacent during the holidays. It’s the pre-game for the full-on shutdown. Because we collectively start dragging our feet, we start focusing on easier tasks. But, at the same time, we buy ourselves some time for strategic research and thought, which does pay long-term dividends.
The problem here is that, generally, when we plan for Q4, development teams don’t often take this schedule into consideration. Partly because it would be a no-no to admit some of it, but also because priorities don’t take holidays. The program increment planning (PI) will have just as much, if not more, goals tied to it. That’s because companies want to start the year strong and there’s a rush to get those last-minute things off the backlog – it’s a recipe for disaster.
A lot of engineers leave for the holidays unfulfilled with the work completed and the team’s already asking for forgiveness for functionality that might get delayed in Q1. This looming disappointment can cause a lot of stress during the holidays and doesn’t allow for the proper break.
The crazier part about it is that most development teams know this instinctively going into the holidays but don’t change how they operate. They don’t reduce their promises and continue to create unrealistic expectations about what will get done. There’s this hope that the one person or team you need to get your feature done is not on vacation or focused on other, easier holiday projects. And, that somehow you’ll be able to work in a silo for an entire month.
Not going to happen…
So instead of trying to be invincible, development teams should consider ways to structure their tasks so that the same amount of work can be done – work that will be most effective because it’s least influenced by fragmented communication.
The holiday season is a great time of year for development teams to address technical debt. You know technical debt, that stuff that keeps piling up in your codebase that’s the future source of stress and disaster. The great thing about most technical debt is that its severity/priority is medium or low and issues can often be addressed in a silo. Just because technical debt doesn’t represent the highest priority work, its accumulation over time is a huge problem. So, playing whack-a-mole with bugs and tech debt during the holidays is a great way to take back some control of your service’s performance and reliability.
When addressing technical debt over the holidays, development teams should:
1) Address the easy tickets
Change button colors, bold fonts or add a favicon. You know, stuff you can bang out fast and do in your sleep. During the holidays, all hands are on deck to knock out the easy features. I would even suggest that this be done, even if the tickets aren’t owned by you. Teams can easily establish a process for grabbing tickets that they can address within an hour or less.
2) Get rid of old code
You ctrl+c, ctrl+v developers out there are guilty of leaving code riddled with rogue, unused functions. First off, this shouldn’t happen to begin with, but it does. Use the holidays to get rid of those. During this time, you can make a significant impact on reducing the entropy in your codebase.
3) Evaluate both code debt and test code debt
During the holidays, trim your test suite by removing old test cases that are no longer relevant. Testing functionality that is no longer used is a huge hit in test suite performance and reliability.
4) Instrument tooling
There’s a lot of tooling out there that are only halfway setup. Or, tools that are used very well by one team but not another. For example, exception monitoring. One simple line of code in your exception block and you are done. If some developers are doing it, but others aren’t, then the visibility of your application is only as good as the places you didn’t use it.
5) Improve application or service quality
Leverage code-quality tools and best practices to improve the overall quality of your codebase. That one time you cut corners on a function, now you can go back and make it better.
6) Improve documentation
During this time, it’s also a great opportunity to improve the quality of your automation documentation and manually-written documentation for code for which you’re a subject matter expert. Also, if you leverage a knowledge base, go back and answer questions for topics you’re an expert on.
Technical debt with a side of hot cocoa
For extra credit, organize with your team some fun holiday bug bashes – just not too much eggnog.
Everything above will dramatically impact the quality of the application and communication over the next year. These things are not as fun as new functionality but just as fulfilling as you enter the year with a higher quality codebase, better tooling and more collaboration. Then, when you go for a break, you’ll finally have an opportunity to say you made a dent in the things that were being neglected for so long.