Tech debt and self-care

Tech debt and self-care

I spent the last few years as a backend engineer working on a monolithic codebase. I went from lazily devolving to the "let's split this into services" mindset to "if I could hug a codebase, I'd embrace this one" mindset. Architectural schools of thought aside, it was still a monolith in need of great care.

When I started, I came to Python as a Java engineer having no production Python experience. And it showed, arguably until last week when I finished my tenure at SpotHero (though I'd argue that it showed less than when I started). If abstraction was my hammer, then everything was a nail. So I picked up abc.ABC and started swinging. Subsequent git blames would inform me that I wasn't the first to take that wrecking ball to our monolith.

As I began to adopt a more Pythonic approach, opportunities for refactoring became more obvious, piling up to a seemingly insurmountable debt. In addition, there were plenty of product health-related opportunities that weren't directly a part of our application code. Collecting meaningful, ongoing code coverage; standardizing log formatting and aggregation; failing builds that introduce breaking changes to downstream consumers of data; static analysis to measure the level of coupling among the modules of our beloved monolith. The list goes on.

There was nothing novel about our mounting tech debt. And there wasn't anything novel about us not paying this down in more significant ways. Desired product features and fewer humans created frustrating constraints.

I care about product health, whether that's within the primary codebase that my commits target, or in the broader context of how that deployed codebase moves in the choreographed dance of our business. Fellow humans at SpotHero grew accustomed to hearing me talk about these opportunities in our regular Backend Unite meetings. If only uttering the words could instantly create capacity to act on that message.

Dedicated focus on product health is a form of professional self-care.

Call it my last ditch effort to leave a lasting impact, but what was most profound for me was how I felt focusing on product health during my final two weeks at SpotHero. I learned that, for me, dedicated focus on product health is a form of professional self-care. I hope that I won't forget the level of satisfaction I felt when, for example, I merged a PR that validates that the database schema produced by any commit to our monolith doesn't result in a failed Kafka Connect query that resides in another codebase.

There's business value there, even if "only" in the form of a quality-of-life improvement introduced to on-call engineers who may have otherwise found themselves coding a late-night fix to a query that referenced a recently-dropped column. I've been the engineer that's dropped that column. And subsequently the one who's apologized for interrupting a coworker's evening. I would bet that engineers in even the most blameless and psychologically safe organizations would still rather not be paged off-hours.

There are lots of ways companies make space for their humans' self-care - flexible scheduling, unlimited PTO, ERGs and access to mental health resources. I suggest here that another item on the list is to allot regular time for folks to improve their own and their peers' quality of life, simply by further expressing themselves through the powerful craft for which they've been hired.