Live data from Hacker News

Responding to “Are bugs and slow delivery ok?”

uselessdevblog.wordpress.com

61–70 of 128 posts

Re: Responding to “Are bugs and slow delivery ok?”

#61

This does seem like a bit of a fishing article, but I'll bite. I've personally been involved in 2-3 software projects where the immediate ramifications related to software quality and delivery led to project failure. The idea that bad (or no) architecture and terrible code won't have business impacts is just wrong. Perhaps he was lucky, perhaps we have collective survivorship bias, but I strongly disagree on the main…

I think there's a few things at play when people talk about "software quality".

Some people hear it and think it means highly-structured abstraction towers vs low-structure imperative-heavy code. Some think about horrible spaghetti with 16 levels of indentation and 1-letter variable names (moving on to 2-letter once you exhaust the first 26) and if-statements whose predicates span twelve lines. Some people think about feature completeness and bugginess (or, rather, lack thereof).

I think they're dangerous over different time horizons and you can't just prioritize over all time horizons.

Spaghetti is dangerous in the short-term - it makes small changes difficult and unsafe. You'll end up tied by your own shoestrings and not even finish the project. Luckily if this is the only problem, it's also the easiest to clean up. (But it's not usually the only problem).

Less-structured code is good for when you don't understand your requirements well. (Which you typically never will a-priori, even if you think you do). It's easier to add more layers of abstraction than it is to change or remove them. If you prematurely build an abstraction tower, you will suddenly find yourself having to plumb information up and down the entire tower as the abstractions prove to leak or not be completely perpendicular to the kinds of features you need to add. But if you wait too long, you have too much unstructured code to refactor and you're now "chasing" people adding new features to the system while you try to refactor the system underneath them. So there's just some engineering gut-sense that's important to know when to stop and codify the patterns you've seen emerge into a useful, tight abstraction.

And then of course there's features and bugginess. It's possible for the shittiest code to have very few bugs and please users. The worst thing about the worst code I've ever seen in my career is that it worked - so it was hard to want to mess with it when it was so easy to ignore! And it doesn't help that what is intractable code to some people is only a little complicated to others. Especially if you use a big language and are combining a lot of esoteric/complex features, or have a complicated logical expression and you are a logician and others are not.

I've seen projects become unchangeable because the code was spaghetti. I've seen them become unchangeable because there was too much abstraction. I've seen them become unchangeable because there was too little abstraction. I've seen awful code make big impact and I've seen excellent code flop because it wasn't competitive with "worse" but more complete offerings.

(All of this reinforcing, of course, that it's impossible to estimate how long software will take..... all of it relies far too heavily on the intuition of your mid+senior engineering talent).

Re: Responding to “Are bugs and slow delivery ok?”

#62
This is called software philistinism.

There are many blog posts like this one that deny (often deride) the value of software craftmanship, including the skillset of planning.

They almost always have this same conclusiveness to them as well ("she was right"), with no tangible backing other than personal anecdata ("everyone sucked who I worked with, so everyone must suck").

If you zoom out, the reality is that people in the software industry are spoiled AF. A majority of practitioners get paid a ridiculous amount and get away with murder.

It is true that current market dynamics give people in this industry pretty much zero incentive to get good at the craft. So people don't and then to rhetorically justify their philistinism, they write blog posts like this.

It is also true that many businesses get away with writing absolutely shitty software and stay in business because of these dynamics. But that doesn't make it "ok" and doesn't say anything about the enormous amount lost to such apathy.

Re: Responding to “Are bugs and slow delivery ok?”

#63

I've been coding now for about 30 years. I've never moved up into management and, now at almost 50, it's pretty clear I never will, and will spend the remainder of my career coding (which I'm perfectly fine with). In the 30 years I've been coding, languages have come and gone, platforms have come and gone, frameworks have come and gone, methodologies have come and gone, but two things have never changed: 1) Software…

Let me add more nuance here. We are always balancing a set of constraints: total cost, speed of delivery, certainty of cost, and certainty of delivery for a given date are but four.

Agile, for example, suggests that decreasing the cost of change at the expense of certainty of cost will increase the total chances of delivery within cost and date. Outsources are (implicitly) arguing that the decrease of total costs are worth the other friction in the organization.

This all goes back to return on investment. In the most simplistic case, if I have ten people working on this task now, and this software will allow me to reduce that to six, then that's four people I don't have to pay for that task. If those four people are making $100,000 a year, and the software lasts 10 years before having to be replaced, that's 4 million dollars. The software plus maintenance needs to cost less than 4 million dollars to make sense. We all know the simplistic case.

But if I can trade $100,000 dollars in guaranteed cost for a reduction of $500,000 in risk in making that goal, I can trade cost for certainty and that's going to be a good trade. Now, as developers we know that these numbers are often fudged, but everyone realizes this is inexact and just the best we all can do. We need to know how to think about these in terms of arguing against bad investments and steer toward good investments by knowing how the tradeoffs works.

Re: Responding to “Are bugs and slow delivery ok?”

#64

> You know what I haven’t seen? not once in 15 years? > A company going under. What a wild assertion: The OP hasn’t personally seen a company fail, and therefore software quality doesn’t matter? Bugs and slow delivery are fine? It’s trivially easy to find counterexamples of companies failing because their software products were inferior to newcomers who delivered good results, fast development, and more stable experi…

I think that it is (a little bit) more subtle: the importance of quality OF A PRODUCT (projects delivery is another beast) is relative to:

- the customer: either B2B or B2C

- the market share: minimal ( 30%)

- B2C is really dynamic and few bad versions/products can make the customers fly away (except when strong dominance - like Windows - or no equivalent product) and shutdown a company. Price can be a strong factor and cost of migration/switching is usually not considered

- B2B is more conservative: hard to enter the market (so small market shares will need a lot of time to take off... if there's no competitor) but once you're in, the cost of change for a company is usually high enough to tolerate more bad versions (and more if there's few competitors, and incompatibilities between products, and legal requirements to keep records, and a lot of "configuration", and requiring a strong training for a lot of people...). Companies as customer dont see the switch of software as a technical problem (replacing on editor by another one) but as a management problem (training, cost to switch, data availability, availability of people already trained, cost of multi-year/multi-instance licences...)

Re: Responding to “Are bugs and slow delivery ok?”

#65
Bugs are never OK. Slow delivery, though? That depends on what you mean by "slow delivery". I happen to think that the trend of rapid release has been pretty awful for software product and service quality, so if "slow delivery" is the absence of that, I think it's desirable.

Bugs are inevitable, but that doesn't make them OK.

But that's not the point the article is making. They're talking about whether or not bugs and slow delivery will break a company. Obviously it won't, because both have been a part of what the industry releases since the start.

Re: Responding to “Are bugs and slow delivery ok?”

#66

> You know what I haven’t seen? not once in 15 years? > A company going under. What a wild assertion: The OP hasn’t personally seen a company fail, and therefore software quality doesn’t matter? Bugs and slow delivery are fine? It’s trivially easy to find counterexamples of companies failing because their software products were inferior to newcomers who delivered good results, fast development, and more stable experi…

> It’s trivially easy to find counterexamples of companies failing because their software products were inferior to newcomers who delivered good results, fast development, and more stable experience. Startups fail all the time because their software isn’t good enough or isn’t delivered before the runway expires. The author is deliberately choosing to ignore this hard reality.

While I personally haven't seen a company going under due to bad code, one can also definitely make the argument that software that is buggy or doesn't scale will lead to lost profits, which could also eventually become a problem, or present risks to business continuity.

I still recall working on critical performance issues for a near-real-time auction system way past the end of my working day, because there was an auction scheduled the next day and a fix was needed. I also recall visiting a healthcare business which could not provide services, because a system of theirs kept crashing and there was a long queue of people just sitting around and being miserable.

Whether private or public sector, poor code has a bad impact on many different things.

However, once can also definitely make the distinction between keeping the lights on (KTLO) and everything else. If an auction system cannot do auctions for some needed amount of users, that's a KTLO issue. If an e-commerce system calculates prices/taxes/discounts wrong and this leads to direct monetary losses, that's possibly a KTLO issue. If users occasionally get errors or weird widget sizing in some CRUD app or blog site, nobody really cares that much, at least as far as existential threats go.

Outside of that, bugs and slow delivery can be an unfortunate reality, yet one that can mostly be coped with.

Re: Responding to “Are bugs and slow delivery ok?”

#67
post #50
post #29

Earlier quoted context omitted.

If I scribble a random time stamp on a piece of paper and frame it and call it a clock, it's still right at least once a day (24 hour notation or bust :) ) The original article was just a garbage native advertisement with the wrong conclusion, I agree, but the ideas it stated weren't really wrong; Microsoft is a pretty good example of a company that constantly leaves its products in very buggy states for long periods…

> the original author wasn't wrong that there is a ridiculously high tolerance for buggy, low quality software, and the reason isn't super clear I disagree. I’d say the reason is clear: the market decides; and the decision is that current amount of bugs is ok. Most software is fine for the end user. We (devs) notice the bugs because we’re familiar with the process; but in the end we’re just people who know how the sa…

I’d say the reason is clear: the market decides; and the decision is that current amount of bugs is ok.

Although when it comes to software that market is quite heavily skewed by the VC funding effect. If "the market" is getting something free or cheap as a loss leader because it's really the VC money that is paying the bills for a few years then end users are going to be much more tolerant of junk for a while.

In the VC model it's boom or bust so quality and coding for the long term might not be business priorities. In the short term unless you're so bad that it's outweighing the sales and marketing push to drive that rapid growth you can get away with a lot. In the long term you don't care so much about maintaining the early code because by the time a big exit is a realistic outcome you have the resources to throw things out and rebuild from the ground up if you need to.

Of course none of that means you're actually providing a good experience to your users during those early years or that they'd be willing to pay enough for what you're offering or stay with you for long enough to sustain and grow your business independently. You're still shipping junk and your users still don't like it. You just don't care because your bills are really being paid by someone whose interests barely align with your users in those early years and the bill payer also doesn't care because they're only interested in the big exits and expecting to write off all their other investments anyway.

If you're a software developer who does want to build good products and have happy users benefitting from them then this kind of market is toxic. If you're a user who just wants good software to do its job so you can get on with yours then this kind of market is toxic. Eventually maybe the potentially paying customers will get wise to the startup game and start avoiding it in favour of alternatives made by smaller companies that bootstrap and aim to build steady and sustainable products and businesses. But there's been so much money splashing around in VC world for so long now that a lot of people just can't think outside the box.

Re: Responding to “Are bugs and slow delivery ok?”

#68

I've been coding now for about 30 years. I've never moved up into management and, now at almost 50, it's pretty clear I never will, and will spend the remainder of my career coding (which I'm perfectly fine with). In the 30 years I've been coding, languages have come and gone, platforms have come and gone, frameworks have come and gone, methodologies have come and gone, but two things have never changed: 1) Software…

We are all at the mercy of Hofstadter's Law.

https://en.wikipedia.org/wiki/Hofstadter%27s_law

> Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.

Re: Responding to “Are bugs and slow delivery ok?”

#69
post #18

The problem is that anyone with a semblance of professional pride will find it mentally quite difficult to knowingly ship bad software. Like, sure, even if we make best efforts to catch both obvious and less obvious bugs, all software we ship will still be full of bugs. But knowingly shipping software full of obvious bugs... it feels unprofessional. And makes you really feel the weight of all the inevitable bug repor…

yeah. and not just "not professional". It's basically giving the finger to a whole bunch of (generally) lower-paid support staff answering phone calls from irate customers.

Not to mention it's giving the finger to the customers.

Re: Responding to “Are bugs and slow delivery ok?”

#70
post #46

I've been coding now for about 30 years. I've never moved up into management and, now at almost 50, it's pretty clear I never will, and will spend the remainder of my career coding (which I'm perfectly fine with). In the 30 years I've been coding, languages have come and gone, platforms have come and gone, frameworks have come and gone, methodologies have come and gone, but two things have never changed: 1) Software…

In my experience, one can accurately predict development time by correctly working around the planning fallacy. The planning fallacy is something like "Humans are hopelessly optimistic. Even if you think you're planning for the worst case, unexpected things will happen, and your estimate is more like the best case scenario. This is true even if you try to compensate for the planning fallacy by being more pessimistic"…

As far as I can tell there are two major problems with this.

The first is that you can predict that there will be unforeseen problems, but not how many of them nor how long each will take to resolve. The result is high variance. Then if the average such project takes 16 months, and you predict each such project will take 16 months, then some take 7 months and some take 17 months and some take 25 months and people get mad at you for underestimating some of them. But if you predict at the upper end of the range then people will get mad at you for giving 25 month estimates for projects that only take 16 months on average.

The second is that people know what the estimate is and work expands to fill all available time. When you know you have 16 months, you set a pace that will have the project finished in 16 months. Then in month 14 you encounter some unexpected problem that takes six months to resolve. If you'd found it in month 2 you'd have been fine, because you'd have cut some less critical features and spent the time on that, but now that's in the past and your project is five months late.

Post reply on HN