This is the final part of a mini-series comparing elements of sports teams to software engineering teams. Each part of the series will be released weekly.
In this last instalment of From the NFL to Software, I’ll discuss our final comparison between sports and engineering teams: nothing is permanent. As much as we may love our current situation—or hate it—it will change with almost guaranteed certainty. This is a well-known reality in sports teams: players can be traded or cut immediately. Injuries can end seasons or even careers. Players who have played for a team for years can be shown the door with immediate effect. The process can be brutal. In the NFL, this reality is baked into the league’s DNA, so much so that it has acquired a colloquialism for its name: Not For Long. You might be a player today, but not for long.
It will come as some relief that in software teams, we’re not met with quite the same brutality of changes as seen in professional sports. Whilst, of course, the equivalent of trades and cuts do exist in our field, it’s not routine. That said, we should be aware of getting overly comfortable with our current situation in the software industry. Changes do occur. This can happen overnight or over a few months, depending on the company’s nature. I can recall a situation, some time ago, in a company where the entire engineering team, of which I was a part, pivoted from building one product to another literally—I mean literally—overnight. The company at the time was producing two significant products in parallel, and whilst this is not an exceptional circumstance, being the startup it was, there was a consistent reactionary approach to building software. When it became clear that one of the products had become heavily under-resourced—and was at risk of royally pissing off its only customer—our maverick CTO moved the entire engineering team—some thirty engineers—to the flailing product. A bit like a ship’s crew all moving in unison from one side of the boat to the other — chaos ensued.
What followed in this tale is a story for another time. The point is that on the morning of that day, I knew what product I was building, the teammates with whom I was making the product, and why we were building it. By the end of the day, I had to recalibrate all of this knowledge immediately. But even though the change may have been abrupt, upon reflection, my reaction needn’t have been one of shock.
Disruptive changes are usually always outside of our control. They’re going to happen whether we want them to or not. However, what remains in our control is how we prepare for these changes. If we think that our current situation will continue forever, it’s naturally a shock when reality hits us in the face. But if you understand that everything is malleable in a company and that what might be here today may not be here tomorrow, you’ll find adapting to changes much less painful.
I always wince whenever I hear a founder, a CEO, or an employee describe a company as a “family”. My internal response to this is, “I sincerely hope not”. The analogy is entirely vacuous before it even gets going. If someone leaves the company, is that equivalent to my grandmother recusing herself as my father’s mother? Companies are companies, not families. We should strive to work collaboratively and be good teammates to one another, perhaps even good friends, but that’s where we draw the line. To go beyond that line exposes us to unnecessary pain when the “family” has a significant reorg, the “family” runs out of money, or the “family” has a messy divorce.
Prepare for impermanence. Things will change; don’t be caught out when they do.