TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

The sad graph of software death

106 点作者 sandal超过 9 年前

19 条评论

zwischenzug超过 9 年前
I was once put in exactly this position. Our IT Manager was fired and I was put in charge of about a dozen sysadmin and helpdesk people. They had over 130 open tickets and claimed to be too busy to do anything. Bear in mind I knew little about infrastructure (I was an applications dev and tech lead who had become a 3rd line application support leader).<p>I spent a month doing triage, and sorting out their process (they were doing triage, but gave it to a relatively weak member of staff who couldn&#x27;t spot patterns or kill off tickets effectively). The number came down to 30, and the team was far more focussed. I also got to see who was helping and who wasn&#x27;t, and sacked another member of staff who bullied less knowledgeable members of the team (while doing literally nothing but spreading FUD).<p>The point (obvious to anyone who&#x27;s read The Goal, which I hadat that point) is that the graph doesn&#x27;t tell you jack about what&#x27;s going on. You have to go and look. The incoming tickets pipe was the first place to go because it&#x27;s the simplest firehose to plug. That gave people space to get off the ticket treadmill and work on longer term tech debt.
评论 #10829096 未加载
评论 #10827801 未加载
csytan超过 9 年前
I see this pattern all the time on GitHub. A promising project starts to catch a lot of stars. Issues start piling up, and the developer no longer looks forward to working on the project because of they have a boatload of issues to deal with first.<p>An issue is much like an email. Closing an issue requires communicating with (sometimes unreasonable) people. Furthermore, when issues start piling up, critical issues are hidden alongside less important ones making it even more difficult to prioritize.<p>One way of dealing with things is to maintain inbox zero. Take action right away - delegate, archive or save for a later date. This won&#x27;t work forever though as your project&#x27;s userbase grows.<p>Two high quality libraries with benevolent dictators handle issues very differently:<p>Peewee (coleifer): <a href="https:&#x2F;&#x2F;github.com&#x2F;coleifer&#x2F;peewee&#x2F;issues" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;coleifer&#x2F;peewee&#x2F;issues</a><p>Tornado (bdarnell): <a href="https:&#x2F;&#x2F;github.com&#x2F;tornadoweb&#x2F;tornado&#x2F;issues" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tornadoweb&#x2F;tornado&#x2F;issues</a>
win_ini超过 9 年前
Please just declare &quot;Backlog Bankruptcy&quot;.<p>Start a new project in JIRA or whatever. Get rid of the encumbrances of the history of all the accumulated bugs (including some that list mundane &quot;misspellings&quot; of &quot;neighbour&quot;).<p>You mentioned triage. Triage takes place at different levels. Clear the table and focus on the items that will really move your business and the project. The issues that were previously removed - will re-surface if they are relevant to your current customers.<p>Before you do that, ask - &quot;what IS most important for our business in the next 3&#x2F;6 months that we can impact with our limited resources&quot;<p>However, I suspect that if your chart looks that nasty, you&#x27;d have a hard time convincing people to do that. In the end, parts of your team could probably now be put to work since they aren&#x27;t just managing stories in JIRA that will never be completed anymore.<p>Can&#x27;t wait for the followup post.
评论 #10829802 未加载
评论 #10829777 未加载
评论 #10829758 未加载
vessenes超过 9 年前
You can&#x27;t tell too much from this graph, like you say in your essay sandal -- this could be the sign of a vibrant bit of software that&#x27;s got exponential growth in users and subexponential growth in issues (nice!)<p>An issue tracker will never replace a great product manager; the most important thing is to make sure the team is working on the most important things.<p>If urgent (actually urgent, e.g. critical fixes) things are taking all the time from the important things, then you have more work to do; maybe in prioritization, maybe in staffing, maybe in architecture.<p>Anyway, if you have this graph, and as you say, everything is on fire, then I would, if I were put in charge of this project:<p>1) Spend at least a half day skimming&#x2F;reading all open tickets, and seeing what tickets each developer is closing<p>2) Meet with the team to see how they&#x27;re prioritizing work<p>3) If the team has good intuitions about choosing their work, I would decide on the most important task, make sure it&#x27;s on post-it notes around the office and on every monitor and tell the team: choose your issues, but make sure they always are absolutely the most effective and efficient way to push forward what&#x27;s on the post-it note. Once that item was done, we&#x27;d pick a new one.<p>If the team has bad intuitions on choosing work, I&#x27;d probably take over task assignment until I trained &#x2F; found at least one senior dev who could do some of that work.<p>If all the bugs are critical errors, e.g. not feature requests, but problems with the code quality, well you have another project in front of you, and one that most likely involves some staffing changes.<p>I&#x27;m looking forward to your review of what you did, and how it went!
williamstein超过 9 年前
This is silly. Why is having an ever-increasing number of open items bad? As long as you have a way to prioritize them, it is only beneficial to have a large list of issues. Those issues <i>exist</i> in some abstract sense whether or not you acknowledge them in an issue tracker.
评论 #10829527 未加载
评论 #10827538 未加载
sandal超过 9 年前
I wrote this essay.<p>I linked the Reddit thread because there are some good thoughts there, but I&#x27;d also love to hear what HN has to say!<p><a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;programming&#x2F;comments&#x2F;3z1pfp&#x2F;the_sad_graph_of_software_death&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;programming&#x2F;comments&#x2F;3z1pfp&#x2F;the_sad...</a>
评论 #10827447 未加载
评论 #10828214 未加载
评论 #10827340 未加载
codingdave超过 9 年前
The missing piece of information here is that while the quantity of items may be increasing, it is likely that the severity of those items is decreasing. The truly urgent major issues get identified and fixed early in an app&#x27;s life.<p>But to answer the question, once you get to the point that you have a large backlog of minor items, you stop treating them all as equal, and instead start looking for categories of items that can lead you to architectural and functional updates to the system that will both resolve a chunk of the backlog at the same time as carrying your product forward in larger leaps.
评论 #10828385 未加载
quizotic超过 9 年前
I would give the same kind of advice that financial advisors give for getting out of credit card debt: &quot;find the card with the highest interest rate, make minimum payments on all other cards, and pay as much as possible on the highest interest rate debt until it is paid off... then recurse&quot;<p>To make the analogy work the backlog needs to get rated on how much each open issue costs the company. Most organizations use some stratified measure of &quot;severity&quot;. Few actually try to put a price on a problem, but I think it&#x27;s worth the effort to try.
评论 #10829614 未加载
shalmanese超过 9 年前
The core problem is that &quot;number of issues&quot; is not a meaningful metric, &quot;rate at which business value created&quot; is.<p>At it&#x27;s core, I believe an issue tracker is fundamentally the wrong pattern for developing software and the same pathologies crop up over and over again.<p>Issue trackers seek to accomplish multiple goals: They are communication mechanism between departments, they&#x27;re a way of tracking the state of progress, they&#x27;re a means of prioritization and they&#x27;re a way of evaluating progress. Because these goals lie fundamentally in tension with each other, the same problems predictably occur with long time use of an issue tracker.<p>Issue trackers are like shopping lists without price tags. if you imagine an Amazon Wishlist with all the things you want to buy in life, it&#x27;s not hard to imagine the same graph appearing. Somewhere mixed into all those items is a ferrari and also the washer you need to stop your tap from leaking. And, of course, the list is going to get exponentially longer as time goes on, even as you check items off. But the reason we don&#x27;t get stressed about our ever expanding wants list is because price serves as an intuitive gut check over priority and, as long as we see our personal living standards improve, we don&#x27;t care that we can never fulfil all our wants and we don&#x27;t bother applying &quot;won&#x27;t buy&quot; or &quot;item does not exist in real life&quot; tags on our list. (this is an analogy, ok. Please don&#x27;t try and fight the hypothetical on this, I&#x27;m aware our economic wants are significantly more complicated than that).<p>One of the ideas I&#x27;ve been tinkering with is to treat issue tracking less like a todo list and more like a storefront. A todo list with ever increasing entries is stressful experience, a storefront with expanding inventory is not. Items would have a base cost associated with it and a &quot;shipping cost&quot; so that 2 day shipping costs more than USPS ground (aka: Whenever we can get to it). External clients get to create items on the storefront, set the price and the shipping costs using some kind of artificial currency and engineering gets to figure out which orders to fulfil and in what order to maximize revenue.<p>Of course, to paraphrase jwz, &quot;You have a problem and you think &quot;Oh, I know, I&#x27;ll solve it with an artificial currency&quot;. Now you have two problems&quot;.<p>Still, I think it&#x27;s worthwhile getting back to the foundations and think of what an issue tracker does in the context of software development and whether there&#x27;s a better thing that could serve the same purpose.
评论 #10829805 未加载
评论 #10829598 未加载
e28eta超过 9 年前
On this topic, I like Joel Spolsky&#x27;s essay about Software Inventory: <a href="http:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;items&#x2F;2012&#x2F;07&#x2F;09.html" rel="nofollow">http:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;items&#x2F;2012&#x2F;07&#x2F;09.html</a><p>He provides some suggestions on improvements.
henrik_w超过 9 年前
About what to work on (said about no estimates, but works equally in the face of a mounting backlog) from Kent Beck on Twitter:<p>&quot;Alternative to estimates: do the most important thing until either it ships or it is no longer the most important thing&quot;
elwell超过 9 年前
&gt; Or in the &quot;packrat project manager&quot; scenario, there may be tons of low priority nice-to-have tickets that have been sitting around for months or years, even though everyone knows they&#x27;ll never be worked on any time soon. If this is the case, the graph is still &quot;sad&quot;, but it&#x27;s not a death spiral... it&#x27;s just a sign of a wasteful and broken issue tracking process.<p>What&#x27;s wrong with keeping a few hundred &quot;low priority&quot; issues in your tracker as long as they are labeled properly?
评论 #10828454 未加载
评论 #10828508 未加载
such_a_casual超过 9 年前
My reflex, give management and teams a way to put a deadline on important code issues as soon as they are known. Management would need to support and enforce these deadlines in order for them to mean anything.<p>If there is significant mental baggage with the old system for dealing with code issues, throw it out and replace it from scratch (not literally, but aesthetically in the minds of everyone from managers to interns so that they may escape the frustration and lack of faith they had with the previous system).
highCs超过 9 年前
At my own surprise, I now often blame the developer (the team and me) and not the business, in such a situation. There is 2 reasons:<p>1. You can develop 10x faster than what you think. Learn functional programming and more importantly, learn to code bottom-up. Even if you do object-oriented code, that will do.<p>2. As a developer, you must take the initiative and drive <i>aggressively</i> the projects. They must listen to you, not you listen to them. Literally put your job at stake, often. If you do so and if you got results (see point 1), you gonna gain respect very quickly, then take the initiative and become unstoppable. But, before thinking about that, you need point 1.<p>You are the code pro, if things goes wrong about code, you are the one to blame. The spiral is you thinking you are the victim. You must understand than software must serve the business, not the opposite. Finally, nobody told software development was easy.<p>EDIT: I should say something here: I&#x27;m talking from experience. This is what I do, and I can testify it works. Also, it&#x27;s not supposed to solve the problem, it&#x27;s supposed to prevent the problem to happen.
评论 #10828629 未加载
评论 #10828467 未加载
评论 #10829239 未加载
评论 #10828484 未加载
shadeless超过 9 年前
That graph perfectly describes my personal TODO lists: they grow and grow, until I switch to another app&#x2F;website&#x2F;notebook, then the cycle repeats. This way only the most urgent and some of the important tasks get done.<p>The solution for me seems to be to say No to more things.
评论 #10828399 未加载
nickzoic超过 9 年前
What I&#x27;m a bit puzzled by here is that if I&#x27;m reading the X-axis right the rot sets in at 3 weeks ... I mean, that&#x27;s not very far in. It seems odd that the graphs are both otherwise so linear.<p>I just EOLed a project which started 8 years ago ... at least one bug existed for 7.5 years of that. It was a minor UI bug and just bumped along at Priority Low with no-one really minding it until the company got acquired and the project got merged into another one. There were others as well.<p>My point is: without splitting the &quot;backlog&quot; by priority it is hard to see if this is really &quot;software death&quot; or just &quot;bug fossilization&quot; ...<p>Maybe I should draw my own graph.
评论 #10830641 未加载
sandal超过 9 年前
Here&#x27;s the followup essay, for those interested: <a href="http:&#x2F;&#x2F;tinyletter.com&#x2F;programming-beyond-practices&#x2F;letters&#x2F;beginning-to-climb-out-of-the-software-death-spiral" rel="nofollow">http:&#x2F;&#x2F;tinyletter.com&#x2F;programming-beyond-practices&#x2F;letters&#x2F;b...</a>
marshray超过 9 年前
The graph axis appear to start at 0 issues (x) and extend for 3.5 months (y).<p>The whole graph is so consistently linear and contrary to my experience I feel the data is suspect.<p>I don&#x27;t know how to interpret this, other than the team lost half it&#x27;s developers in early April, or the same team became very consistently half as productive at that time.
评论 #10829183 未加载
PostThisTooFast超过 9 年前
The graph&#x27;s axes aren&#x27;t labeled. Therefore it isn&#x27;t informative.
评论 #10828602 未加载