Joshua Jack serves as Director, National Agile Practice at MATRIX. He is a Certified Scrum Master and Certified Scrum Professional.
Agile Dad: The Winter Storm and Technical Debt
Georgia in the United States is not known for “winter.” But every three or so years, the Atlanta area is thrown into a tizzy by what Buford Calloway calls, “Connecticut Confetti, Flakes of the Devil’s Dandruff, New England Clam Powder” in other words, SNOW. If you don’t know what I’m talking about, watch this video.
Anyway, back to the story. Three or so years ago we had back-to-back events, the first being labeled as “Snowmageddon” and the second as “Icemageddon.” The first event caught everyone off guard. Being a midwesterner, when I started to see the snow accumulating on the roads, I immediately feared for my southern friends, family, and colleagues' lives and livelihood. I was not wrong. Ten-minute trips became three-hour travesties and the average Atlanta commute became like a trailer for “The Walking Dead.” Chick-Fil-A even remained open to provide shelter and “southern communion" (chicken sandwiches and sweet tea) to commuters trying to escape the frozen tears from heaven.
So we were just waiting on the cycle to come back around and it did. This year we were given little notice about the impending foot of snow that was headed our way. As the snow started to come down, my “prepper” inner child kicked in. On one hand, I was ready with food (milk, bread, and eggs!), water, extra blankets, etc. to make it through whatever was thrown at us. On the other hand was a list of things that I had not prepared that could cause problems. As I started to go through things I knew I was going to be paying a price for not preparing, I saw how our teams and organizations do the same thing. I remember how a company I worked for always had problems with upgrades of their 20k customers due to highly customized builds or how quality issues had slowed another customer's delivery delay to close to 12 weeks between “done” and “delivered.”
My version of technical debt
There I was, looking at the garage full of stuff. I knew that I hadn’t started the generator in months, that I had lanterns with possibly damaged bulbs, that I hadn’t checked the burners on the gas half of my grill or on my camp stoves at least since summer. I also knew our power grid. I swear our lines were hung before Edison or Tesla were born! The mere indication that weather was coming was enough for us to lose power. As a dad, it was my responsibility to make sure the family was safe, secure, warm, and fed. Knowing that, I dove into my technical debt.
High Impact/High Interactive Debt
The first type of technical debt is easy to spot. This is the kind of thing that not only do we know has a high impact, but no matter what we do, whatever feature we need to release, we touch it. Many organizations have put up with this kind of debt for years! You know it by the stuff that senior engineers warn the noobs about on day one. It is the stuff of legends at other organizations. All I know is that if you don’t take care of it, it will follow you around like a hungry puppy, wrapping itself under your feet until at the worse time it trips you up. For me, it was the lanterns. It was getting dark in the next couple hours, and our house is in the woods with lots of tree cover (even in the winter thanks to the pines), so light would be at a premium. I had to address this first or everything else I wanted to do was moot if the power went out. I opened up the containers and replaced a bulb on one of the burners. Simple fix? Yes. But what if I wouldn’t have had the expertise? What if my kids had to fix it because I was stuck in ATL? What are you leaving to your next-gen of team members?
Low Impact/High Interactive Debt
This version is much more subtle. These are the things that you have just grown used to dealing with. They are a nuisance but in normal times they are acceptable. Are you using three different technologies for data transport? Are you still on SQL 2008? Did you hard code some stuff that doesn’t matter, but… All of these are shortcuts that we have taken to quickly get to the end. For me? Our front door. It is just slightly warped and sometimes when the weather is either too warm or too cold, you can actually see daylight past the weatherstripping. I knew that if the power went out and I didn’t have that positive pressure from the central heat running, then cold air would quickly infiltrate. The question was whether or not I had the time and resources to get this fixed. It was a no. I knew I had to do some research on ways to either repair or replace the door and I just didn’t have the time to spend on it right now. This debt stayed, but I would pay for it by continuously using other resources to counteract its impact.
High Impact/Low Interactive Debt
Ah, the coiled snake of technical debt. This is the stuff that you hardly ever run across, but if you do, plan on your estimates going through the roof. For one client of mine, it was a whole “module” of the app written in VB6. It had never been modernized because it worked “so well.” It was also a feature that was hardly ever used so people just got used to it sucking. This. was. my. generator. Ugh – are these not the worst machines on the planet? Unless you drop like a million dollars, they all start hard, are finicky with oil, spark, and gas, and are just yucky. I knew that I had to deal with this, but it couldn’t be now. I knew that if the power went out it would probably be a day or two before I needed it and that if there were parts required, the roads would be back open before the power was restored. It would have to wait, but was constantly in the back of my mind.
Low Impact/Low Interactive Debt
Oddly, this is the one that is least expensive, uses the least amount of resources to take care of, and yet drives us the most crazy. Why? Because we have gotten used to it and there is usually a lot of it. Each item on its own is low interaction, but when you put them together they can represent a huge swath of the app. Do not underestimate these items! This was all of those things that I used if there was a bad storm and ONLY if there was a bad storm.
All put together it looked like this:
We weathered the storms ok and worked through the technical debt but at the cost of a few bad words, some frustrating moments, and more. And we didn’t even lose power! In the end, though, it was just time to sit inside and enjoy the world around us.