This evening, I sat down to read on some of Uncle Bob's tweets and they are quite interesting, but one of them stood out for me:
And I can totally understand what he means, but I recently started working on a project that is so tangled that it was actually slowing us down. No matter your seniority, you would find yourself increasing the "WTF per minute" counter constantly while working on what seemed like a basic task.
In case you may wonder what the "WTF per minute" reference is about, the following image should help you out:
Which led us to speak to our manager and try to convince them that if we kept going that road we would make our lives worse with each step we take.
So, that resulted in a bunch of tasks that had to be estimated, divided into multiple devs in order to reduce the overall time it would take (as long as they could be worked in parallel) and blah blah blah.
This meant that we would have to spend at least 1-2 months putting everything on hold until we could refactor our code to be easier to manage, for both experienced and unexperienced developers.
Personally, I find that Uncle Bob's opinion should be the way everyone should think, but it should not be written in stone. Depending on how critical or big the refactor may be needed, you may need those refactoring tasks to be tracked.
Other opinions found in this tweet thread:
Which was replied with:
And then Uncle Bob added:
In Complete Developer Podcast episode 138, Understanding Technical Debt two hosts (Will & BJ) discusses 3 types of technical debts
Technical debt do occur and unfortuntely causes a long term debt.
A famous example of paying off the
Long Term
debt was React Fiber (v 16).React team worked on it for quite a long time to refactor their code inside and out and it was trackable on Is Fiber Ready Yet?.
And now they are adding new features left and right
In an ideal world, you'd refactor constantly following the boy scout rule,
leaving your code better than you found it
.But in practice, how many times have you had one of those,
high priority
tasks/issues and evenhigher
priority issues on top of that?For last two weeks, 👆 is what happened to me. I wrote terrible code and quite ashamed of it. But when you are given 2 days for a week long project, sometimes debt should be accrued to put out the fire 🔥 IMHO.
And yes, I will pay off the debt accumulated last 2 weeks starting tomorrow