From a business perspective, he could have finished the first two tasks before going to the next one - the total time to completion would be the same, but the business would have had 2/4 tasks completed and therefore a better product earlier.
The fact that this is an article written by a software engineer that completely ignores the missing dependencies bears some irony :-)
I don't think this is the case as the author mentions he assumes Hal follows the boyscout rule:
> at each step of the process leave the camp site a little bit nicer than it was when arriving
Which is the only way to get tech debt under control when tech debt is not a dedicated project (and thus receives no allocation)
It kind of punts on the dependency thing, the idea being that if you notice some small fixable thing then you might as well do it right now.
Which in turn makes the parallel with tech debt all the more on point, the joke being not so much about a singular chain of issues but about the household being absolutely drowned under a gajillion independent issues that keep making everything demoralisingly slow.
I think it would closer reflect technical debt if when Hal went to change the light he found the shade needed cleaning badly, he wipes it down with a damp cloth, the top of it is filthy, but as he wipes he can bits of the shade are coming off in the wet rag, then he gets a mild shock when he wipes the cord hanging from the ceiling. It obviously no longer meets the safety code as it is unsafe and decides since he needs to hold onto it while replacing the shade, it needs replacing and needs to ensure the power is off first ... before he gets the fortuitous spare cord he realises the fact he got a shock while the light was supposed to be off means the switch needs to be inspected, and resolve the dilemma. In the mean time Lois arrives and realises the shade is see though in places and mentions it needs to be replaced why aren't they doing that. Hal who's pulling the switch cover off carefully exclaims what does it look like I'm doing.
In this example it would have been tech debt if he couldn’t find a light bulb so he plugged a lamp into an extension cord and draped it over the floor… it would work, but eventually someone will trip over the cord.
None of the activities that distracted Hal were essential to changing the light bulb. It wasn’t tech debt and it wasn’t yak shaving. It was just a lack of discipline to do the first job first.
Sorry to be so literal but this is HN. I still thought the clip was funny!
Tho I would say experienced developer is able to recognize business needs and how much work has to be put into something NOW.
Being able to leave stuff open for fixing later is a crucial skill.
I would even go as far as say that not having this skill automatically discredits someone from a Senior position.
Pop the stack a few levels, replace the lamp, then decide if you need more WD-40 right now or can get some the next time you’re out.
Wait didn't they more accurately illustrate what software people like to call "yak shaving"? I mean sure all of these little problems could be analogous to tech debt ... but the thing that sticks out more than anything is that Hal is shifting from one task to the next, each one to make the previous one easier/possible, and each one is further and further from the original goal
> Problem: For some reason, the problems you push onto the stack keep getting bigger and bigger and bigger, dwarfing the original problem, each one dwarfing the one before it.
Technically this could be implemented using the same software that is used for bug-reporting.
Then would developers willingly report issues to such a system? I think they would because solving such issues is satisfying to whoever cares about software quality, because it makes it easier to maintain the system in the future.
From a developer's perspective the worst kind of assignment is to try to fix something in a very fragile system because if they "break it, they own it". Therefore developers love SW quality.
But would management approve of spending time on reporting and possibly fixing design issues? Well why not because if the knowledge of the issues exists only in the head of some developers, it is not really owned by the company. Whereas if it was reported in an issue-tracking system it would become official part of the IP owned by the company, increasing its value. So yes I think at least some enlightened managers would approve the use of such a system.
Using such a system would seem to make a lot of sense to me. Perhaps companies are already doing it?
Adding to the total "estimated time" for a project in Jira at some places is a "bad" thing. It makes the burn down chart go the wrong direction.
This also presupposes that a developer cares about the long term maintainability of the code. When tenures are measured in "two years? You've been there for a long time" the work that needs to be done two years and a day out isn't something that is a concern.
There is a lot of "development team did it, it's done, throw it over the wall and let the maintenance team deal with it." The maintenance team, however, is under resourced and since there aren't any good tests for the functionality, refactoring anything that isn't verifiable is much more work than fixing a bug where you can say "yep, that's done."
Management in many places isn't concerned about code quality and see it more as "developers are gold plating that project." Spending 4h to reduce the time it takes to do a hypothetical support ticket that may never occur from 3h to 1h of maintenance time (that's a different team) isn't a good investment of time.
And while there are enlightened managers out there, they are still up against the metrics of "how much did your team accomplish that the business wanted?"
There's so many kinds of discussions going on in developer communications. Establishing a channel for technical debt within a project would seem to be not the worst waste of time.
But would management approve of spending time on reporting and possibly
fixing design issues? Well why not because if the knowledge of the issues
exists only in the head of some developers, it is not really owned by the
company. Whereas if it was reported in an issue-tracking system it would
become official part of the IP owned by the company, increasing its value.
In practice, management will not endorse developers reporting and spending time working on design issues, unless that design issue can be directly identified as a blocker impeding the delivery of urgently needed functionality. Even then, half the time the developer will be told to note the issue and implement a short-term workaround. Using such a system would seem to make a lot of sense to me. Perhaps
companies are already doing it?
Pretty much every company I've worked for has had a category in JIRA for design issues and technical debt. Tracking these things isn't the problem. The problem is getting buy-in to spend a portion of each sprint actually addressing these issues, rather than having them in some backlog pile that everyone pays lip service to, but no one takes action on actually reducing.LOL.
Never met a business executive who could be persuaded that tech debt matters. Not one.
A bad file format, if shipped, will cause decades of debt. Same for critical APIs. Not all debt is this way - you need to identify what debt will multiply and tackle that type of debt ASAP.
Startups iterate fast because they have the least debt. If you want to maintain your edge, you can't let debt grow.
I’m no database engineer, but the whole point of using an ORM is to avoid bare-bones SQL. It’s generally accepted that using an ORM as an abstraction on top of the data layer is a more maintainable solution. At least that’s what we’ve been taught. However, I do believe in writing and knowing actual SQL (for whatever target DB you’re using) so that you can understand what’s actually happening “under the hood”. And many ORMs allow direct SQL passthrough for optimizations, however having an ORM for basic queries like selecting values from a table or view are very welcome and I will always advocate for their usage. I don’t see how this incurs technical debt - in fact I would say just the opposite. NOT using an ORM induces technical debt.
Not in my experience. Unless there has been a radical shift in opinion in the last five years I would say that that was quite a controversial position.