[HN Gopher] There Are No Bugs, Just TODOs
       ___________________________________________________________________
        
       There Are No Bugs, Just TODOs
        
       Author : Almad
       Score  : 367 points
       Date   : 2020-06-05 13:42 UTC (9 hours ago)
        
 (HTM) web link (almad.blog)
 (TXT) w3m dump (almad.blog)
        
       | foobiekr wrote:
       | This is close to how I worked for years (mine: build a dependency
       | graph and then order by dependency, work through a graph at a
       | time). It caused a ton of friction with my work environment which
       | was managers prioritizing bugs and then expecting you to work on
       | them in priority order which, often, was nonsensical.
        
       | travisjungroth wrote:
       | This post solidifies an idea that's been kicking around in my
       | head: software tends to push productivity towards a local
       | maximum.
       | 
       | Let's say the author is right and ticket queues should be a
       | single stack with no priority. That seems pretty easy to make.
       | Easy enough on a popular enough topic that I'm sure it's been
       | done. But, I've never seen or even heard of one in use. Why?
       | Because it forces people to make hard choices. The software
       | doesn't handle all the real world crap that comes up when people
       | try to use it. It can't make the jump out of the local maximum.
       | So instead, we get people endlessly iterating on the same ideas
       | and releasing the same basic project trackers with slight twists.
       | 
       | Also, I think there's a billion dollar company for someone who
       | can make an internal support tool that people will actually use.
        
         | jpswade wrote:
         | Kanban is effectively this.
         | 
         | It works to an extent, but then someone somewhere usually has
         | an abstracted concept of priority, otherwise you end up with
         | priority as per the "highest paid person's opinion".
        
       | twic wrote:
       | > Assign to a single person.
       | 
       | That doesn't work in teams with collective code ownership, ie all
       | successful teams. But you can replace this with "assign to a
       | single team" and i think it works much the same. The footnote to
       | this says:
       | 
       | > For larger teams, that can be a team account, but in that case,
       | it is team leader responsibility to go through all team owned
       | tickets regularly and delegate them
       | 
       | But that isn't correct. You can have a team pull from a single
       | queue of tasks assigned to the team as a whole. There's no need
       | to proactively assign them to individual team members.
       | 
       | > Every team must have a single ordered queue of tasks.
       | 
       | As long as you understand that "tasks" does not encompass
       | technical housekeeping tasks like refactoring, improving the test
       | pipeline, etc, sure. The queue of tasks needs to be ordered by
       | someone with customer/business/domain knowledge. There's a
       | negligible probability that this person is also expert enough to
       | prioritise housekeeping against feature work. But the development
       | team itself can do that, no problem.
       | 
       | > I advise to start with the "Todo", "Doing" and "Done" triad and
       | only add more if absolutely required
       | 
       | This sounds good. My one thought is that there are usually
       | different people who can say "i think this is done" (the
       | development team) and "yes, this is done" (product owner / QA /
       | etc), so i suspect todo/doing/ready/accepted as the minimal set.
       | But you could find a way to make three states work, i'm sure.
       | 
       | > When people scream "this is a bug", it is irrelevant what it is
       | caused by
       | 
       | It's relevant to estimating velocity. If over a quarter, you
       | estimated you'd do a hundred features, but actually did one
       | feature and ninety-nine bugs, you should not plan to deliver a
       | hundred features next quarter.
       | 
       | It's relevant to continuous improvement. If you're getting a lot
       | of feature requests, great, carry on. If you're getting a lot of
       | bug reports, not so great, slow down and see how you can improve.
       | 
       | > Saying "no" is hard, but without it, the issue system becomes
       | an unmanageable mess.
       | 
       | We must recognise this as simply being an expression of the
       | author's deletionist aesthetic preference, not a fact about the
       | world. As long as you know what the most important tasks are, it
       | doesn't matter if there are an infinite number of less important
       | tasks behind them.
       | 
       | > Yet I do believe this is actually a property of any job
       | position: people rarely want their job to disappear. The moment
       | you create a job position, it tends to metastasize.
       | 
       | Very strong truth! My third (?) law is that if you hire someone
       | to do something, then that thing will get done regardless of
       | whether it is actually useful. I am most often reminded of this
       | law when dealing with security people.
        
       | lazyant wrote:
       | I enjoyed and mostly agree with these ideas. Some points though:
       | 
       | Re: Position In a Queue
       | 
       | > Every team must have a single ordered queue of tasks > every
       | single one of them is prioritized relatively
       | 
       | This may lead in Eisenhower's matrix to prioritize urgent tasks
       | vs important tasks and end up with tech debt.
       | 
       | I lead a soft eng team and we have a task queue but they are not
       | prioritized (and that may be a mistake). Beyond the time wasting
       | agonizing if X > Y for tasks, I like to keep parallel tracks of
       | urgent (blocking) and tech debt tickets.
       | 
       | Re: Ticket Type
       | 
       | The most or one of the most important metric in software is user
       | angry or happy calls (a proxy for revenue). If an unannounced
       | planned feature doesn't make it to the next release, nothing
       | happens. But if the customer now sees a regression bug (something
       | that worked suddenly doesn't) that's bad. There's value in
       | differentiating bugs from features, at least in some industries.
       | 
       | Re: Software Version
       | 
       | See Semantic Versioning https://semver.org/ ; it's important to
       | know if a release is backwards-compatible or not
        
         | taftster wrote:
         | A bug report does not imply a user is angry or not. Software is
         | shipped with known bugs which often go unfixed. And a lack of
         | features can be just as critical of an impediment for a user.
         | So neither bug nor feature can fully describe the effect that
         | an identified issue has on its overall priority.
         | 
         | An angry phone call doesn't universally change the order of
         | work for all companies. Some projects might rate this event
         | more importantly than other projects. Most angry phone calls
         | are a result of usability problems not strictly feature
         | defects. So there's no direct correlation here between user
         | product sentiment and backlog priorities, unless your company
         | culture adds that correlation.
        
           | lazyant wrote:
           | thanks for this nuances.
        
       | jpswade wrote:
       | Much of this is only from the perspective of the consumer, a
       | developer.
       | 
       | What businesses want is a way to be able to track progress and
       | communicate priority.
       | 
       | The difficulty for the the business is how they communicate
       | _their_ priority to you, that 's what the priority field is for,
       | it's a way for the person raising the issue to supply a way to
       | communicate how important an issue is to you.
       | 
       | The position in the queue is how you (and presumably your team)
       | should decide what order to tackle the work in.
       | 
       | The final point is the solution to the problem is to create
       | another system for issues, which goes against the point that says
       | "every team must have a single ordered queue of tasks".
       | 
       | I find it interesting that the solution to, in their own words,
       | "One of my life's traumas" is to add another issue tracking tool.
       | 
       | Are we trying to fix the right problem?
        
       | mytailorisrich wrote:
       | In general tickets describe change requests, and they are
       | sometimes referred to as such (CRs): Someone wants the
       | software/system to change in some way.
       | 
       | A ticket type makes sense because bugs and new features are not
       | the same and we should care about the difference. A bug is a
       | defect in the implementation of a feature that should be fixed. A
       | good practice is to fix defects before adding new features, as
       | far as possible. A defect is discovered on a specific software
       | version so it then makes sense to indicate that. Even with
       | continuous delivery it is useful to know exactly what build
       | exhibited the issue. Having explicit information on whether a
       | ticket is a defect or a new features is also helpful for QA (as
       | is severity): I need to keep track of the number of defects found
       | in order to somehow measure the quality of my software and of my
       | testing and to improve it.
       | 
       | Assigning a priority makes sense because it helps setting the
       | ticket's position in a queue (which can be called TODO list).
       | 
       | Severity is not the same as priority. Severity is the impact of a
       | defect. A defect that causes the application to crash and delete
       | all data is very severe. A typo is likely not a severe defect.
       | Again that helps in assigning a priority and thus how to insert
       | the ticket in the TODO list.
       | 
       | The position in the TODO list is not an input it is an output of
       | the task that consists in analysing and managing the pending
       | tickets.
       | 
       | You could say that a dev is a worker task that picks the next
       | ticket in the TODO list in a loop, while a (project) manager
       | manages the tickets and insert them in the TODO list.
        
         | Almad wrote:
         | This analytical approach is exactly what I disagree with.
         | 
         | > A good practice is to fix defects before adding new features,
         | as far as possible
         | 
         | This is the approach I describe as "bug is a proxy for
         | priority", where you are essentially saying it's "highest". It
         | is a good approach in theory, but just ignores business
         | realities.
         | 
         | It also means people will try to disguise feature requests as
         | bugs in order to get a priority.
         | 
         | > Assigning a priority makes sense because it helps setting the
         | ticket's position in a queue
         | 
         | Except if it's numerical, then over time, you can safely ignore
         | everything that's not P1 and you have few dozens/hundreds of
         | unprioritized tickets.
         | 
         | > Severity is not the same as priority.
         | 
         | I know. Why is it important to make the distinction though?
         | 
         | > The position in the TODO list is not an input it is an output
         | of the task that consists in analysing and managing the pending
         | tickets.
         | 
         | Agreed.
         | 
         | > You could say that a dev is a worker task that picks the next
         | ticket in the TODO list in a loop, while a (project) manager
         | manages the tickets and insert them in the TODO list.
         | 
         | Well, if dev is a factory worker turning inbound tickets into
         | outbound features, yeah, cool, this works.
         | 
         | I am yet to see this in practice. Team (or at least team lead)
         | is taking active role in the managing cycle and this is exactly
         | what renders a lot of your points at least duplicit.
         | 
         | (But you have a lot of good points about assumptions about team
         | organization that should be mentioned)
        
           | mytailorisrich wrote:
           | This analytical approach is the reality of managing tickets
           | taking technical and business realities into account.
           | 
           | A bug is not a proxy for priority. As said it is a parameter
           | that helps defining a priority and, in fine, the position in
           | the TODO list. Whether priority is "high", or P1, or whatever
           | is exactly the same. Usually there no need for too many
           | levels because, as you suggest, it mostly boils down to
           | "now", "afterwards", "whenever", and that changes over time
           | (hence Agile ideas).
           | 
           | BTW, I have never seen someone disguising a feature request
           | as a bug. That is totally unrealistic not least because
           | obviously this is continuously scrutinised and someone doing
           | that would be called out and ultimately fired for shear
           | incompetence (or worse) and because features go through a
           | definition process, it's not someone who suddenly dreams one
           | up and sneakily hide it in a bug report to have it
           | implemented without anyone noticing (what?!)
           | 
           | The distinction between severity and priority is important.
           | Severity is assigned by the person who reports a defect. It
           | is a measure of how serious the impact of the defect is, as
           | said. Priority cannot be set at that point, as it is a
           | judgement made later based on further considerations.
           | 
           | Devs really are as I described in teams that have matured and
           | are organised (but maybe not in "messier" startups). A team
           | lead is not a dev, 'lead' implies a managerial aspect.
           | 
           | Lastly, of course you need to keep track of the number of
           | defects (which can be from customers feedback and production
           | metrics) and of their severity. This is basic QA, you have to
           | know if you are effectively doing a good job in order to
           | improve both your internal processes and the quality of your
           | product.
           | 
           | For example, if I start to see too many critical defects on a
           | component/team I know we have a problem there. If I start to
           | see too many critical defects found after the product has
           | shipped I know we have a big problem.
        
             | Almad wrote:
             | I'd agree with you if I would be only seeing the teams
             | through my management reports and not from the trenches.
             | 
             | I am envious of the environment where you never saw
             | somebody trying to bug feature request as a bug. I do think
             | in a lot of cases, it's a judgement call...or a habit where
             | problems perceived as bugs by customers are swung under the
             | carpet as features as bug is only defined as "deviation
             | from requirements".
             | 
             | Fair on distinction of severity by customer vs priority by
             | team, although I am used to make a distinction between
             | support ticket by customer and issue in engineering team's
             | queue.
             | 
             | Lead implies either managerial or technological leadership
             | and especially in mature organisations, I've seen both.
             | 
             | My experience with management by bug statistics is...very
             | inconsistent as it motivates people to game the
             | system...and boy I've seen that a lot. I do agree trend
             | knowledge helps, but I am not sure it's worth the side-
             | effects and work.
             | 
             | Of course, a flavor of this depends on context (and scale).
             | It is very different if you have a single-instance SaaS,
             | distributed system or images shipped to air-gapped systems.
        
               | mytailorisrich wrote:
               | > _I am envious of the environment where you never saw
               | somebody trying to bug feature request as a bug._
               | 
               | Really, I have never seen that in 20 years.
               | 
               | Of course that is different from another team or the test
               | team raising a bug because they expected something that
               | was not in the spec. Then you tell them that it's not
               | because it does not behave the way they want that it is a
               | bug. But, yes, a defect (more general term than bug) is
               | any deviation from requirements.
               | 
               | Direct input from customers is different as well. Unless
               | there is a contractual impact, if a customer is adamant
               | something is a bug when it technically isn't then there
               | is no point arguing. You can treat the request however
               | you want internally.
        
           | yiyus wrote:
           | > It also means people will try to disguise feature requests
           | as bugs in order to get a priority.
           | 
           | If my car breaks and cannot start, that's a bug. If I want to
           | add a radio to my car, that is an extra feature. The
           | difference exists, and it is important. You are saying this
           | difference should be ignored because someone may try to pass
           | the desire for a radio as a broken car. At that point, you
           | could just ignore any issue because it may be a lie.
           | 
           | And the reason to categorize is not only to prioritize. For
           | example, we have these rules: bugs require of a test case,
           | and the test must pass to consider close the bug. On the
           | other hand, new features are implemented first in a different
           | tree, and the new feature needs to be documented (also in the
           | tutorial). Moreover, we may have meetings to decide if we add
           | a feature or not (for example, different new features may not
           | work well together or may require extensive refactoring that
           | we do not want to do), while a bug must be fixed.
           | 
           | In your workflow, this distinction may not be important.
           | That's perfectly possible. But, in my opinion, claiming that
           | "we collectively shouldn't care" is going to far (unless "we
           | collectively" means something more specific than it looks to
           | me).
        
           | emmelaich wrote:
           | It is a fantastic article Almad, thanks!
           | 
           | About the only thing I might add is dependencies. But even
           | that is mostly value for management reporting and time
           | estimation. It doesn't help the workers do their jobs that
           | much.
        
             | Almad wrote:
             | Thanks!
             | 
             | Yeah, this is something worth a separate article (this one
             | felt long already): ticket systems as reporting tools.
        
         | Almad wrote:
         | > I need to keep track of the number of defects found in order
         | to somehow measure the quality of my software and of my testing
         | and to improve it.
         | 
         | I would love if you could expand on that. Do you really need
         | it? Is this more important than production metrics or customer
         | feedback?
        
       | kazinator wrote:
       | The Software Version field should be used to identify the commit
       | when the bug was introduced (perhaps the very first commit that
       | introduced the entire thing in which the bug is found or perhaps
       | a regressing commit). The way it's typically used is not helpful:
       | namely that the user who reports the bug just fills in the
       | version they happen to be running when it happened.
       | 
       | There should be an Introduced-in Version and Fixed-in Version.
        
         | taftster wrote:
         | These fields aren't required for a good ticket system to work.
         | They might be useful in terms of post-mortems, generating
         | changelogs, etc. But fundamentally, the "version" that a issue
         | was resolved in is not a requirement of the ticket tracking
         | system. Some continuously deployed software doesn't really ever
         | have a version number at all.
        
       | taftster wrote:
       | Great quote from TFA:
       | 
       |  _> Once you start assigning priorities from a list, anything
       | else than "Highest" is a passive-aggressive way of saying "No"._
       | 
       | What can be gamed will be gamed. Once you start applying the
       | equation "feature = good & defect = bad" or assigning arbitrary
       | priorities "high, really high, now, yesterday", you are in effect
       | providing opportunity to game the system.
       | 
       | Story points have this quality. More points are good, less points
       | are bad. Let the games begin.
       | 
       | The value of a ticket / work-item comes strictly from the changes
       | made to the underlying system. The "diff" effectively. The labels
       | and types that we assign to work-items don't actually add any
       | real value to the system.
        
       | gilbetron wrote:
       | > The toolset that completes the version control log to form the
       | development equivalent of double-entry bookkeeping.
       | 
       | This made me wish for a "git commit --future" that lets you just
       | track future things to work on within git itself. "git stash" is
       | kinda connected into this concept as well, branches too if used
       | as development caches. It gets a bit wonky with multiple repos,
       | as well as non-code related tasks, but then we have a single
       | location for tickets, and a UI could be created to connect with
       | other teams.
        
       | dboreham wrote:
       | For me none of the SaaS bug tracking systems are usable. They're
       | all much worse than c. 1996 Bugzilla.
        
         | berkes wrote:
         | The only system that I appreciate is taiga. It's extremely
         | opinionated and quite un-configurable.
         | 
         | What I like about it, is that it enforces workflows (either
         | scrum, kanban or simply one-large-backlog) The Way They Were
         | meant. So it solves a lot of bikeshedding and solves me & my
         | team from trying to invent "something that works for us".
         | 
         | The idea proposed by OP works quite well there too, with
         | kanban. Just pick the card at top, and never have more than one
         | card per working person in "active" at any time.
        
           | emmelaich wrote:
           | A quick web search gives me taiga.io, taiga.pm.
           | 
           | What's the diff if any?
        
           | Almad wrote:
           | Oh cool, didn't knew about it and it looks like it may be the
           | sweet spot.
        
       | gitgud wrote:
       | Github issues works pretty well for almost all software projects.
       | A single list of issues viewable/searchable by the whole team,
       | simple commenting, code referencing, tagging, assigning to
       | people.
       | 
       | We tried Jira but became tangled in a mess of complex
       | configuration and endless confusing UI's...
        
         | karatestomp wrote:
         | You only need something more complex or heavy than GH issues
         | (if even that complex) if you've got someone bugging you for
         | burndown charts and metrics and shit just _all the time_ , or
         | someone in the chain who just _loves_ poking around and
         | dragging shit from here to there ( "oh goody I'm going to drag
         | this into 'on ice', best day ever!"). The dragging action I
         | don't bring up accidentally--it's very important, for some
         | reason.
        
         | Almad wrote:
         | The main problem I had with them is inability to sort them in a
         | list, which is somewhat solvable with GH Projects now.
        
           | randomdata wrote:
           | For most projects, sorting leads to prioritizing, which is an
           | anti-pattern. For those who choose to eschew proper software
           | development practices, it is nice that Projects is its own
           | thing.
        
             | aflag wrote:
             | I don't think that prioritizing in general is an anti-
             | pattern. You will do things before other things and you
             | need to choose what to do first. The criticism in the
             | article was about bad prioritization. With GH Projects you
             | can have the liberty to queue issues however you may see
             | fit.
        
               | randomdata wrote:
               | The anti-pattern is premeditating priority. It is true
               | that you have to consider all angles and ultimately
               | determine where to start, but once you've done that it
               | makes no difference where an issue lies in a list.
        
       | rurban wrote:
       | There is a huge difference between a TODO and a FIXME.
       | 
       | A FIXME cannot be in master, but TODO's all the time.
        
       | uxamanda wrote:
       | Nice, this highlights a lot of issues I've seen with teams and
       | crazy bug systems.
       | 
       | One difference I had from the article is that I actually find
       | marking tickets with priority and types (like bug / enhancement
       | etc) useful, but for a different audience.
       | 
       | When I'm working on planning / strategy, aka in Product Manager
       | mode, I like to be able to review what is still remaining in
       | different buckets and adjust priority and do scenario planning.
       | Maybe it's worth closing a whole bunch of low priority bugs
       | before moving on. Often the priority changes over time and gets
       | adjusted as we see what came in. Having a place to track that
       | info on the ticket keeps me from moving to doing planning in a
       | spreadsheet.
       | 
       | When I'm in developer mode, I agree - I don't want to have to
       | think about what the priority of a critical feature improvement
       | is vs a low priority bug. I want to pick off the top of the stack
       | and flow with confidence.
       | 
       | I often am working in both roles on team projects and use this
       | technique even when working alone.
       | 
       | In my experience where things get weird is when the product
       | planning metadata is required to be understood in real-time by
       | all roles on the team. You can keep all that metadata around and
       | still have a single prioritized backlog.
       | 
       | Maybe Jira could be improved by showing different metadata for
       | different modes... but even writing that out sounds like a new
       | configuration nightmare!
        
       | adrianmsmith wrote:
       | > there should be an algorithm that everybody should agree on. An
       | example may be:
       | 
       | > - If there is downtime, it's the top priority of everyone
       | affected
       | 
       | > - If there is an incident, it's the top priority for an on-call
       | agent
       | 
       | > ...
       | 
       | Very much agree about this.
       | 
       | The trouble with "high priority" and "low priority" etc. is that
       | different people perceive different things as having different
       | urgency and importance. As long as you have >1 person entering
       | tasks, each using their own algorithm to assign priority, a "sort
       | by priority" (the only point in having a "priority" field at all
       | as far as I can see) becomes completely useless.
       | 
       | If you use names like "downtime" or "incident" then, as the
       | author writes, everyone can agree. That's the important thing I
       | think. Then a "sort by priority" can yield something meaningful.
       | 
       | Plus there's the fact that when you have pages of "highest
       | priority" tickets, managers just create all new tickets at that
       | level, "otherwise they won't get seen and done" (true story)
       | 
       | This way of working annoyed me so much I wrote a blog post about
       | it: https://www.databasesandlife.com/priorities/
        
         | mytailorisrich wrote:
         | "Downtime" as a consequence of an issue is 'severity', not
         | 'priority'. But yes there needs to be a clear and consistent
         | definition of what the different levels of severity mean. This
         | is usually the case because people will quickly notice that it
         | quickly gets messy if everyone makes up their own.
         | 
         | But, as I mention in another comment, severity does not
         | directly map to priority. Something like severity x frequency
         | (classic measurement of risk) is already getting close, but
         | ultimately it is often a judgement call based on other business
         | considerations as well.
        
           | JamesSwift wrote:
           | I think you misunderstood his point. He is saying that in his
           | system severity == priority. His article he linked lists out
           | explicitly his buckets.
           | 
           | Within a given severity I think its then a judgement call of
           | a product owner to rack-and-stack the issues in priority
           | order, exactly how it would be done for traditional 'P1' -
           | 'P5' grading.
        
           | adrianmsmith wrote:
           | I must confess I've never really understood the need for
           | "severity" in a task tracking system.
           | 
           | As far as I can see, consumers of tickets need to know what
           | order to do stuff in, and producers and organizers and
           | curators of tickets need to set what order things should be
           | done in. That's "priority" or "urgency".
           | 
           | I do understand in a theoretical sense that "Prod system is
           | down" might not _always_ be the absolute highest priority
           | thing to work on. If a particular issue causes a downtime of
           | 1 second every 10 years, it 's still downtime, but might not
           | be the most urgent thing to work on.
           | 
           | But that's a theoretical example. In my 20 years of software
           | development and managing projects, if the Prod system is
           | down, it's an emergency, and that's what you need to be
           | working on. So "Prod is down" is a useful priority/urgency.
           | At least that's been my experience so far...
           | 
           | What am I missing? Are there times when priority and severity
           | are useful as two separate fields?
        
             | mytailorisrich wrote:
             | Priority vs severity is an all time classic.
             | 
             | "Severity" is a measure of how serious the impact of a
             | defect is (Using the term "impact" instead of "severity"
             | can make things clearer). It does not say anything about
             | the priority that should be assigned to fixing it, though
             | it is obviously often correlated.
             | 
             | Severity is an absolute metric, priority is a relative
             | metric.
             | 
             | In general the person who creates a defect ticket sets its
             | severity based on what has been observed. The priority is
             | set later by project management.
             | 
             | > _If a particular issue causes a downtime of 1 second
             | every 10 years, it 's still downtime, but might not be the
             | most urgent thing to work on._
             | 
             | Exactly. There may be a _severe_ issue but because it
             | happens so rarely it is probably not urgent to fix and thus
             | may be assigned a low _priority_.
             | 
             | Of course if the issue "prod is down" is both severe and
             | urgent to solve. But after investigation you may find the
             | root cause and determine that it is costly to resolve while
             | occurring only very rarely and thus that root cause issue
             | may be low _priority_ though it is still high _severity_.
             | 
             | The difference really is useful in practice where the
             | effort and cost of solving issues may not be trivial (large
             | systems and systems involving hardware for example). I have
             | seem severe bugs that were tracked down to ASICs deployed
             | in the field, so very expensive to fix, and for which the
             | fix was deferred to the next product version because it was
             | determined that the issue was rare enough that customers
             | could live with it until then.
        
       | wbeckler wrote:
       | It sounds to me like you're describing Pivotal Tracker
       | (https://www.pivotaltracker.com/). It forces story ordering
       | (rather than "prioritization"), it's pretty barebones, and it's
       | fast.
        
         | jpswade wrote:
         | Both Jira and Trello allow ordering, how does this differ?
        
       | hyperpape wrote:
       | One missing thing: maximize the number of things that can safely
       | avoid going through the bug tracker, because the tracker
       | represents overhead and (even more importantly) latency.
       | 
       | Does that marketing website typo fix need to go through the
       | development team and require a ticket? There are reasons it
       | might, but fixes will never really be fast enough if it does.
       | 
       | Or worse, what if a developer has to ask someone to create a task
       | and add it to the board to add documentation to a method? Then
       | either no will ever document anything, or they'll sneak those
       | changes into other tasks, slowing down code review and feature
       | development.
       | 
       | One way you can create those pathologies is to have auditors, and
       | promise the that "all code changes follow a process" and soon
       | you're signing forms in triplicate to make any kind of change
       | whatsoever.
        
       | nicbou wrote:
       | This sums up why I like Kanban.
       | 
       | The TODO column is an ordered list of things to do. The job of
       | the developer is to pick tasks from the top and move them towards
       | the right. The task of management is to keep the TODO column
       | sorted, and prevent tickets from being stuck in any other column.
       | 
       | The task of management is aided by limits on how many items each
       | column contains. Those limits are based on how many things people
       | can realistically do at once.
        
         | junon wrote:
         | I disagree. Who is sorting those tickets? Are they sorted
         | arbitrarily or were the technicals considered? Is the ticket at
         | the top feasible given the current state of the
         | codebase/product?
         | 
         | In theory this would work, but it has the pre-requisite that
         | whomever is managing tickets understands technology - which, in
         | my 10 years in the field, has been quite rare.
        
           | nicbou wrote:
           | They are sorted according to the project roadmap, usually by
           | a person who understands business requirements, and a person
           | who understands reality.
           | 
           | In my experience, it's usually done in a weekly meeting that
           | involves a small subset of the team. We don't need to
           | estimate tasks. We only need to know their logical order
           | (dependencies) and priority (requirements). We don't need the
           | whole team present for that.
           | 
           | If the requirements or reality change during the week, there
           | is no cost to reordering the todo column. It doesn't change
           | how much gets done, just in which order it gets done.
        
           | Almad wrote:
           | In my experience, the final sorting needs to be done by a
           | collaboration between ticket manager and someone-who-
           | understands-technology anyway. If the ticket manager doesn't
           | have a clue, they can't make judgement calls necessary as for
           | nontrivial software, it can be hard to say if this is one day
           | or one year of work.
           | 
           | And that affects prioritization a lot.
        
             | nicbou wrote:
             | That would be me. My job is to clarify requirements, gather
             | assets and prepare tasks so that tickets spend less time in
             | progress.
             | 
             | This involves adding a triage column before the todo
             | column. This column is for tickets that are necessary, but
             | not prioritised or ready to work on.
        
       | berkes wrote:
       | I appreciate how clearly it is written down. It is how I would
       | like to work and have tried at numerous jobs.
       | 
       | I do find that reality is hard, though. There's always that
       | moment when you don't feel like picking "the one at the top".
       | Maybe because you have time for "a quicky" maybe because after
       | spending a week on Foo, you now want some Bar?
       | 
       | What this also does not solve is the "panic shifting". When a
       | business goes into panic mode (deadlines, rough patch, downtime,
       | chaos) you'll often see that tickets get moved from underneath
       | you _while working at them_.
       | 
       | - Holdit, I'm done 80% with that SuperImportantEmergencyBugfix.
       | Can I not finish and deploy it? - No, there now is a
       | SuperEvenMoreImportantEmergencyBugfix that has to be fixed two
       | hours ago.
       | 
       | No ticket system will fix that, but anything that helps with
       | those moments is very helpfull, I guess.
        
         | nicbou wrote:
         | In my experience, it worked better with Kanban.
         | 
         | The "top ticket first" approach forced us to improve knowledge
         | sharing in the team. In practice, you can pick the second
         | topmost ticket if it doesn't affect the schedule. You're a
         | grown up.
         | 
         | The tickets you work on should not be based on your feelings,
         | but on actual priority. In practice, if you feel like it won't
         | affect the schedule, go for it. You're a grown up.
         | 
         | In my experience, panic shifting is more manageable with
         | Kanban. Tickets aren't given arbitrary deadlines, so shifting
         | them around doesn't change the order of work, but not the
         | intensity of work. Bringing one ticket up pushes every other
         | ticket down. Nothing gets squeezed into the sprint.
         | 
         | As for interruptions, it's a matter of urgency. Usually, Kanban
         | dictates what you do next, not right now. There's also a limit
         | on how many tickets you can have in progress. In practice, it's
         | up to you to decide if a task is urgent enough to interrupt
         | your work. You're a grown up.
        
         | wpietri wrote:
         | > There's always that moment when you don't feel like picking
         | "the one at the top".
         | 
         | A few solutions for this that have worked for me:
         | 
         | * Small units of work
         | 
         | * Having a tech-debt backlog broken into short lumps of
         | cleanup, so you can "take a break" with something different
         | 
         | * Pair programming with frequent pair rotation. The next ticket
         | is always taken by the next open pair, but you can work one
         | something different every few hours if you need.
         | 
         | * trade tasks with a colleague
         | 
         | * sighing, saying, "well, this is my job," and picking the top
         | thing anyhow
        
         | ehnto wrote:
         | Priorities changing is one of the more frustrating parts of
         | doing client work. Business priorities can change for so many
         | different reasons, and you just have to learn to let go. I've
         | seen entire product lines disappear the week a singular person
         | leaves the company. Product in boxes, ready to ship, no longer
         | needed.
         | 
         | If you are in an environment like this though, try to do very
         | atomic commits as you go. Often you can salvage some work for
         | the betterment of the platform even if the whole feature is not
         | needed. Maybe you did some refactoring, if that's in a neatly
         | organised commit you can just cherry pick it right out of
         | there.
        
         | Etheryte wrote:
         | I think an important consideration is important for whom. If
         | the only reason something is important is because of an
         | arbitrary management deadline, the right response is to stand
         | your ground and calmly finish working on what you already
         | picked up. While I understand it's easier said than done, if
         | you don't stand your ground, it won't get better. The polar
         | opposite of this is when I personally broke something and it's
         | stopping others from doing their work. In that case, the right
         | response is to drop what I was or wanted to be working on and
         | fix the issue.
         | 
         | An extra case of all of the above is planning work around big
         | releases and the like. Regardless of how solid your CI pipeline
         | is, if there's a bigger change set released, it's good to have
         | someone who's designated on call. They're free to work on their
         | stuff if they please, but their main priority for that whole
         | day is the delivery. If anything is fishy, they're the guy who
         | picks it up first.
         | 
         | None of the above happens without good communication. To get to
         | good procedures you need to take the time, discuss with your
         | team, and agree on what your plan of operation is. Make sure
         | it's clearly communicated both inwards and outwards. If anyone
         | internal or external comes to you with a fire, you can point
         | them to your plan. It may be urgent to them, but that doesn't
         | mean it overrides your team's agreements.
         | 
         | With all of the above in place, the scenario you described
         | changes considerably: instead of asking whether you can finish
         | your task, you will instead inform the other side that you're
         | going to finish your task, and if it fits your plan, then deal
         | with their problem. At the end of the day, it's a matter of
         | mutual respect -- it doesn't matter what the org hierarchy is,
         | they're asking you for help, they can't demand it.
        
           | TheRealPomax wrote:
           | As an employee of the person telling you to drop your current
           | work and go work on something else, it literally doesn't
           | matter "for whom", you do it because you want to stay
           | employed rather than doing "what's right" and getting fired
           | over it. Standing your ground if you don't have solid
           | seniority first is about as ridiculous advice as a parent
           | telling their 7yo to "just tell them to stop" when they're
           | getting bullied. You don't have ground to stand on, and even
           | if your input is right, and well reasoned, it can't come
           | _from you_ because your voice has no weight.
           | 
           | By all means, try to change the system, but telling others
           | they should too is advice from an extremely privileged
           | position.
        
             | Etheryte wrote:
             | I sincerely disagree. Taking the extreme case you described
             | as either do it or be fired, the other party wants a
             | result, a task done or something similar, which still won't
             | be done if they would fire you on the spot. It seems you
             | misread my reasoning as blindly standing your ground which
             | is not the case I was making. If there is a good reason to
             | switch what you're working on, you should, as I also said
             | above. But if there isn't one, you should either ask until
             | you get a good reason or stand your ground.
             | 
             | The argument from privilege frankly confuses me. I've
             | applied the same principles both when I've been the
             | underdog and the one asking others and it's good guidance
             | since it also gives you input whether you want to work
             | where you currently are. Sometimes I've had harder times
             | because of it, but I've never stayed in an abusive work
             | relationship.
        
               | cerberusss wrote:
               | I remember when I had ~3 years of working experience. We
               | were on the tail end of a fixed price/fixed date
               | contract. There was a bug that needed to be fixed, and it
               | was in a module that everybody had worked on, and the
               | code was pretty bad.
               | 
               | So during the meeting, I said: that bug is just a
               | sympthom, the module needs to be rewritten. And I knew
               | what I was talking about.
               | 
               | No, said a senior, we're just going to fix the bug, no
               | rewriting. I said that's your call, but I sure am not
               | going to fix that bug. I can tell you: nobody listened to
               | me.
               | 
               | So he more or less finished the discussion and said: I'm
               | going to sit down with you, and we're going to fix that
               | bug. And we did.
               | 
               | At that point it was the right call.
        
               | Etheryte wrote:
               | In that case there clearly is a good reason though? In
               | the scenario described, you have one known bug, in the
               | case of a rewrite you have an unknown number of bugs.
               | Surely, both approaches may have more unnoticed bugs in
               | them but in the former case people have already tested
               | the solution so that's less likely. When you rewrite, you
               | enter new untested territory with more room for new bugs.
        
               | TheRealPomax wrote:
               | Every junior and intermediate dev would like a word with
               | that concept, because it sounds magical. Once you have a
               | few years at an org under your belt, you have the creds
               | to pipe up, but until then, you either talk with the
               | better devs in private and hopefully convince them, or
               | you do what your boss told you to do.
        
             | WrtCdEvrydy wrote:
             | I will usually drop a small comment saying 'deprioritized
             | due to OTHER_TICKET_NAME' and mark the ticket as Done.
        
             | eska wrote:
             | Yeah, the best you can do at that point is to meticulously
             | document your work. You don't want to look unproductive and
             | get fired just because you're constantly stopped from
             | releasing your work. And in the case that you do get fired,
             | you will want to give your lawyer some ammunition in the
             | form of work logs outside of the ticket system, which you
             | will be barred from.
        
             | nix23 wrote:
             | First i do what my boss says, when i did that and we both
             | have a little time to talk, i explain to him why i was
             | thinking the other stuff was more important, often he has a
             | good point from a complete different perspective than i
             | have, sometimes i 'win' from my 'technical' perspective,
             | after some time passes you learn to read each other and
             | decision's are made without questions, for me its super
             | important to know each others and the base where decision's
             | are made.
        
         | crdrost wrote:
         | There's a great manufacturing-management book that regrettably
         | speaks to a manufacturing context and not a project context and
         | therefore applying it literally to our software projects would
         | be a fallacy, called "The Goal"--and then the rederivation of
         | the same principles for project management is in a follow-up
         | book called "Critical Chain." They are both weird in that they
         | are textbooks written as novels and therefore you do have to
         | roll your eyes a little bit, of _course_ when the beleaguered
         | manager follows the smart scientist's advice his company
         | succeeds and his marriage gets better, sigh. And why is it a
         | he, both times? But if you pay the cost of these eye rolls you
         | get some joyous moments.
         | 
         | For instance, your "panic mode" is discussed in The Goal (as
         | "factories that seem to have three priority levels: Hot, Red
         | Hot, and Do It NOW!!!") and the emergence of those panic modes
         | is actually diagnosed as a failure of those first principles.
         | If you had managed differently, you would have been aware of
         | your spare capacity, and this panic mode instead becomes a
         | business problem of some sort--either you are not getting
         | enough biz value out of your "SuperImportantEmergencyBugfix"
         | project to justify continued investment of developer time or
         | you are not getting enough biz value out of the
         | EvenMoreImportant project or else you are getting enough
         | business value out of both that it is time to expand your dev
         | team so that your bottom line can get better sooner. But rather
         | the panic is usually because the two projects are not
         | profitable either way, and the company was willing to take a
         | loss to build them up to profitability, but now revenues have
         | gotten unexpectedly tighter and people are trying to
         | fallaciously optimize on cost rather than marginal profit.
        
           | jrs235 wrote:
           | I need to reread The Goal again.
           | 
           | "people are trying to fallaciously optimize on cost rather
           | than marginal profit."
           | 
           | Pure truth.
           | 
           | Another great book is The Principles of Product Development
           | Flow: Second Generation Lean Product Development
        
           | twic wrote:
           | The Phoenix Project is a software instance of one of these
           | textbooks-as-novels:
           | 
           | https://itrevolution.com/book/the-phoenix-project/
           | 
           | https://itrevolution.com/wp-
           | content/uploads/files/PhoenixPro...
           | 
           | And Commitment is about software projects, and is a graphic
           | novel (with a female protagonist!):
           | 
           | https://hennyportman.wordpress.com/2016/05/29/review-
           | commitm...
           | 
           | I'm also reminded a bit of Simon Wardley's dialogues with X;
           | these are just a roundabout way of him expressing his
           | thoughts, but because they're structured as a debate, i think
           | he gives himself a bit of unearned authority when he runs
           | rings around his imaginary opponent:
           | 
           | https://twitter.com/swardley/status/1082647878349324288
        
             | lazyant wrote:
             | The Phoenix Project has several main characters but
             | arguably the main one is also a woman, as well as other
             | characters (meaning not only one).
        
         | thombat wrote:
         | Our company became determined to control such panic-driven
         | prioritisation, and had four simple levels of importance, P4 up
         | to P1, a predictable conveyor belt delivering work.
         | 
         | Equally predictable was the later addition of P0. Followed
         | inevitably by P-1. Sadly the company was bought out before we
         | learnt whether the underlying datatype was a signed short or a
         | long...
        
           | VBprogrammer wrote:
           | That is so familiar that I seriously wondered if we had
           | crossed paths at a previous job. The only difference being
           | our priority was the other way around P4 being the highest.
           | 
           | Basically all tickets would naturally migrate to P4.
           | Eventually when someone started working on 'the wrong thing'
           | another level was added.
           | 
           | In my current job we use Jira and the backlog has things at
           | the bottom which have been just added, things at the top
           | which we thought were priorities at some point and a whole
           | bunch of crap in the middle which is unordered.
           | 
           | I keep thinking about some kind of system where people would
           | rate the priority of one ticket against each other rather
           | than against an arbitrary scale.
        
             | jschwartzi wrote:
             | That's the whole point of that backlog. The order should
             | reflect the priority of everything relative to everything
             | else. You drag stuff up above other stuff that is lower
             | priority and part of everyone's job is to groom that list
             | so it reflects reality.
        
               | VBprogrammer wrote:
               | While that may be true in theory in practice it is
               | difficult. A big improvement would be if new things
               | needed to be inserted into the backlog at an appropriate
               | place but I don't know if it's possible to do that in
               | Jira.
        
               | mumblemumble wrote:
               | This, I think, is exactly why everyone I know who is
               | happy with their backlog management does it in an Excel
               | spreadsheet or Google Sheets.
               | 
               | I'm fine with ticketing systems for handling immediate
               | work in progress. Which, incidentally, is what they're
               | meant to be used for. Every time I've ever seen people
               | try to juggle business priorities and long-term goals in
               | a ticketing system, though, the end result has always
               | struck me as being something of a failed experiment to
               | develop a product that works well as both an ice cream
               | topping and an engine lubricant.
        
             | travisjungroth wrote:
             | That ticket comparison idea is awesome. You could have it
             | for one person, or do it democratically.
             | 
             | I bet there'd be circular comparisons (A>B>C>A) a
             | surprising amount of the time. Not a huge deal, you could
             | just show the pairings back again in a different order
             | until they resolve.
        
           | mytailorisrich wrote:
           | This does not mean that having priority is not useful, this
           | just means that they did it badly.
           | 
           | Everything is prioritisation. I'd say that prioritisation is
           | one for the key skill of people leading organisations.
           | 
           | People who can't do it will fail whatever tools they use.
        
           | vincentmarle wrote:
           | This works well in theory, until managers urge you to treat
           | every task as "P-0" and you suddenly need to prioritize
           | within the P-0's (we would jokingly use negative numbers
           | instead).
        
           | ehnto wrote:
           | I've seen good success with having an entirely different
           | pipeline for rushed/rapid/panic tickets. The rapid pipeline
           | reduces some of the ticket and procedural bureaucracy of the
           | normal pipeline, and only lasts a sprint. That obviously
           | comes with risk, so putting something in the rapid pipeline
           | needs to be weighed properly.
           | 
           | The somewhat untold benefit of this system, is it makes the
           | product manager or client decide between "I want to control
           | this ticket" and "This needs to be done as fast as possible".
           | That seems to naturally filter out tickets that are only
           | superfluously high priority.
        
             | dataduck wrote:
             | This seems interesting but I'm having trouble visualising
             | it. Would you care to elaborate?
        
               | ehnto wrote:
               | Sure!
               | 
               | A standard ticket pipeline might look like this: Backlog
               | > Review/Estimate > In Progress > Internal Review >
               | Testing > Client Review > Feedback > Testing > Release
               | 
               | But the rapid pipeline will be more like: Create Ticket >
               | In Progress > Testing > Release
               | 
               | This leaves the ball almost entirely in the developers
               | court, and removes any step that requires waiting for
               | feedback from the client or even the Project Manager.
               | 
               | So you can see the risk factors pretty quickly, with no
               | review steps what if the developer gets it wrong? So that
               | leaves the Project Manager some important questions: Is
               | this ticket concise enough to be rapid? No room for back
               | and forth discussions or muddy details. Is this ticket
               | small enough to be rapid? Can't be a big new feature
               | that's just being framed as urgent but could
               | realistically wait. Can I trust the developer to get this
               | right with no review? If you can't, then it's probably
               | best it goes through the standard pipeline with the
               | review steps anyway.
               | 
               | In big enough teams it can help manage workload, you can
               | leave a specific developer intentionally under-utilized
               | so that they have space for rapid tickets. During their
               | under-utilized time they can be open for
               | mentorship/learning/pair-programming until a rapid ticket
               | pops up.
        
         | medius wrote:
         | To tackle this, I highly recommend the percentile technique
         | from MIT paper, "A Structured Approach to Strategic Decisions".
         | [1]
         | 
         | If you are judging any dimension, say priority, then assigning
         | percentile rating to a task (i.e where does this given task
         | stand relative to all the others) can be quite helpful to
         | overcome the "SuperEvenMoreImportantEmergencyBugfix" cases.
         | This is what the article is also suggesting.
         | 
         | And if you end up assigning 90% percentile to more than 50% of
         | the tasks, you know your judgement is wrong, and it can be
         | corrected accordingly. And it can also be standardized much
         | better across the organization. Everyone can now judge their
         | own judgements.
         | 
         | Rating on multiple dimensions with low correlations important
         | for your company, say signup rate, retention, security, etc.
         | and adding them up is a good way to not miss something
         | important. It's not important to assign weights. Equal weights
         | is fine [2]
         | 
         | I'm finding this technique quite useful in deciding what to
         | work on next with fewer doubts about their priority. I failed
         | to make Trello work for this and use a spreadsheet.
         | 
         | [1] A Structured Approach to Strategic Decisions -
         | https://omegaleadership.com/media/Structured_Approach_to_Str...
         | 
         | [2] The robust beauty of improper linear models in decision
         | making. -
         | https://pdfs.semanticscholar.org/8793/408a67fd4c32bd7b5483d3...
        
         | zelphirkalt wrote:
         | Time for a quicky is always good to have. When I don't however,
         | I usually take that "annoying" task and see, whether I can
         | divide into sub tasks. Divide and conquer often helps. If that
         | does not work, I make a list of steps, which I need to take to
         | accomplish whatever the task is about.
        
         | Almad wrote:
         | In my experience, the relative queue _is_ helping with that
         | since you can be explicit. If SEMIEB is really more important
         | than SIEB, it's fair to switch--but it should be done as a
         | relative comparison / override. I mostly saw people pushing
         | SEMIEB without being aware what they are pushing down.
         | 
         | Although I would agree that if you have to reshift on hourly
         | basis, this sounds more like oncall than normal dev work :)
         | 
         | Agreed on "on the top" not always being viable / feeling like
         | it, but it helps when you go top-to-bottom consciously as
         | opposed to randomly.
        
         | [deleted]
        
         | wpietri wrote:
         | The panic shifting thing is real, and for me way too many
         | companies operate in permanent panic. I'm fine with responding
         | to actual crises. But so much "urgent" work is really just
         | managerial failure. Fake deadlines used to "motivate" people.
         | Broken processes that people work around. Executives urgently
         | need to look like they're doing something. Easily solvable
         | problems festering until they become crises. Managers rushing
         | to score points, or to cover up for earlier neglect.
         | 
         | If everything is urgent, nothing is urgent. Even in an early-
         | state startup, where urgency abounds, it's possible to work
         | with a measured pace and clear focus. I've done it!
         | https://williampietri.com/writing/2015/the-big-board/
         | 
         | The fact that larger, more stable companies fail to create
         | order is not because it's impossible. It's because the people
         | with power either don't care or have interests that actually
         | work against getting things done quickly and reliably.
        
           | mumblemumble wrote:
           | > people with power either don't care or have interests that
           | actually work against getting things done quickly and
           | reliably.
           | 
           | This is what I have seen, time and time again. Decision
           | makers don't work for their employer, they work for their
           | compensation package. It's amazing what one can rationalize
           | when one thinks it might positively impact some number that's
           | mechanically tied to one's bonus.
           | 
           | I've also seen it arise as a simple "too many cooks in the
           | kitchen" situation. Ironically, the one thing from Scrum that
           | I like without reservation is also the first one to get
           | thrown out the window: the idea that _exactly_ one person
           | gets to decide the development team 's priorities. Because if
           | you allow _n_ people to collaboratively allocate a scarce
           | resource, they will allocate it to _n_ * 100%, every single
           | time.
        
             | wpietri wrote:
             | Agreed. Although it's possible to get people to
             | collaboratively agree on priorities. I've had a lot of
             | success with putting stakeholders together at at table,
             | making them write down what they want on cards, and then
             | saying, "Ok, put them in strict linear order of delivery."
             | It helps to give them a bunch of cards with "RELEASE"
             | written boldly on them.
             | 
             | I once did this with 25 people representing a dozen
             | different nonprofits, and I've done it many times at both
             | startups and large companies, so I know it can work. Every
             | time, people try to put things side by side. But if I
             | gently say, "strict linear order" enough times, everybody
             | gets it. And then they start discussing, negotiating,
             | planning.
             | 
             | Another approach, one that works if your teams are
             | established enough that you can give good engineering
             | estimates, was what Rob Fan at Sharethrough used for
             | quarterly planning:
             | https://www.slideshare.net/rfan622/launch-scale-
             | presentation
             | 
             | Basically, they gave out poker chips that represented the
             | available engineering capacity for the quarter. And then
             | had everybody discuss and persuade until they arrived at a
             | quarterly plan.
             | 
             | As you say, the trick is to have some way to make sure
             | people don't overallocate, which they dearly love to do.
             | With that in place, stakeholders stop fighting with
             | engineering and instead wrestle with one another, letting
             | engineers quietly get on with popping things off the
             | backlog and shipping them.
        
       | [deleted]
        
       | stickfigure wrote:
       | This describes Pivotal Tracker almost exactly. You can go into it
       | cold turkey, but to get the best use out of it, it helps to be
       | familiar with the Pivotal software development process.
       | 
       | The important thing to realize is that pivotal tracker is not a
       | "bug tracker" in the traditional sense - a giant database where
       | issues go to be forgotten until someone clears them out in batch
       | three years later. In the Pivotal process there is a product
       | manager whose primary responsibility is curating the backlog.
       | There are no priorities, just position in the backlog. The PM
       | should know what's in there, that's their job - they don't write
       | code.
       | 
       | Engineers just grab stories off the top of the backlog.
        
       | code-faster wrote:
       | The central point that work trackers track work is true important
       | and jira astronauts need to be stopped, but the piece misses the
       | bureaucratic purpose of jira: work legibility.
       | 
       | Work tracking isn't just about figuring out what work needs to
       | get done, it's about helping management get a picture for the
       | state of work.
       | 
       | Developers and other line workers don't care about obsolete vs
       | won't do. But management does. They want to know if they're being
       | requested for work that will be rendered useless in a few weeks.
       | They want to know if too much work isn't getting done because
       | work is floating up to the CEO and it's not worth his time.
       | 
       | There's a terrible principal agent problem here where management,
       | the principal, decides how to track work, and can put the heavy
       | lifting of filling in values onto the developers. This happens
       | when management's more worried about losing their job than
       | improving their team's output.
        
         | karatestomp wrote:
         | > There's a terrible principal agent problem here where
         | management, the principal, decides how to track work, and can
         | put the heavy lifting of filling in values onto the developers.
         | This happens when management's more worried about losing their
         | job than improving their team's output.
         | 
         | I no longer believe a single tool is good for both a team
         | tracking & communicating amongst themselves about the work
         | they're doing, and communicating the same to and among
         | management. Trying to make them both the same thing is a great
         | way to come up with something that's terrible for one or the
         | other of those uses (usually the former).
        
         | Almad wrote:
         | I do completely agree. In fact, when people asked me for JIRA,
         | I've always said I am happy to do it since it's a software
         | designed for me, the CTO.
         | 
         | Yet I refuse to do it to them, the ICs.
        
         | twic wrote:
         | There may be a similar legibility point about severity levels.
         | Some boss somewhere has to put the set of tasks in priority
         | order for the development team, and once it's in that order,
         | severity levels are useless for the developers. But they might
         | be useful as a way for the person submitting the issue to
         | communicate something to the boss who does the ordering.
         | 
         | Say there's a billing system. One of the accounts receivable
         | clerks notices that due dates aren't properly adjusted for
         | public holidays. As a developer, do you know how big a deal
         | that is? Probably not. Doesn't sound like a big deal. But maybe
         | it means we're imposing penalty charges on customers where we
         | shouldn't be, and that's a huge legal and reputational risk. Or
         | maybe it really isn't a big deal! The boss will need to have a
         | conversation with the clerk to learn all this, but maybe having
         | a severity field is an ice-breaker for that conversation.
        
           | ydlr wrote:
           | Why not have the clerk assign the severity? Why can't the
           | programmer and clerk discuss the problem themselves if there
           | is uncertainty?
           | 
           | The only problems in your scenario arise from the
           | introduction of a boss as go-between.
        
             | twic wrote:
             | I am proposing that the clerk should assign the severity.
             | 
             | You could have the programmers do the prioritisation, if
             | they had the business understanding to do that. In that
             | case, they're also the boss. The severity assigned by the
             | clerk could still be a useful starting point.
        
       | drewcoo wrote:
       | But if they're not called bugs, there is no blame game. And extra
       | pressure can't be put on developers to . . . to shape up! Sense
       | of urgency and all that.
        
       | zakallen wrote:
       | I feel the same way about Asana and Jira. They're so customizable
       | and cater to too many people that it requires management to be
       | someone's full time job. And I haven't found someone who is
       | passionately in support of such as service as you might find with
       | say Notion.
       | 
       | I've been working on a project that is attacking this problem but
       | from the TODO comments angle. https://cosmolabs.io
        
         | karatestomp wrote:
         | Working in Jira and (especially) Asana always feels like
         | working on a VNC share of the person in charge's cluttered
         | desktop-covered-in-folders organizational system. Everything's
         | hard to find and I'm afraid to touch anything for fear I'll
         | accidentally drag something somewhere then not be able to find
         | it again to put it back.
         | 
         | Except it's that plus 1.5GB of memory use and a few tens of a %
         | of a processor core.
         | 
         | [EDIT] and I've found that to be true when working for people
         | so good at using the software that they made popular training
         | videos for it, not just morons who don't know how they work.
        
           | rightbyte wrote:
           | Sometime I wish that my project was managed in a folder with
           | neatly arranged subfolders all in ASCII text. Specs in the
           | specs-folder. Release lists in the release list folder.
           | 
           | Bugs in the bugs folder, with a text file for "reported",
           | "active" and "fixed" bugs sorted by release version folders.
           | 
           | I honestly would want to try it. Files and folders are the
           | abstraction that was supposed to replace physical folders
           | with files, but in practice files stored in
           | computers/network/mail are just a bunch of papers randomly
           | put everywhere. How about using folders as they were supposed
           | to ...
        
         | nicbou wrote:
         | It's my full time job, and I agree. However keeping Jira in
         | line with reality helps me catch inconsistencies in
         | requirements and plans.
        
       | hinkley wrote:
       | > When people scream "this is a bug", it is irrelevant what it is
       | caused by.
       | 
       | When people say things like this I often wonder if they worked
       | with a more consistent caliber of people than I have.
       | 
       | There are most definitely bugs, and figuring out that most of
       | them come from a couple of people is critically important to
       | saving the project in the long run.
       | 
       | Knowing that you have 5 bugs and I have 7 is, I will agree, not
       | important. But knowing that Steve has 50? Is really fucking
       | important.
        
         | rconti wrote:
         | Would people otherwise be aware that Steve has an order of
         | magnitude more bugs than anyone else?
        
       | seph-reed wrote:
       | Something this article completely overlooks is coder mental
       | health. Working on bugs constantly is the equivalent of being a
       | code janitor. Getting to own/run a new feature from time to time
       | can re-invigorate your interest.
       | 
       | The suggestion I put out at an old company (which was shot down)
       | was the idea of owning features. If all the bugs for features you
       | own are resolved, pull a new feature. You now own the bugs for
       | it.
       | 
       | It gets difficult when a feature is too big for one person, or
       | too important for that developers bugs to be a blocker.
        
       | juangacovas wrote:
       | So there are no debuggers, just untodoers...
        
       | scottporad wrote:
       | This idea is very clever:
       | 
       | "then 'upkeep' and 'new' should be the ticket types"
        
         | bogdanoff_2 wrote:
         | These can lead to discussions similar to "it's a feature, not a
         | bug."
         | 
         | Is "Make app work on device X" or "Add cornercase Y" new or
         | upkeep?
        
       | ken wrote:
       | > When people scream "this is a bug", it is irrelevant what it is
       | caused by. It is a scream of a significant expectation mismatch.
       | The team should work on resolving it, regardless of whether it
       | was caused by a developer diverging from the designed intent or
       | because of the original intent going wrong.
       | 
       | As a user, it's extremely relevant to me. I paid for your
       | product/service because of what it claimed to do. Bugs are ways
       | in which it doesn't do that. (It doesn't matter to me if some
       | other hypothetical features don't exist yet, because I was happy
       | to pay for the product/service knowing it didn't have those
       | features.) As far as I'm concerned, a bug is your company not
       | holding up your end of the bargain, even though I've held up my
       | end by paying for it. That's not a good look.
       | 
       | Another way to look at it is that a bug is downtime for a
       | feature. Elsewhere, you say (system) downtime should be #1, "top
       | priority of everyone" until it's fixed. But what good is the
       | system being 'up' if it's still broken in the way that I need?
       | When I lose power at home, it's no consolation to hear "The power
       | grid as a whole is still up -- it's just your neighborhood that's
       | not working", nor would I consider this reasonable justification
       | for de-prioritizing fixing it.
       | 
       | Maybe your company is at the stage where attracting new users
       | with features is more important than keeping existing customers
       | with quality. But they say it's always easier to keep customers
       | than it is to acquire new ones, and I've blackballed several
       | companies because they no longer place the priority on quality
       | that they once did. You should be aware of what you're giving up
       | by de-prioritizing 'bugs', or pretending they don't exist. I see
       | comments here on HN every day complaining about specific
       | companies whose software quality suffers. It takes years to dig
       | yourself out of that hole.
        
         | patrickyeon wrote:
         | That's what the author is saying though. The classification of
         | "bug vs. feature" is irrelevant to the user, and trying to
         | convince someone to call it something other than a bug to make
         | the developer feel better is missing the point. What matters is
         | something isn't working for the user, and should be made to
         | work.
        
       | david_draco wrote:
       | > One way to recover is to automatically close tickets after a
       | certain period of time. This may be a subtle way of saying "no",
       | but I think it has its place, especially if we are talking about
       | public trackers.
       | 
       | Ugh, RedHat bugzilla trauma is coming back to me. Report issue ->
       | 12 months nothing -> bug closed because new RedHat linux version
       | was released. Repeat.
        
       | z3t4 wrote:
       | Dont use todos or tickets or issue trackers! It takes too little
       | effort to write a todo/ticket item. Your engineers will spend
       | time doing work that are unnecesary and they will spend hundreds
       | of hours implementing shitty ideas that only took 10s to come up
       | with. Instead write down a project plan, write down the vision of
       | the product. Write down what your goals are, and what you stand
       | for.
        
         | taftster wrote:
         | Um yeah. I mean, I appreciate your ideals. But back down here
         | in the real world, part of that "project plan" is the part
         | about taking a bite off the elephant. You've got to start
         | somewhere. Defining and tracking the progress you've made
         | eating the elephant allows you to know when you've fully
         | consumed it.
         | 
         | And remember, most (all?) software projects are not defined in
         | a singularity. They evolve. As users use the product, the
         | understanding of what you built changes. There is no ability to
         | define a project of any significant size in a box the first
         | time. We aren't pulling rabbits from a hat.
        
           | randomdata wrote:
           | > Defining and tracking the progress you've made eating the
           | elephant allows you to know when you've fully consumed it.
           | 
           | You can also simply keep track by keeping tabs on the work
           | you are doing, which also leads to a better product as you're
           | familiar with what the product does rather than simply
           | knowing that X, Y, and Z issues are closed.
           | 
           | Non-technical stakeholders will not be able to follow it that
           | way, having their focus on other important parts of the
           | business, but that's why you have project managers who can
           | follow what the technical side is doing and provide the
           | necessary non-technical communication to them.
           | 
           | Ultimately, you're both right. There is just some conflation
           | going on. What is useful for some segments of an organization
           | does not make it useful for everyone.
        
             | [deleted]
        
       | 5cott0 wrote:
       | There Are No Margins, Just TODOs
        
       | BaitBlock wrote:
       | Web readermmode:
       | https://baitblock.app/read/https://almad.blog/essays/no-bugs...
        
       | arunc wrote:
       | The website theme is nostalgic. Does anyone know of jekyll theme
       | that generates such simple website?
        
         | lostinroutine wrote:
         | There is no CSS on the page. I have a feeling your comment was
         | facetious though, hinting at the amount of bloat (e.g. Jekyll
         | theme) we need today to do the simplest things.
        
         | Scottopherson wrote:
         | It's your browser's default styling. Only CSS I see is:
         | article {hyphens: auto;}
        
       | barbegal wrote:
       | > There is one good argument in its favor [closing tickets that
       | are too old]: the software continuously changes and hence old
       | issues may be invalid. In order to put them into a sprint, they
       | need to be checked--in some cases, that's actually more work than
       | the issue itself.
       | 
       | I agree this is sometimes true, those difficult to reproduce
       | tickets often mysteriously disappear when you make other changes.
       | But there are lots of times when a lot of work has gone into
       | creating the ticket so there is actually not much left to do to
       | fix the issue. In this case closing tickets that get too old
       | would be very counter-productive.
        
         | jayd16 wrote:
         | If an issue is getting added to or starred or commented on then
         | its not old.
        
         | agloeregrets wrote:
         | For a pretty crazy take on this, take. A look at BaseCamp's
         | "Shape Up" philosophy, They do not have a backlog. Period. To
         | them, they work a little slower and expect to give enough time
         | to a task to ensure zero bugs instead but then have cycles of
         | bug-fix focus. Additionally, something I found interesting is
         | that every dev is expected to understand the complete stack,
         | that way any dev can fix any corner. Sure this might not work
         | in a larger company without strong levels of splitting up the
         | product, but It's an enjoyable thing to look at.
        
         | kazinator wrote:
         | A bug should identify where it was introduced. If a bug was
         | introduced in version 0.5, then version 0.5 forever has that
         | bug, and so the issues is forever valid in that sense, as a
         | truthful comment about a historic thing. If the current version
         | is 1.2, and it has not been confirmed to have fixed the bug,
         | the view should be taken that the bug still exists in 1.2. Bugs
         | don't just become invalid; if we are justified in calling a bug
         | invalid now, that can only be because it was never valid in the
         | first place.
         | 
         | Suppose that someone tries to check, but the bug doesn't
         | reproduce in 1.2. However, it was never root-caused. All we
         | have is a description of the behavior that was happening in
         | 0.5.
         | 
         | Now what? Do you just close that bug to get the open bug count
         | down?
         | 
         | Probably an "unsolved mysteries" or "cold cases" category would
         | be more appropriate for it rather than lumping it with
         | genuinely closed bugs: those that were traced to a root-cause
         | and confirmed.
         | 
         | In cases when you're sure that the bug was due to some software
         | that was entirely rewritten such that the same bug cannot
         | plausibly be in the rewritten version, or some software that
         | was removed entirely, then there is justification in closing
         | that.
        
       | wintorez wrote:
       | The small amount of padding in that page was a bit disturbing.
        
       | groby_b wrote:
       | With the small caveat that this is scale dependent. I can assure
       | you that there absolutely are projects that require components.
       | (If you prefer a different model, you can assign a different bug
       | tracker for each component - but that makes collective metrics
       | harder)
       | 
       | I agree that ultimately (and quickly) the bug needs to land with
       | a single person, but the component matters in the routing step
       | before that. Because you'll have frontline triage who can only
       | vaguely figure out where the bug goes, second-line triage might
       | get the team right, and then the team needs to decide where it
       | goes.
       | 
       | Yes, that's a lot of overhead. Unless you have 1000+ people
       | working on your software, you won't need it. Up to ~100 people,
       | you can probably assign fairly directly, depending on the range
       | of problems the code base spans.
       | 
       | Similarly, there are reasons why you don't want to do task
       | breakdowns for everything in the bug tracker. Global refactorings
       | are a good candidate to skip that, because you _will_ do that
       | across teams, piece by piece, and tracking them in a bug tracker
       | is not necessary. We got spreadsheets for that ;)
       | 
       | Same goes for priority - sometimes you _do_ need it. That zero-
       | day you 're fixing is a "drop everything else" bug. And really,
       | the "flow" is just nine different priorities. (God, let me never
       | work on something that has nine different priorities ;)
       | 
       | So, "season to taste". But there are definitely lots of good
       | ideas in there. If there was just ONE I could enforce across all
       | projects I ever work on, it'd be "Close the damn bugs if you're
       | not going to work on it" - issue hygiene is incredibly important.
        
       | IshKebab wrote:
       | > One way to recover is to automatically close tickets after a
       | certain period of time.
       | 
       | Just be thoughtful about how you do this otherwise it can easily
       | come across like "we don't really care about your issue".
       | 
       | Google has had two rounds of auto-closing old Android bugs and
       | their message is really bad. Something like "Our product team is
       | prioritising other things.".
       | 
       | Similarly Github's stale bot is way over used. One project I
       | submitted a bug to closed it because there was no activity for
       | only a month.
       | 
       | If you must close old bugs automatically, word it nicely, and
       | don't close it instantly and ask people to reopen it. Something
       | like this is best:
       | 
       | > We're trying to clean up our bug tracker. This bug is older
       | than 5 years and has had no activity for 2 years. Is this still
       | an issue?
       | 
       | Compare with Google's message:
       | 
       | > Thank you for your feedback. We have tried our best to address
       | the issue reported [they hadn't], however our product team has
       | shifted work priority which doesn't include this issue [what does
       | that even mean?]. For now, we will be closing the issue as "Won't
       | Fix (Obsolete)" [great, thanks]. If this issue still currently
       | exists, we request that you log a new issue along with the latest
       | bug report here: https://goo.gl/TbMiIO and reference this bug for
       | context.
        
         | junon wrote:
         | Agreed. Github's Stale Bot is the most infuriating, aggravating
         | and insulting bot in widespread use. Every time I encounter it,
         | I reevaluate whether or not I even want to contribute to the
         | project.
        
       | neonate wrote:
       | There are no TODOs, just bugs.
        
         | taftster wrote:
         | You've made the same point as the author. The idea that a
         | "ticket" or "work-item" has any sort of label (defect, feature,
         | todo) or priority (high, low, now) doesn't add value. The label
         | you give a work-item is meaningless. The value comes strictly
         | from the change being applied.
        
       | [deleted]
        
       | lifeisstillgood wrote:
       | >>> Every team must have a single ordered queue of tasks.
       | 
       | No. Every _organisation_. All the politics, all the empire
       | building and compromises just to get along are brought into the
       | fore and must be solved to decide if projectX is above or below
       | projectY.
       | 
       | Do that, and we might just believe you are a company worth
       | working for.
        
       | ahungry wrote:
       | Interesting read - to a person working tickets, I think it can be
       | true that there is no useful difference between viewing a task as
       | a bug vs a feature - in either case, its "what needs to change"
       | and performing work to do the change.
       | 
       | However, the big difference to people not handling the ticket
       | (the customer/business + the person(s) who have to deal with bug
       | accountability) - a bug usually represents a failed promise and
       | is quite different from a feature.
       | 
       | If I go to a restaurant and there is a "bug" in my order, I
       | expect it fixed for free, so that in the end I'm getting my
       | original order (with the extra work/time requirement eaten by the
       | side which erred to begin).
       | 
       | If I want to change my order because I don't like the food after
       | all, then that's not a bug, that's a change in
       | requirement/feature request.
       | 
       | Having bucketed priorities (highest/high/medium/low/lowest) is a
       | big failure of Jira / ticketing systems though. They should be a
       | unique set of priorities, with only one single ticket occupying
       | #1 priority, another slightly less one in slot #2 etc.
        
         | taftster wrote:
         | I don't know that I've ever seen a feature that wasn't some
         | sort of "failed promise". The feature sometimes hits and
         | sometimes misses, and is usually somewhere in between. This
         | idea that a defect is a failure of a feature is probably more
         | to do with the inability to predict the future. Sure there are
         | defects like you tried to read from /dev/null, but more
         | realistically the "defects" you see today are more about the
         | inability to predict exactly how a feature is going to be used.
        
         | bberenberg wrote:
         | > Having bucketed priorities (highest/high/medium/low/lowest)
         | is a big failure of Jira / ticketing systems though. They
         | should be a unique set of priorities, with only one single
         | ticket occupying #1 priority, another slightly less one in slot
         | #2 etc.
         | 
         | Jira supports both. The thing you're describing is called Rank
         | and is used on every board and backlog. Our team uses Rank
         | almost exclusively. The bigger thing to understand here is that
         | different people use different "labeling systems". If you
         | ignore software dev and think about note taking, there are a
         | bunch of different systems. Some work better for one group of
         | people, others work better for another group. I think Jira has
         | had a lot of success because it doesn't force people into one
         | system. The downside is that people often configure it to use 3
         | different systems at the same time and they vary team to team
         | and this causes a lot of strife and confusion.
        
           | fredfjohnsen wrote:
           | This is the most logical, sensible comment in the thread.
           | Jira is the most flexible system for workflow management in
           | existence. The fact that it is extensible is "a feature, not
           | a bug."
           | 
           | I don't see really see anyone stating obvious truths about
           | bad developers & software engineers (as shocking as it may be
           | to read on HN that there are, in fact, objectively bad
           | developers & software engineers with high-paying jobs at
           | companies whose names you know.)
           | 
           | - they are more interested in making a new thing instead of
           | fixing a broken thing they released
           | 
           | - they often can't remember how they built the last new thing
           | 
           | - that's because they aren't interested in building &
           | documenting a fully working thing with test code from the
           | start
           | 
           | - they aren't interested in data structures or architecture
           | built to be easily maintained or in making scale part of
           | their designs
           | 
           | - they despise being told to fix bugs because it is much
           | easier to write code than it is to read it
           | 
           | I believe some organizations implement Jira thinking it is
           | going to solve their cultural problems. This is magical
           | thinking.
           | 
           | I am so tired of hearing about how terrible Jira is from
           | developers.
           | 
           | It's usually the case that where Jira isn't working it has to
           | do with the way it's configured (e.g., giving too many people
           | access to set priority, setting too many priorities, setting
           | too many components, using components in illogical ways, no
           | one actively managing & grooming queues...)
           | 
           | To implement Jira successfully probably requires more work &
           | effort to get it right than to not use it at all. The point
           | of it is not to eliminate the work of issue tracking. It is
           | to organize the workflow management of moving incredibly
           | complex information from one person to the next. It's pretty
           | great at this if you know how to use it.
        
         | adrianmsmith wrote:
         | > They should be a unique set of priorities, with only one
         | single ticket occupying #1 priority, another slightly less one
         | in slot #2 etc.
         | 
         | I've heard the ability to drag & drop tasks around in an
         | ordered list (i.e. a task only has priority relative to others,
         | i.e. it's position in the list) as "ordinal priority".
        
         | lifeisstillgood wrote:
         | I love the restaurant analogy - it has great resonance
         | especially if you consider cost of making it right.
         | 
         | If I order a Lasagne and get spaghetti meatballs, i think
         | that's a big and i expect to be fixed.
         | 
         | If I order Lasagne and get Beef Lasagne when Inamna vegetarian
         | then I still think it's a big, but the failure is not
         | immediately in the kitchen - why did the waiter not check, if I
         | am wearing dungarees and a a Tee Shirt saying "Die all meat
         | eaters" should that be a clue?
         | 
         | And what about the kitchen response - we all like the
         | restaurant that apologises and comps the food for free. But we
         | would be a bit surprised if we were told the Beef Lasagane was
         | not going to be refunded and we had to pay again to get the
         | veggie one.
         | 
         | But all those models exist in software.
        
         | gregmac wrote:
         | As a developer, I generally find having a distinction between
         | bugs and features useful.
         | 
         | If I'm going to do a big refactoring of some component, I find
         | it useful to look for related open bugs (even if they're low
         | severity) because sometimes it's low or zero extra effort to
         | fix them at the same time. This only works if you have good
         | quality tickets though (proper tags, alias words, etc), which
         | is a whole different topic.
         | 
         | I think it also reduces cognitive load while looking at tickets
         | to have them categorized that way too. Of nothing else being
         | visually distinct (via icon or something) just makes it easier
         | to process.
         | 
         | Above all though, it's important not to argue about bug vs
         | feature. Ideally any bug can link to the feature ticket that
         | isn't working, but either way it's more important to make
         | things better for the customer, so if that means considering a
         | what is _really_ a feature request a  "bug" because it'll cause
         | a big argument otherwise, then do that.
        
         | protonimitate wrote:
         | Yup - from a implementation perspective, bug vs feature is a
         | artificial designation.
         | 
         | Where I think it _does_ matter, is when a business wants to
         | track metrics like "# of bugs over time" or "# of bugs per
         | feature".
         | 
         | My team recently got a lot of heat about "a rising number of
         | bugs", and the insinuation was that our code quality was poor.
         | Turns out, > 75% of the "bugs" reported were mis-labeled
         | feature requests or lack of knowledge about how a particular
         | feature was designed to work.
        
           | chias wrote:
           | One way the distinction gets used where I work is to have
           | custom / required fields keyed on the ticket type.
           | 
           | Oh, you want to make a bug ticket in my project? In that
           | case, required fields include "steps to reproduce", "expected
           | result", and "actual result". You want to make a feature
           | ticket in my project? In that case, required fields include
           | "rationale" and "acceptance criteria".
        
           | gregmac wrote:
           | Whoever is giving your team heat about bug metrics needs to
           | read about Goodhart's Law.
           | 
           | There's so many ways to influence number of bugs that it's
           | pointless to measure anything that way. For example, do you
           | make a single bug that lists 15 typos spread around, or 15
           | bugs (because after all, each typo is a different word and in
           | a different part of the app). Do you accept vague but
           | obviously real bugs while you try to collect enough info over
           | time, or immediately close them as "cannot reproduce"? Is
           | that a bug, or really a feature request?
        
         | bpyne wrote:
         | I like the analogy. I'm trying to get people in my organization
         | to understand that it's not a bug when a feature works as
         | specified in the app requirements. Either the requirement
         | wasn't specified well or a change of circumstances requires it
         | to work differently. In either case, it's a request for
         | modification not a bug. Your analogy should help me explain the
         | difference.
        
           | tuwtuwtuwtuw wrote:
           | > I'm trying to get people in my organization to understand
           | that it's not a bug when a feature works as specified in the
           | app requirements
           | 
           | Oh no.... You are wasting yours and theirs time. This is such
           | a developer thing to do.
        
             | bpyne wrote:
             | Please see my comment to allanniehuis.
        
           | coelh0 wrote:
           | Don't confuse the waiter with the customer.
           | 
           | If the waiter gets the request wrong from the customer, it's
           | still a bug. Even if the kitchen does exactly what was in the
           | waiter request.
           | 
           | It's a team effort.
        
             | bpyne wrote:
             | Please see my comment to allannienhuis.
        
           | allannienhuis wrote:
           | The user doesn't care whether the bug is in the requirements
           | or if it's in the code. They just know that it's not working
           | for them, and want it changed.
           | 
           | Arguing that it's not a bug seems like saying 'not my
           | problem' to everyone else. I expect different companies have
           | different cultures around assigning blame that might make
           | saying 'not my fault' important, but I'm pretty sure that
           | customers/users don't care one bit about that.
        
             | jiveturkey wrote:
             | there's a -- critical -- feedback loop problem that you're
             | ignoring. sure, you might work on it with the same priority
             | regardless of characterization. but if it's properly
             | classified as an error in specification, that is
             | _extremely_ valuable information for process improvement.
        
             | bpyne wrote:
             | Whether it's a bug or a modification to requirements I'm
             | still the one who works on it. So "not my problem" doesn't
             | exist in my situation. The distinction matters very much
             | when it comes to prioritizing my work. I'm 100% time on
             | projects and jump from one to the next with no pause
             | between. I'm also the only developer who supports the apps
             | I built. Bugs usually jump to the top of the queue.
             | Management puts a lower priority on requests. In order to
             | not hurt my current "customer", I need to make sure past
             | ones don't try gaming the system by declaring bugs when
             | they're not.
        
             | ahungry wrote:
             | Right, to the customer it doesn't matter (just like to the
             | developer it doesn't need to matter either - it just means
             | the work needs to be performed).
             | 
             | However, it matters greatly to other observers - if one
             | person or team is highly out of the norm for rate of bugs,
             | it might be indicative of other problems that need to be
             | worked on (lack of testing, peer review, tasks being
             | assigned beyond the working abilities etc.).
             | 
             | Just like the restaurant analogy - the expectation is that
             | bugs shouldn't be happening to begin with, and when they
             | do, it should be "our fault" to remedy them.
        
         | Almad wrote:
         | I do agree completely on "failed promise" and this is actually
         | why I think the bug vs feature is flawed. I think "failed
         | promise" is a great ticket type though ;)
         | 
         | There are obvious cases where I have nothing against what you
         | say. But to use the analogies, "I thought the food would take
         | differently and I don't like this one" is the more common type
         | and it's the one that's murky to resolve.
         | 
         | The point here is that regardless of the reason, you want to
         | tend to "customer is not happy" case.
        
         | m463 wrote:
         | But you have to acknowledge some features are bugs.
         | 
         | For example, if you have a word processor, having a running
         | word count sounds like a feature.
         | 
         | To a developer it seems frivolous, like having a LOC counter.
         | 
         | But to people who write professionally word count might be the
         | most critical metric of all (like a progress bar for "article
         | is done")
         | 
         | just saying... failed promises
        
       | mrtweetyhack wrote:
       | There is no code, only characters
        
       | evantahler wrote:
       | There's a great tool - pivotal tracker - that acts in the way
       | that the author describes. It's great because it's opinionated.
       | 
       | It also includes pretty good PM tools like burn down charts,
       | predicted velocity, etc.
        
       | cdcarter wrote:
       | I'm going to add to the pile-on that the "Ticket Type" field is a
       | little more useful than the author gives it credit.
       | 
       | > why do you want to have this information and what is it going
       | to be used for?
       | 
       | You might say this is yet another proxy for priority, but it's
       | slightly more nuanced than that. A lot of software companies do
       | not have the experience of continuously deploying the main code
       | branch. I work on a SaaS solution that's gained traction in
       | highly regulated industries.
       | 
       | It's very useful to be able to identify (trends in!) bugs that
       | could be described as a "regression" or breakage in behaviors
       | that customers are known to rely on. This isn't the example of
       | "Customers" from your post though, ultimately how the change gets
       | prioritized and released is what they care about! This is about
       | being able to identify and systemically manage change in high
       | risk areas.
        
         | taftster wrote:
         | Most if not all software is shipped with known defects. So
         | clearly, the fact that a "bug" can be identified doesn't give
         | any weight when describing when it needs to be fixed.
         | 
         | A missing feature can be just as onerous to a user as a defect.
         | Understanding if an issue gets in the way of productivity is
         | all that matters, regardless if it's described as a bug or a
         | feature.
         | 
         | Tracking metrics against bug vs. feature is a surefire way for
         | a system to be gamed. If there are consequences in
         | finding/reporting defects, then all work-items will eventually
         | be labeled as "features". Or if you reward finding bugs, then
         | all work-items will gravitate towards "defects". It's up to you
         | how you want to play this game.
        
       | hackbinary wrote:
       | Almost certainly what you can fix and release in an hour has
       | higher priority than something that is going to take a month, for
       | example.
       | 
       | I have had quite a bit of success in having the technical teams
       | assess the length of time a fix or a feature takes to do, but
       | letting the stakeholders determine the relative priority.
       | 
       | I have seen requests and suggestions go from completely critical
       | when requested, but when estimated at a couple of work then
       | broken down into multiple much easier and clearer tasks when the
       | stakeholders are included in the prioritisation discussion.
       | 
       | My experience is that stakeholders much prefer having things
       | turned around quickly and they will what they can to optimise for
       | things that are quickly and easily deliverable.
        
       | marcus_holmes wrote:
       | Upvoted for calling out "management by Jira". I hate that.
        
       | arnklint wrote:
       | On point in so many ways... There is simply no way of
       | decentralize prioritization. Thanks Almad, for sharing valuable
       | insight/realization with the rest of us.
        
         | Almad wrote:
         | Happy to, glad you like it
        
       ___________________________________________________________________
       (page generated 2020-06-05 23:00 UTC)