Hacker News new | ask | show | jobs
by arinlen 1488 days ago
> Got a failure and need to get past it for now? No problem: bump the date for a week or something. Now at least two people are aware that it exists (author+reviewer)... and one is in the git history for that line.

That sounds like an awful strategy, one that needlessly creates problems and revision history noise and team distractions.

Is it awful if a comment leads your CICD pipeline to break? Now imagine having your CICD pipeline break because of a TODO item.

Just create a ticket in your ticket queue and get rid of that TODO.

2 comments

I do that, create the ticket.

I want to believe it means one day we will do that TODO, it'll beat the priority of all the other tickets in the queue.

But it never does, there's always some critical new feature sales wants, or something bigger on fire.

I still create the tickets, as a kind of cathartic process, a confession to the jira gods, I have sinned and half assed something. Please take this ticket as my penance.

> But it never does, there's always some critical new feature sales wants, or something bigger on fire.

Then clearly it is not deserving of your attention according to the powers that be. If it is, then talk in the language that these parties understand better/prefer: bump up the priority of the task, add a "blocked by" or "has to be done after" link to these other issues in the tracker and tell the rest of the teammates that you'll be working on that piece of technical debt instead of the new feature.

If you can't do that, then either the "TODO" comments/issues aren't important enough, or they're not deemed to be and will/should simply be left to rot until you either have an abundance of time to address them (which may be never), or the project is retired.

If more pushback is necessary, then do it doing any estimates (provided that you have any): "Task $FOO will take X% more time due to $BAR not being finished and slowing down development. Consider doing $BAR first and $FOO should become less complex then."

That's definitely the way management wants you to work, and it's worth trying to see how it works out. But in many cases it's not in your personal best interest.

In those cases, there's a way to keep management happy and yourself too:

1) Realize that when management asks for time estimates, they don't want your median estimate, because you'll be late half the time and that messes up their scheduling. Give them an estimate that you'll meet at least 90% of the time.

2) This means in almost half the cases, you'll have extra time. You can give some of that back to management, but use some of the time to fix technical debt. The more debt, the more of the time you spend fixing it.

3) With less technical debt, you can speed up your estimates and still be at that 90% level. Now you're delivering as much as if you let management fill your time in the first place. Your code magically has fewer bugs, there aren't many unexpected delays, and you almost always meet your deadlines. But you still have plenty of free time to improve things even more, develop your skills, etc.

As a bonus, you have more of a sense of agency, which is an important factor in feeling happy at work.

> If more pushback is necessary, then do it doing any estimates (provided that you have any): "Task $FOO will take X% more time due to $BAR not being finished and slowing down development. Consider doing $BAR first and $FOO should become less complex then."

Creating those estimates alone is more than the sum of total work usually.

Then the problem of convincing others is itself typically more than the sum of total work.

Usually metrics aren't accurate enough to be able to prove these things anyway in my experience.

yeah, it takes more time in jira to create a task with a deadline and get it in a sprint and make sure it has an owner and find it in the backlog and move it through the workflow's steps than "is unused? delete". heck, sometimes the task takes less time than loading jira's website.

task systems are frequently awful at team-owned (not necessarily an individual) lightweight checks.

> Creating those estimates alone is more than the sum of total work usually.

If that was true then it would be trivial to just push a pull request and update the ticket to review it.

> Then the problem of convincing others is itself typically more than the sum of total work.

When that happens, that's the universe trying to explain to you that you're wasting your time with stuff that does not add tangible value.

This does not change with petty office politics moves such as ignoring your team's best judgement and continue pushing for something that was already decided to be a waste of time.

> When that happens, that's the universe trying to explain to you that you're wasting your time with stuff that does not add tangible value.

That's not always true, especially if it's tangible value that takes more than a week or two to see.

Tech is very biased to short-term rewards that cost more in the long term.

> This does not change with petty office politics moves such as ignoring your team's best judgement and continue pushing for something that was already decided to be a waste of time.

If this happens, it's usually because that team is conflict avoidant or only minimally addresses surface level concerns in disagreements.

If you just want to get your paycheck, that works fine. If you are interested in improving, this is frustrating because the correct or more correct answers are never worth the time.

> Creating those estimates alone is more than the sum of total work usually.

Then simply add those hours spent estimating things to whatever time management solution that you use personally (for insights into where your time goes each quarter/year) or that your company mandates (for basically the same thing). If it's an actual problem, then simply raise it as such later down the road and look for ways to streamline things.

Most of the time you shouldn't care about how much time something takes (exceptions exist, based on the industry/project, but many deadlines are made up anyways), merely that the time to be spent on the task has been approved and that you're not doing something that isn't documented/categorized, e.g. time that "disappears" by being spent on things that don't have any sort of visibility/basis for taking up your time.

If changing how a button works takes 2 hours but writing tests takes 4 and refactoring old code takes another hour, then let the record show exactly that. If unclear requirements cause you to spend another hour or two in meetings and talking to people who didn't document code or explain their changes in merge/pull requests, then let the record show that, too.

Of course, this might vary on a per-company/project/culture basis.

> Then the problem of convincing others is itself typically more than the sum of total work.

If others in the team don't want to fix these things, then they probably aren't as important/annoying as you think they are and therefore probably won't be prioritized so highly anyways. When there are really annoying/brittle API integrations, for example, most devs usually should back you up in your efforts in making things less horrible.

> Usually metrics aren't accurate enough to be able to prove these things anyway in my experience.

You don't actually need metrics that are completely accurate, because finding ones that are is seldom easy to do or even possible, or simply not worth the effort. Having something to the tune of "This API integration can be improved, the last 3 feature requests related to it exceeded their estimates by quite a bit" should be enough, provided that you can get the other people on board.

If you cannot, then it's probably an issue of the actual work environment/culture and/or soft skills.

>Then simply add those hours spent estimating things to whatever time management solution that you use personally (for insights into where your time goes each quarter/year) or that your company mandates (for basically the same thing).

Which sometimes means it doesn't happen because it's not valuable enough at any given instant to go through that multi-hour process, yes.

Lightweight tasks exist. As much as I generally agree with you, following your rules means you either do not ever do them, or you bloat them to multiple times larger than necessary. And correcting a company's task-management process as a whole is not always feasible either.

> Lightweight tasks exist. As much as I generally agree with you, following your rules means you either do not ever do them, or you bloat them to multiple times larger than necessary. And correcting a company's task-management process as a whole is not always feasible either.

Creating a short Jira issue and poking someone about including it in the current sprint should take about 10 minutes in total, if you want a decent description and are okay with occasionally not focusing on the "ceremonies" of sprint grooming too much, since as you say, some tasks are indeed small (and as long as this doesn't lead to scope creep, e.g. fixes/refactoring instead of new features this way).

Of course, that may always not be viable and i see where you're coming from - yours is also a valid stance to take and i see why focusing on an issue tracker too much would be cumbersome. Then again, in my eyes that's a bit like the difference between having almost entirely empty pull/merge requests and having a description of why the changes exist, a summary of what's done (high level overview), additional relevant details and images/GIFs of the changes in action, DB schema diagrams or anything of the sort.

I feel like additional information will always be useful, as long as it doesn't get in the way of getting things done (for an analogy, think along the lines of covering most of the business logic with tests vs doing TDD against a bloated web framework and thus not getting anything done - a few tradeoffs to be made).

> I want to believe it means one day we will do that TODO, it'll beat the priority of all the other tickets in the queue.

> But it never does, there's always some critical new feature sales wants, or something bigger on fire.

Why do you expect that random comments in the code will affect the priority of some tasks? Do you feel that stashing out-of-band info on pending tasks which were deemed not important regarding the project workload changes anything?

Also, if everything is always more important than the TODO item, that is the universe telling you that your TODO item should be deleted and that you should stop wasting your bandwidth with useless and unnecessary tasks.

That TODO item is just the receipt for a few bytes of technical debt you took with the universe. A few bytes is nothing compared to Management's roadmap, so it gets ignored. But have no doubt: the universe always returns to claim its technical debt...
> That TODO item is just the receipt for a few bytes of technical debt you took with the universe.

It really isn't.

A TODO item that you feel does not justify a ticket is just a subjective nice-to-have expressed as noise/a declaration of intent with no intention to deliver, which ultimately only results in noise.

It's not even technical debt. At most, it's a pledge to goldplate something without being able to argue any tangible upside.

> A few bytes is nothing compared to Management's roadmap, so it gets ignored.

Bytes are irrelevant. Tickets also cost bytes. Tickets also track rationale and context. What really matters is allocated resources in order to deliver value.

The only reason your TODO item gets ignored is because the potential value it promises does not justify allocating resources to it.

People need to be smart about how they invest their time and effort. Tracking vague tasks deemed unnecessary or useless in a separate out-of-band source of info is not productive and ends up only creating noise and distractions.

> At most, it's a pledge to goldplate something without being able to argue any tangible upside.

One person's gold plating with no tangible upside is another person's not be woken up by pagerduty at 3am ;)

In Eastern Liturgy, the ticket is the confession and the mandated overtime is the penance.
You could have the best of both worlds by making the CI job search the backlog for overdue critical tasks.