This blog post about flies is a stub - you can help one twenty three cloud street grow by expanding upon your experience in the comments.
What is a Fly?
We know a few things about the Fly
Flies are insects from the order Diptera
Diptera: Two-winged, highly maneuverable, diverse insects.
Over 1 million species, many still undescribed.
Complete metamorphosis, larvae develop inside food sources.
yuck
Critical pollinators and disease vectors
Useful as fishing bait
Can be annoying.
A scrub is a guy that think’s he’s fly and is also known as a busta(1)
Now I’m feeling so fly, like a G6 (2)
The mathematical property of transitive relation shows that a G6 is officially a Scrub.(3)
It also shows that a G6 is a busta. Remember that the next time your rich friend jets off to Monaco.
Flies are symptoms of expired technical debt
I’m not here to talk to you about the common house fly(Musca domestica) or the Culex Quinquefasciatus, or the Cylindromyia Brassicaria. I’m here to talk to you about the flies hovering around your stand-up table or in the break room.
When we/our/your business takes out a technical line of credit, tech debt will always exist, this is arguably good and unavoidable; however, sometimes things can smell and then the flies get in.
While the irritations of biological flies may be a nuisance in the office setting, they are nothing compared to the metaphorical 'flies' that buzz around the realm of our projects and code repositories. Such flies represent the disproportional accumulation of technical debt in a specific area– those pesky issues we know exist yet often endlessly defer, impacting the daily life and productivity of a development team.
So what really is a fly?
A fly is an annoyance that doesn’t need immediately addressed but impacts the quality of life for everyone working near that fly.
These 'flies' can be remnants of expedited decisions, quick fixes, or postponed updates that we plan to address "later."
They are the exceptions we temporarily accept amid pressing deadlines and shifting priorities. Think of them as minor design flaws, instances of non-optimal code, lingering security patches, or even outdated documentation – each representing a small portion of technical debt that accrues interest over time.
Though technical debt is an inevitable part of the development process, not all of it buzzes with the same intensity. Nonetheless, just as leaving food out too long invites trouble, allowing these 'flies' to loiter in your tech environment can lead to compounded challenges. They might seem trivial, easy to swat away or ignore, yet in a swarm, they can diminish a team's velocity and the overall quality of a project.
Addressing the 'flies' is not just about maintaining cleanliness; it's an exercise in vigilance and discipline. It means regularly revisiting and revising our architectural and developmental choices to ensure they continue to serve our evolving goals effectively. By doing so, we keep the 'flies' at bay, allowing our projects to thrive in a healthy, high-performing ecosystem.
Story Time
My favorite story about a fly starts with a company that was using Python Django to build their core product. Year after year, feature after feature flies flocked to this one particular area.
“We can’t upgrade Django, we forked it 9 years ago and it would be too hard to bring those required changes forward.“
We believed this fly to be true for 9 years - the Django version remained unpatched, insecure, and people began saying “well if we could upgrade Django, my feature wouldn’t be so hard to implement and it would take me half the time”
Eventually someone investigated the root cause of the fly. The forked version of Django. It was indeed forked, and the only change - the README.md file.
The fly pointed to the mess part of the project that didn’t get its fair share of the interest payments.
Swatting the Flies
Flies are symptoms of technical debt with a
juicyrotten root cause.
Listening is often the first step to finding “flies”. You’ll hear them buzzing around the office, sometimes they die out on their own, sometimes you find one stuck on the break room ceiling holding on for dear life, they’re around every tech company in varying amounts.
Typically, they are less disruptive than a rumor about your company's super-secret upcoming merger but also deemed less critical than the slated features and sensitive tech debt looming overhead, right? Maybe not.
Sure, it's all tech debt, and we do pay it down now and again, but why should we prioritize an issue simply because it's irritating someone?
It's because a fly symbolizes a more significant underlying issue.
Flies are drawn to places where they can lay their eggs—after all, the goal of a fly is to produce more flies, right? Ask yourself: Why is this part of our technical line of credit attracting flies? From my experience, it’s often due to two main issues: a lack of resources or a gap in skills.
There is usually an outdated technology or practice in the mix that a gap in skills or a lack of resources has compounded. This overlooked segment of our 'technical line of credit' isn't receiving its due care.
When we hear statements like "We can't upgrade Django; we forked it 9 years ago, and unraveling it now is too complicated," it’s not just a throwaway remark—it's the buzzing of a fly.
Such laments hallmark the emergence of a 'fly': a problem that may have once seemed manageable or insignificant, yet with time, it matures to stifle efforts and hinder progress.
When team members suggest that tasks "would be simpler if not for X," or "could be done in half the time if Y were resolved," it’s time to take action. These expressions of frustration are symptomatic, and akin to an exterminator homing in on the problem, developers and project managers need to track these 'flies' to their source.
I once nurtured a fly of my own, making excuses for why I hadn't upgraded our systems by saying,
“It might be easier to re-write the whole project then upgrade our forked version of Django” - Will
yeah. flies lay eggs.
The key is to find them before they hatch. Foster a culture of transparent communication within your team from all directions. Don't shy away from confronting flies; recognize that they’re indicative of wider issues.
Experiencing 'flies' can be a tough lesson, as many of us can attest.
I’d be eager to hear how you've faced off with these nuisances—share your 'fly' tales in the comments below.
The main issue is when the technical flies become a technical swarm!!