
Have Software Developers Given Up? - d2p
http://blog.dantup.com/2016/04/have-software-developers-given-up/
======
saltyoutburst
We haven't given up, there is simply not enough financial incentive to make
the software any better. See 'We Could Write Nearly Perfect Software but We
Choose Not to' [https://blog.inf.ed.ac.uk/sapm/2014/03/14/we-could-write-
nea...](https://blog.inf.ed.ac.uk/sapm/2014/03/14/we-could-write-nearly-
perfect-software-but-we-choose-not-to/) "The simple truth is that bug–free on-
time software is just more expensive than we (or our clients) are prepared to
pay."

~~~
bdamm
Is there some reason to believe that with enough money software could be bug-
free? Developers are often guilty of just refactoring for no particularly good
reason other than their personal sense of aesthetic, which can lead to endless
(and destructive) refactoring. More money also makes people design lazy, so
that instead of finding clever ways to reduce effort and improve uniformity,
you just have everyone make their own forms.

~~~
diafygi
There is. See the space shuttle software.

[http://www.fastcompany.com/28121/they-write-right-
stuff](http://www.fastcompany.com/28121/they-write-right-stuff)

~~~
nightski
It isn't a practical solution for the majority of software out there. I also
think that while their method works, it is pretty archaic. Looking to the
future I hope we can find a way to achieve the level of results they do,
without the ridiculous effort and cost.

~~~
pron
> Looking to the future I hope we can find a way to achieve the level of
> results they do, without the ridiculous effort and cost.

That is unlikely. For computational complexity theory reasons, writing correct
software is _extremely_ computationally expensive (regardless of whether or
not the language is Turing complete). In fact, it is "the hardest problem in
computer science", in the sense that any problem with bounded complexity can
be efficiently reduced to software verification. Even verifying finite-state-
machines (the simplest computational model) is PSPACE-hard.

What we _can_ do is find many ad hoc ways, each helping to some extent with
some kinds of correctness properties.

~~~
nightski
Most software problems I encounter in the real world ARE of bounded
complexity, and they can be reduced to software verification. But this is
still a very tedious process and there are significant gains to be had by
making this more accessible without having to solve the hardest problem in
computer science.

~~~
pron
Certainly. It's just that there cannot be one (or a few) advances that would
make writing correct programs generally easy. We can concentrate on domains
(in the safety-critical embedded world this is almost a solved problem for
some kinds of applications thanks to the invention of synchronous languages in
the '80s, that make formal verification relatively efficient). We can also
address some "internal" properties, like memory safety and transactions, that
on the whole might make writing correct programs easier (though not provably
correct).

------
Iv
I see what you mean and am often equally frustrated, but you know what this
reminds me of? The state of infrastructure in a booming underdeveloped
country, which is a good thing. Let me explain it a bit further.

Have you tried hiring a programmer lately? It is very hard, there is a huge
demand and most programmers I know receive several offers a month. The demand
for software is CRAZY. So we all do what we can: quick and dirty when it is
good enough. Just like in a country with no roads, any dirt road and crappy
pavement is better than nothing if you have hundreds of trucks that need to go
through RIGHT NOW.

So here it is, websites are made hastily, tech half work, but are better than
nothing. How much of the things you screencaped have more than 5 years of
existence? Like you said, we are software developers. We write software and we
write bugs. Right now, there is far more need to implement new features than
to correct bugs. Hopefully it will change at one point but right now this is
the crazy race forward, and that is a good thing!

~~~
turaw
> most programmers I know receive several offers a month

:'|

Could you take a look at how they're receiving offers and perhaps put some
suggestions together on how to duplicate that effect? Most programmers I know
have had extreme difficulty getting a job, especially one that would pay at-
or-above the average rate (per Glassdoor).

~~~
WalterBright
Programmers can do very well by becoming contributors to high profile open
source projects and standards committees. Post pull requests on github, write
tech articles, answer tech questions on reddit and hacker news, and do it
under your own name. Register yourname.com and put your resume there.
Essentially, make a name for yourself instead of waiting for someone else to
do it for you.

~~~
gaius
Can you think of any other profession that does anything like this? No doctors
or lawyers or accountants or civil engineers or pastry chefs find work by
posting on Reddit.

And besides, that is very specific to web jobs. There's an awful lot more to
the industry besides.

~~~
davidsong
> Can you think of any other profession that does anything like this?

Photographers, graphic designers and musicians.

~~~
nommm-nommm
Photographers, graphic designers, and musicians are expected to work for free
in order to get hired?

~~~
klibertp
Aren't they? I don't know much about musicians, but graphic designers are
expected to bring their portfolio with them to the interview. There's no
interview at all without the portfolio... and you're not always lucky enough
to have all your best works paid for by someone, especially if you're just
starting.

EDIT: and, come to think of it, don't musicians need to practice for a long
time before even getting a chance to perform for pay?

~~~
WalterBright
They sure do, and they often play for years for free in the hope of building a
brand and being discovered. Like The Beatles.

------
whack
I remember what software, and the internet, used to be like 20 years ago. My
user-experience, and expectations, has increased in almost every way
imaginable during this time. From a 10,000 foot view, I'm extremely pleased
with the way things have changed in the past 2 decades.

To answer your question with a question of my own: If you think that
software/service X sucks, why not see this as an opportunity to do something
about it? If X really does suck, and if the reason X sucks is because it's
being designed/managed all wrong, you could make a ton of money for yourself
by building a company around building a better X which doesn't suck. Build an
alternative that prioritizes reliability over agile/fast-releases/new-feature-
rollout, or whatever you think the problem is.

If you're right, if users genuinely care so much about reliability, if
reliability is important enough to sacrifice feature-experimentation, time-to-
market and development-costs, then you should be able to achieve great market
success and win over the current unreliable dinosaurs. More generally, some
other company/startup that espouses the above reliability-centered philosophy
should be able to enter the market and start dominating it.

The fact that neither you, nor anyone else, has killed off the
companies/services/products that you're complaining about, leads me to suspect
that users in general are willing to give up some reliability, in exchange for
other benefits like low price and novel features. I know I certainly do.

~~~
pdkl95
> users in general

Blaming users is part of the problem. Yes, they vote with their wallet, but
their vote is usually made in ignorance and is often mislead by companies that
are so used to dissembling and exaggerating they call such antisocial behavior
"best practice".

That said, it _is_ true that this is largely a problem with the economic
incentives. Capitalism optimizes for businesses that are financially
efficient, so the business that sells the lowest quality product they can get
away with is "successful". This becomes even worse in software, where quality
is harder to see directly. Even the people that write software can have a hard
time evaluating "quality".

The solution for this situation is simple, but it's basically taboo to talk
about it: _liability_. If you sell software, you need to be _liable_ for any
damage it causes when "used normally". For a decent sketch of how this might
look, see Dan Geer's explanation[1]. There may be other ways to implement
liability. I suggest that the software industry should find a way to implement
this as soon as possible, if they want any say in what "liability" means.

Yes, this will raise development costs; spending more for better development
practices was the _goal_.

[1] [https://www.youtube.com/watch?v=nT-
TGvYOBpI#t=1531](https://www.youtube.com/watch?v=nT-TGvYOBpI#t=1531)

~~~
PretzelFisch
Software companies are sued all the time for damages.

~~~
chopin
Do you have any citations for this?

Even sites who clearly deliver _malware_ through their ad network don't get
sued.

------
Walkman
What I do in this "war" is constantly reminding and educating my coworkers
that they should care more and also teaching them HOW they can do that.

I had already several very hard and harsh fights with my bosses, even with the
CEO telling them "everyone is not very good at this company" because I care
about quality very much and rather fight over it than sit quietly and just
produce shit.

I gave "talks" about specific topics, constantly grab the opportunity when I
can tell them about a new concept, Clean Code, better tools, whatever. I
introduced TDD, CI, automatic deployments, will introduce CD next month over a
year I have been working at my current company.

If you are one of the better developers you can and should fight against
lazyness and low quality, even teach the ones who cares/know less.

Also it's very comfortable to blame your boss, but you can do very much about
this. I introduced automated testing not because they asked me for it, but
because I thought is important. I educated them that this way, development
will take a bit longer, but will be higher quality. You can even do things
which improves quality and they don't even know about. My next step is to
introduce third party services (which they never used before and always went
with the open source or cheap solutions) which makes our work easier, so we
can focus on what's important, and make it better.

~~~
pdkl95
> If you are one of the better developers you can and should fight against
> lazyness and low quality

This can be thought of as a type of error correction. If you don't fix
problems as they rise up the chain of command, those problems eventually
become policy.

[http://ogun.stanford.edu/~bnayfeh/plan.html](http://ogun.stanford.edu/~bnayfeh/plan.html)

(mild language warning, of the form "____ happens")

------
tracker1
I just spent half a week with the following... I re-joined as a contractor in
a new role at (big corporation), I arrived my first day (only gone a couple
weeks), was able to pick up my security badge (no problem), issued laptop, bag
an accessories, no problem..

AD login was written down, missing the last character that was there before,
tried as it was, finally tried with the missing character, still no go...
three calls to cusomer support later, disconnect ethernet, and able to login
with secure wifi.

Able to login, setup a couple things... hmmm, no access... Told my email
address was now a different one, ask about original email address. No bueno...
wait a day, call back (still waiting on response from original issue), decide
I can't wait, needed to get in. No email access, no lync.

Finally get a call from email support the next day (weds), but it's 7:30pm and
I'm out to dinner, didn't recognize the number, sent to vmail... the issue was
that I _had no email_ , the message on the voicemail said "email me", no
callback number, no email address, how the hell was I supposed to email them.

Two days later, I come in, I'm able to send mail, but not receive... there
were somehow two email addresses configured. After the weekend, I'm finally
able to send and receive, but now have a 3rd email address, and have to
manually fix my profile in a bunch of internal services that were auto-
populated at first login. Not to mention a VP in another division (with the
same name) getting a bunch of email meant for me, because my email was
fubar'd.

It isn't just software, it's entire processes. I basically sat for a week,
twiddling my thumbs (mostly), because I couldn't communicate... still waiting
on access to our ticket tracking system (was told to wait until I had email
and lync).

I'd cry if it weren't so funny.

------
SFJulie
Coder are soldiers paid to do a job. If the army fails, blame the generals
that totally do not care about quality and will prefer to pay dozens of
obedient coders lower and lower that do not care than be eventually facing
opposition based on concern in quality.

Most over heard arguments before standing up: hey, we don't have a choice,
there are all these companies competing with us doing the same. The other
arguments for not caring about quality is : not having customers because you
are a startup and that well, we will all be wealthy after we will have sold
our shares and you will be able to care with the next management.

Bosses get what they ask and pay for.

~~~
eropple
_> Coder are soldiers paid to do a job. If the army fails, blame the generals
that totally do not care about quality and will prefer to pay dozens of
obedient coders lower and lower that do not care than be eventually facing
opposition based on concern in quality._

"But I was just following orders" isn't an acceptable excuse in any situation.
You are inextricably tied to a set of moral obligations by your decision to
build things that affect other human beings, and you cannot shirk them or push
them upward. They are yours, they remain yours, and attempts to rationalize
the abrogation thereof are at best gross.

Own your shit. If you cannot do good and do well, then quit. (I have done
this; it is not that hard.)

~~~
carapace
That just leaves the field to the incompetents. They are not going to stop
inflicting this crappy code on the world just because you quit.

~~~
eropple
Then own it, and fix it, and be with a clear conscience. I couldn't, at that
particular job, and I could do good elsewhere. So I made the decision to do
that.

"We're just coders, it's not our fault" is _not an excuse_. Either own your
shit (and, implicitly, fix it) or refuse to participate. There is no middle
ground.

~~~
SFJulie
Trying to change job here to avoid taking part in this buffoonery.

I can't. Nowadays so much jobs are regulated per diploma/certifications that
it is hard beginning again and regain while "older" the momentum for
credibility.

The funny part I see breadmakers, cooks, construction is also suffering the
same problem. I am currently in France, restaurants for average people are so
bad, they do stuff that intoxicate people. I can do bread, cooking, fixing
bikes and I do better than "pro" nowadays" without a diploma in their field.

Something systemic seems to be going on. Like people are just taught to
execute and required to obey, and bosses don't know the craft of the people
they should lead.

Basically being a boss boils down to the capital you can have, and competition
seems rigged in favour of people being born wealthy.

I don't think that birth merit outweight a sane competition.

I find the Figaro monolog that inspired French and US revolution about the old
monarchic regimes to be very actual.

Weirdly enough author's right says it should be in public domain, but it is
impossible to find a link to this essay that is very actual.

~~~
pferde
The systemic thing is called "professional managers". In the past, only people
"from the trenches" were promoted to manage and lead others. Nowadays, we have
managers who studied nothing but management. And it shows.

~~~
SFJulie
Karl Marx analysis was that through education you can capture the praxis
(savoir faire) and transform it into both stealing it from the craftsman and
also making expert in doxein (savoir faire) that knows nothing (Donning Kruger
effect).

I think that it has always fueled my intuition that a profession should be
defined by the craftsmanship and not he education.

------
ensiferum
Oh, thats nothing. Just today Firefox managed to freeze up the entire X server
with some WebGL content. Gedit become unresponsive several times, also had
rendering faults (just 640kb file with autogenerated html and js).
SublimeText2 crashes daily. (it's faulty plugin) Office outlook for Web is a
general usability horror and has many features that do not work. Win10 has
number of bugs that I encounter almost daily, Edge is generally very buggy.

I think generally all these problems are indicative of several factors
combined. Laziness, general lack of attention to detail and pure developer
incompetence, general need to push out stuff too fast (marketing decisions
policies) and then finally complexities in the software systems itself. Today
any given software system is enormously complicated to a degree that nobody
really understands the systems completely. In fact it's a more or less a
miracle that things work as much as they do considering all the billions of
bits that need to be just right for me to even write this comment. That being
said, I don't think there are shortcuts here. Better quality can be achieved
but it requires the mindset for doing things that way. And it's going to
require testing. And a lot of it, unit tests, regression tests, automated test
suites.

Personally I find that when I write code I often need more unit testing code
than the actual code to cover the system under test functionality properly.
I'm talking about a ratio of up to 5 lines of testing code to a 1 line of real
code. Sometimes I can get close to 2:1 or 3:1 if the function/class/method is
not very complicated. Anyway even if you now take that conservative ratio of
2:1 and go look at any random open source project I'd be surprised if you
would actually find that much testing code there. Good luck.

~~~
flamethroeaway
Overhead of unit testing is why I'm not a fan of it for personal projects.
Testing even the simplest 400 lines of code needed more than 1000 lines of
testcode and I'm doing as little as possible.

~~~
gaius
99% of what unit testing does you get "for free" with a strongly-typed
language like OCaml.

That developers insist on using unsafe languages like Javascript speaks
volumes.

~~~
sievebrain
99% is a way high over-estimate. Yes, strongly statically typed languages
eliminate a LOT of potential bugs and I always try to use them. But it's not
like they eliminate 99% of all bugs.

~~~
zzzcpan
> Yes, strongly statically typed languages eliminate a LOT of potential bugs

They don't. AFAIK, lines of code is the only known metric with significant
correlation with bugs so far. And if you ever wrote anything in a good
dynamically typed language, like Perl, you know that its type system never
causes any problems.

------
MattGrommes
I hear a lot of complaints from non-programmers about the software they use
and they always try to make sure I'm not offended. I can't even begin to
explain how I'm not only not offended, I hate these lazy problems even more
than they do.

Some of those are clearly complicated issues but there's so many cases of just
plain laziness it's infuriating. However, I don't blame the developers
entirely. There's so much pressure from management, product managers, etc. and
so much cost cutting it's ridiculous. It doesn't directly affect the bottom-
line though so I'm not sure we can do much except expect more from ourselves
and get used to it.

~~~
PretzelFisch
I get so aggravated with other software's bugs. But at the end of the day, you
have to ship.

~~~
tremon
In a well-functioning industry, shipping broken items would just create a
money-sink at the support end. One of the reasons this doesn't happen is that
many software is unique (effectively, every vendor has a monopoly on their
program), so software vendors can get away with ignoring most of their users.
Even if there's multiple programs the user can choose from, switching costs
are high (they usually require expertise).

This is not just a failure of the software industry, you see this in every
field where there's hardly any feedback from end-users to the vendor.

------
stegosaurus
Ultimately it's not really about software developers, is it?

Most of these issues seem to be management decisions.

Like giving a car mechanic a few cheesegraters and a dog, sticking him in an
open field in a thunderstorm, and asking him to rebuild your engine.

He could be a prodigy. But there's water in it, man. There's bloody water in
it.

Half of the stuff on that page should not involve any programming at all. The
nPower one, for example. Yeah, it's broken, but that's not the actual problem.
The problem is that it would take about 5 years to report the issue, so no-one
knows it's broken. Just give an email address or a telephone number, and
actually employ customer support instead of paying yourself $50M/second. Done.

~~~
d2p
I disagree. While there are management/process/whatever issues, there's also a
lot that could be improved by the devs.

For example, take the podomatic example - that's just a sloppy function
written by a dev. The NPower thing is just sloppy setup of the website and bad
links in email templates. The MS thing, well why did the devs add jQuery to a
site that is so incredibly static?

Devs make a lot of decisions that influence the quality of software and I
think we need to start taking more responsibility for that.

------
nanodano
As software evolves and gets more complicated it only makes sense that bugs
will become more obscure and tougher to chase down in projects that are
reaching sizes we've never seen before. Most developers have a bug list longer
than they can handle. It's not about 'giving up' it's about prioritizing. It's
not about being lazy it's about only having so much time in a day.

~~~
tracker1
Start with very small, modular code... avoid spaghetti coupling (that is
removed by multiple laters)... organize structure by feature, not type/class,
and accept that all features don't look the same... Some features may only be
data structures, service libraries and/or ui.

Separate event chains from your UI so much as practical, and avoid classes
that look like Car, Wheel, etc that are too smart for their own good.

~~~
jschwartzi
We do this. What next?

~~~
tracker1
Actual code reviews, experienced architect(s) that actually understand the
whole project, and paired development. Not being afraid to refactor...
creating componentized pieces that can live in separate codebases if possible.

------
draw_down
What's most interesting to me is that people choose to blame developers for
their observations of quality or content of software, games, etc. Completely
ignoring the organizational or institutional structure involved, as if we all
have complete autonomy over the products we work on.

I've seen people blame developers for, like, female characters in games being
oversexed. Newsflash- that's a business, product, and design decision. People
even tried to blame engineers for the VW emissions scandal! Companies nowadays
set ridiculous release schedules, overwork their developers, and release crap.
But sure, blame the devs, that will probably help.

The author here is a dev so there's really no excuse.

~~~
d2p
My post was actually aimed at the industry more than specifically developers.
The headline was a bit bad (it was written before the post) but I didn't
expect to get 30k visitors overnight so I probably didn't proof-read/tweak as
much as I could've done :D

------
nikolay
I've never written unit tests in my life, and my code works most of the time.
There used to be times where I'd write code for an entire week in Java without
compiling (because it was taking forever) and back then we used pretty basic
IDEs that didn't help as much as they to today to help you prevent stupid
errors. And, usually, my code compiled just fine and worked. Today's developer
is a trial-and-error one, tweaking a few lines of code, refreshing the
browser, and seeing if stuff works or not. Today's developer spends
disproportional amounts of time writing unit tests and, yet, producing buggy
code.

~~~
jbclements
Are you suggesting that an increase in unit tests is correlated with a decline
in code quality? That would be a surprising correlation.

~~~
tracker1
Unit tests do not correlate to quality, and even at 100% coverage only
guarantee that you've looked at every line of code twice (usually). Not only
that, a lot of projects skip adding testing until well after a proof of
concept is working... why? because we don't want to not ship features for two
weeks while we backport in tests... Now you have less than optimal code _and_
less than optimal tests.

This persists, every suggestion to refactor structure rebuffed, and this
persists until the code debt is so high, it takes 4-5x as long to add a
feature as it should. Where, if you're lucky, you can make a new version using
only 3-5 year old technology, instead of the decade old stuff you've been
supporting for half a decade. Even then the 2-5yo stuff isn't as nice as it
was sold, but it's "enforced" by the company powers that be (god I hate
angular sometimes).

------
sqeaky
Software development is still young. 30 years ago it really wasn't an industry
and 50 it was pretty much an academic venture.

We have better procedures and tools. The groups not using version control,
unit tests, peer reviews and other common means to increase quality will be
out-competed by those who do.

Just write the best software you can, with the best group you can in the mean
time and in the long run this will sort itself. Of if you think you can sort
it out, try to.

I don't know what "sorted out" looks like but I would not be surprised to see
apprenticeships like plumbing and HVAC or certifications like medicine and
law. Sorted out could look like just about anything, perhaps we will be
drenched in shitty software until unit testing is taught to second graders
along-side basic arithmetic.

~~~
TheOtherHobbes
>30 years ago it really wasn't an industry

30 years ago it was definitely an industry. The commercial games market
exploded with the arrival of cheap 8-bit micros in the early 80s. Mini and
mainframe application development has been around for a lot longer.

Commercial software development has been happening _since the 1950s._

[https://en.wikipedia.org/wiki/LEO_(computer)](https://en.wikipedia.org/wiki/LEO_\(computer\))

"Sorted out" means that software doesn't fail in stupid, avoidable ways.

The current state of the industry is shockingly bad. But users have been
trained to expect broken software, developers rarely have enough of quality
ethic to care about those boring bug fixes, and management just wants more
money.

So here we are.

Personally I blame Microsoft for gifting the industry with a tradition of
bullshit EULAs that more or less said "We can ship any old bug-ridden crap we
feel like, and we're not responsible if it blows up in your face and takes
your business down. Besides, if something goes wrong it's clearly your fault
for being too stupid and ignorant to use the software properly. Whatever -
definitely not our fault, so don't even think about suing."

After the Pavlovian conditioning and Stockholm syndrome set in, it became
impossible to expect consumer pushback.

------
lazyjones
You can really tell when web developers don't actually use the website they're
building (especially contractors). Same for applications and for overly
complex software where developers only use few features themselves (hence web
browser bugs).

Only very talented or disciplined people manage to write flawless code without
stumbling over their own bugs first. A good, opinionated, statically typed
language helps, IMHO (scripting languages are one of the reasons for crappy
web pages).

------
pgroves
"Write Failed: Success" is my new favorite error message.

~~~
MattGrommes
I had one of those once so I winced when I saw it. I was printing 'Error: '
with the message that came back from the server and in one case saw 'Error:
Success'.

~~~
bschwindHN
In a similar vein, applications that output in red when everything is running
fine cause a lot of wincing.

------
cle
As a software developer, there is always an infinite list of stuff to do,
things to build, issues to fix, etc. Why do we spend time doing other things
rather than fix these annoying quirks?

In my experience, it's usually because there was something more important to
do.

I don't think it's fair to criticize these decisions unless you know what was
done instead.

~~~
d2p
That's true; and the post wasn't aimed specifically at devs, but more of the
software dev industry as a whole (I know the title is pretty badly worded).

I think companies should start caring more about their quality and users
should stop giving money to those that don't. Some of these silly bugs are
pretty ridiculous and should never have happened.

------
Falkon1313
Developers want to build quality stuff that they can be proud of. Time,
budgets, marketing promises, and reality have a way of interfering with that.
Rare is the job where you can tell your boss "We could release this now, and I
could start on the next thing, but I'm not happy with the quality and would
rather rework it." and they will just say "Ok, do that. Make it good. We'll
tell all of our clients that they'll just have to wait for what we promised
would be ready this month. They'll just have to deal with however that impacts
them and their business."

More layers = more bugs, both at the software level and the business level.
And there are a lot more layers now. We're not just compiling raw ASM or C and
handing it to the end-user anymore. Every couple of years we add more layers
to both.

------
stretchwithme
I got a bad one. I tried a few years back to log into flickr with my yahoo
account. No matter what I tried, I kept getting this error:

"Hello- new account signups are temporarily unavailable from this network
address space used by your Internet Service Provider.'

Flash forward 2 or 3 years. They've gotta have it fixed by now, right?

Nope.

~~~
emilburzo
That looks more like an IP (range?) blacklist than a bug, doesn't it?

~~~
stretchwithme
Sure, it is. But I can log into the yahoo account with no problem. You'd think
this many years after the acquisition they would have one source of truth on
what should be blocked.

------
digi_owl
Nah, they just get bored easily.

Writing new stuff is like building model airplanes, fun.

Bug fixing is like chores, unless someone gives you some kind of "incentive"
to do them you don't.

~~~
d2p
For some devs, I'm sure that's true. For me, I like to take pride in my work
and be proud of the products I work on. I love people reporting bugs so I can
improve :)

------
shadesof
The "Pro_Hacking" story made me laugh. In that case, I think the support
person is just providing the body of a response template, where "Hello
Pro_Hacking," is fixed (i.e., not something the support person can easily
change).

~~~
d2p
I wondered that; but the first several emails didn't start like that. It was
only after I complained that wasn't my name it started, like they were taking
the piss :(

------
a13n
Hi! I work on an incredibly relevant project called Product Pains.
[https://productpains.com](https://productpains.com)

Products aren't perfect. Whether they have frustrating bugs or are missing a
useful feature, there's always room for improvement. The best way to help them
improve is to give them feedback.

Unfortunately most companies aren't the best at taking feedback. They either
don't provide a way to give feedback or don't prioritize it enough in their
roadmap.

Which is why we created Product Pains, a new feedback channel for every mobile
app and website. It works like so:

\- People can post feedback about any product.

\- People can also vote and comment on feedback.

\- Teams can subscribe to feedback about their products and mark feedback as
"In Progress" or "Fixed".

Voting is critical because teams get a clean, prioritized list of the issues
that are most important to their users. Rather than having to manually
aggregate individual app store reviews, emails, tweets, etc, they do virtually
no work.

It's so satisfying to see a Product Rep mark your feedback as "fixed" and know
you had an impact on their product and everyone who uses it. I'd love to see
your feedback on Product Pains.

~~~
tremon
Product pain #1: webpage renders as an empty page without javascript.

------
skybrian
My guess is that it's always been this bad and often worse. But maybe we are
more adventurous and use a wider variety of software these days, so there are
more chances to see something go wrong.

Software updates alone will expose you to more versions, so you'll have more
chances to see different bugs (rather than the same ones that you learn to
adjust to or ignore).

------
soyiuz
It has not been mentioned that software engineering differs from other types
of engineering (like civil engineering) in that it builds abstract objects
(software) that are then expected to function in a number of differing
material contexts (hardware). Think about how strange that is. Engineers
building a bridge for example translate their ideas into specific arrangements
of carefully chosen material. The software engineer builds for a limited
number of reasonable architectures and for a virtually unlimited number of
hardware in various states of disrepair. It is a testament to human ingenuity
that software works at all as well as it does.

For this reason, the example Shuttle's software misses the mark. Writing code
for a single known device is by orders of magnitude a simpler problem than
writing code for numerous permutations of hardware.

~~~
zzzcpan
> that are then expected to function in a number of differing material
> contexts (hardware)

It's not like that. Sometimes they are expected to function in a presence of
any kind of errors, other times - not so much and everyone is ok with them
breaking occasionally. But we really do have a way to make software that
functions reliably in a presence of errors.

------
gerbilly
I think the "go fast and break things" mantra is causing programmers to doubt
that stable, bug-free software can be built at all.

At my last company i was an older developer in a mostly younger team.

We were working on a full rewrite of our product. Version 2 was going to
address all the hastily patched together misfeatures of version 1.

Even with this admission that we had a quality problem, I could barely
convince them to let me take time to design the new version.

I was supposed to be the architect in charge of designing the new system, and
I was constantly being rushed. I would tell them that if we think this
through, we'll have a more coherent and stable product.

It was like I was talking Swahili to them.

On the few parts of the system where I was given enough time, I got very few
bug reports. As for the rest, well I did what I could. It's no use being a
martyr.

------
raverbashing
The real question is why a missing final newline should cause an abort on an
install and this was not detected on package creation

~~~
d2p
Yeah; that got me too. Needless to say I won't be trying that again :)

------
anonymous41
Expect this to get much worse as the profession is stripped of its remaining
threads of prestige by the explosion of bootcamps and the supplanting of the
terms "software developer/enginer/programmer" with "coder," one that equally
well describes medical data entry clerks (no doubt the way many managers and
spiteful journalists actually view us), if Google search results are an
accurate representation.

Why expect professionalism from people who aren't treated like professionals
and shown the respect that would normally be their due?

~~~
apercu
I agree, but we don;t always act like professionals either. People see
development as a commodity because we treat ourselves and our product as a
commodity. You don't see lawyers lining up to undercut each other - because
that's a race to the bottom. We do see it in software development all the
time.

------
snarfy
[http://www.hanselman.com/blog/EverythingsBrokenAndNobodysUps...](http://www.hanselman.com/blog/EverythingsBrokenAndNobodysUpset.aspx)

------
lerxst
A lot of the decisions made behind software products depend on management's
decision as to what is 'good enough' and when to release a first version to
iterate upon.

Every day, I encounter parts of the codebase that could be refactored or
sections of a page that probably do not make sense to half of the user base,
but in the eyes of management, this is not a problem as customers will learn.
If I were to spend all day polishing aspects of the site, that would not be as
preferable as working on a major feature release.

------
UweSchmidt
That guy keeps finding an awful lot of errors, is what I thought while reading
this article.

It seems many users like myself don't even notice errors any more or have
developed an instinct what software or services to stay away from, have low
expectations from support (read a logfile?) and a general disdain for a lot of
what is going on by using adblocker or avoiding switching services unless
really necessary.

So yea, we've given up mostly :)

~~~
d2p
Yeah, I don't know if I get more than my fair share, or if I just notice them
more. Maybe it's good attention to detail =D

------
chipsy
It's always been really, really bad once you try to take the experience into
your own hands. The path of least resistance with technology is to stay well
behind the curve, choose the popular brand, avoid niche use cases, use the
minimum amount of features, and modify nothing - in effect, to use everything
as if it were an Apple device in stock configuration. However, sometimes more
effort is worthwhile because the unmodded experience is so poor or ill-fitted.

Yesterday I finally got fed up with my cheap Android phone and flashed it with
a modded rom. It took probably 8 hours of reading and downloading and testing
and waiting to get it into a working state, because there are so many points
along the chain where a little misconfiguration breaks the process, and the
people making mods often have working software with poor documentation and
inadequate testing.

In the end, there just is never enough time to go around to make it perfect
for everyone in every use case. You have to choose carefully when you want to
fight the battle - and you can expect to lose, a lot of the time.

------
CM30
Well, if you really want an example of software developers 'giving up' and
systems not working correctly, there's always the video game industry/world.
Where in some cases, products actually do get released in a completely broken
state and where bugs like these are endemic.

But it's probably all due to one simple thing; people aren't encouraged to do
things well, they're encouraged to get them done by the 'deadline' at all
costs. Which often means writing hacky code, not testing edge cases (or
sometimes, any cases), and then hoping anything that breaks can be fixed
later.

The latter is also why both web development and game development is arguably
more messed up than any other software development, because patches are seen
as fairly easy and inevitable. Why get it right the first time when it can be
fixed 'post production'?

------
smac8
One issue that separates software from most other industries is that software
is not a physical entity. This makes the desire to change - refactor, add
features, redefine use cases, etc - all the more tempting, since the only cost
is getting someone to fix/alter some code (despite the fact that labor is
obviously very expensive). In contrast, in aerospace for example, you have to
get it right the first time, else you have millions of dollars worth of
payload and equipment exploding. In these industries it means teams will
probably be more reluctant to accept rapid change in development and
deployment since the cost of failure is so much higher than software. This
isn't the only reason for bugs in software by any means, but the sheer innate
mutability of software makes the desire to pile on requirements, iterate
frequently, and just generally not be averse to change a massive reason for
buggy code

------
api
Everything is a moving target.

Write a web UI? Prepare to re-write it next year. Desktop is reasonably stable
but now desktop is "dead" and mobile is the new thing. Mobile is a rapidly
moving target and there's lots of platform fragmentation. Everyone knows next
year or the year after mobile as we know it will now be "dead" and time to
rewrite everything all over again. There will be VR and AR which will demand
entirely new interface metaphors, totally new platforms, etc.

I didn't even start in on the hip language of the week. Now we have to rewrite
it all in Go, or Rust, or Swift, or ...

If everything is changing this fast there's little incentive to perfect
anything. It'll be obsolete next year. Just ship ship ship and then throw it
away and ship again.

Some of this churn really is related to progress but some of it isn't. I'm
skeptical of whether all of it is really necessary.

~~~
majewsky
> Desktop is reasonably stable

Have you ever written desktop GUI programs? ;) Particularly on Linux, but I
remember that when I was still writing .NET programs on Windows, it was a
running gag that every major .NET release brought a completely new UI
framework.

------
jasonlotito
It's why I started keeping track of all the annoyances I run across on
wtfmac.com. Because, well, these are stupid, annoying things that piss me off.
So yeah, when the richest company in the world does fundamentally wrong things
with software, what does that say about the state of the industry as a whole?

------
swolchok
VNC passwords being limited to 8 characters isn't a software bug, it's a VNC
specification bug.

From
[https://tools.ietf.org/rfc/rfc6143.txt](https://tools.ietf.org/rfc/rfc6143.txt):

> To form the key, the password is truncated to eight characters

~~~
striking
That and allowing anyone access to your computer's graphical interface as if
they were at your computer, even yourself over a web connection, is a bad
idea.

I think the 8 character limitation is helpful. Because if you need to protect
yourself against it, you can ask "but wtf do I _really_ want to do? Probably
not a VNC server..."

~~~
dingo_bat
There are many instances where VNC is useful. Do you think SSH access is also
useless? This is the same, except you can also run GUI programs.

~~~
Jtsummers
You can run GUI programs over ssh as well.

~~~
leni536
And it has other security implications (you have to trust the server).

------
edoceo
Dropbox has same sign up non-validation mentioned in the article. I mentioned
it to them when I got a phantom sign-up notice. Reset password and found an
account with my email and uploaded content! You can fully use DB w/o
validating your email. Hello anonymous dead-drops!

------
temptossr344
Apparently this person was not using technology any time before the iPhone?

Quirks, useless error messages, website rendering problems... they've been
around forever. Has this person even tried to install software packages on
Linux 10-15+ years ago?

Have software developers given up?

I'd argue the vast majority never cared.

And really, why bother caring so much that you take to the web glorifying
others glitches?

We hear about data theft stories, companies shutting down due to data loss
fuckups... life goes on. It's shit that many people are burned because of
these things, but really our society does not care. The loss is absorbed for
the most part and we move on.

Stop being so dismayed with the world, or how other people aren't as good at
things as you are. Move along.

~~~
d2p
I did use technology before the iPhone, but I don't remember being as
frustrated by it as I am now.

The most frustrating thing is that we seem to be getting worse, not better.
We're not learning from mistakes, we're too busy churning out the next buggy
release to review the mistakes in the last one :(

When huge software companies like Google and Microsoft are churning out buggy
crap, it's easy to see why others assume they can't do any better.

~~~
beeboop
Maybe a recency bias. I have used computers since I was a kid, my earliest
memories are Windows 95 but I am sure there was some before then too. I
remember constant BSOD, constant application-crashing bugs with vague error
messages, no ability to Google the solution to the problems you do have.
Sometimes a game wouldn't work and there was really nothing you could do to
even troubleshoot.

I doubt we're getting worse. At worst, we're staying even as complexity grows
tremendously. I would guess we're probably improving slightly despite insane
growth in complexity.

I would say that with great size, like Google and Microsoft, comes a greater
difficulty in making bug-free products. Too small and you don't have the
funding, but the sweet size is probably somewhere between a "small business"
and "Google". Companies the size of Google have a lot of bureaucracy. They
have a million products. They have thousands of developers. And in the end,
the majority of the business doesn't even come from these glitchy products.
It's understandable that noone is really up in arms over these bugs because
upper management doesn't give a shit, and the developers only give a shit in
so far that they aren't fired. Sometimes you'll have developers who care
because of pride in their work, but they're the minority.

~~~
beachstartup
it's not getting worse, we're just using software in so many more places
today. seeing bugs is simply becoming more frequent.

~~~
d2p
This probably does explain a lot of it!

------
zippy786
Welcome to the age where people only think about writing software and
releasing fast, and frameworks allowing to do just that. Then you see people
trying to solve problems like N+1 query. I look 10 years back where there were
not many frameworks and you would laugh if you talked about resolving N+1.
Everyone tried to touch DB once and fetch everything in 1 query. It seems many
people are doing things when they don't know how the underlying technology is
working. This is bound to happen. And many new devs are picking up on bad
practices and think they know too much..quite depressing actually.

------
joshvm
I was refactoring some legacy academic code recently. It came with a GUI
which, if the user did something wrong, fail with the message "Error N" (N
being some number) without any further information or logging. The only way to
figure out what happened was to grep the source code to see precisely what
triggered the alert box.

There's also the bizarre policy university has about passwords. Your password
is reset every six months (fine), it can't be similar to your old one (fine)
and it's truncated to 8 characters (what?).

~~~
majewsky
I saw something similar when I used a German government agency's website last
week to fill out some forms. Their password policy was:

    
    
      - minimum 8 chars
      - contains at least 3 of 4 of the following types of chars:
        - small letters
        - capital letters
        - numbers
        - symbols
    

I usually use random-generated passwords that are dumped as hex, i.e.
[0-9a-f]{64}, so I just added "A+" at the end. Turns out that didn't work.

What did work was to _prepend_ "A+" instead of appending it. So apparently
they silently truncate long passwords somewhere before the 64th character.

------
xanderjanz
Given up? No. Prioritized development speed over bug prevention? Yes,

~~~
d2p
It's disappointing, whatever we call it :(

~~~
xanderjanz
I'm enjoying it. There's a lot still to be to learned about DevOps and massive
codebases.

------
amelius
Or has the QA department given up?

~~~
eropple
You're assuming that places _have_ QA departments. Those, in my experience,
are the first thing to vanish.

~~~
vectored
This reminds me of the content editors vanishing for the newspapers and the
drop in the quality of articles.

------
atulatul
While it seems like developers don't care, as many comments mention it is
about the trade-off between resources like money, time to ship. Recently, in
our project architecture group meeting a senior architect said that the
approach we have taken on our project is not architecturally 'pure' but it is
'pragmatic'.

------
keefe
How often did the Model T break down compared to the cars of today? (hopefully
the stats backup that conceptual point)

Mistaks happen all the time. My great grandfather lost three fingers in a
printing press accident. That is this kind of accident:

"I once switched a production SQL database to Simple recovery mode and
Truncated an important table causing a ton of work for my colleagues."

How does that even happen...

~~~
d2p
Long story ;)

I was setting up a staging database for some testing. Our DBs are big so we
truncate a bunch of data we don't need on the staging server so we can have
more DBs without wasting tens of GB per database.

I ended up executing this against the wrong server.

Needless to say, we've learned from this. Luckily nothing critical was lost,
but I felt like a complete spanner :(

------
meshr
I think that we need to implement a new layer between software and users to
solve this problem (like antiviruses do this nowadays but they solve very
narrow problem). It should be like Wikipedia so everyone can fix bugs. There
should be also smth like Wikipedia bots that automatically fix bugs.

------
carsongross
Software is always bad at the top of the market, when hype and get-it-out wins
over quality and measured improvements. Javascript is also always hugely
popular at the top of the market. (2000-DHTML, 2008-Web2.0, Now-
Node/Ang/React.)

Eventually, the Developer Gods of the Copybook Headings with terror and
slaughter return.

------
alenmilk
I think this has been constant. There are more mediocre programmers than great
programmers. Since we are exposed to a lot more software we experience more
bugs. That means there are more programmers but it does not mean that the
ration between good and mediocre programmers has changed.

------
hden
Reminds me of a talk from Seth Godin: This is broken
[https://www.ted.com/talks/seth_godin_this_is_broken_1](https://www.ted.com/talks/seth_godin_this_is_broken_1)

------
jokoon
I will be called a statist, but I think the software industry is really
lacking regulations and quality standards.

I'm not a security guy, but I think most of the security flaws you find in
software are caused by the lack of government approved security standards. I
mean is there ISO stuff for software quality? And even if there is, I really
don't think it's useful or that it tries hard enough.

Just look at healthcare.gov, I'm sure things would have been going much more
smoothly if there was ISO rules.

Although it might be debatable if it's possible or wise to have such
standards. But I would really appreciate it if important software like OS's
had actual standards.

It seems that most of the stuff talked about in this article are just mistakes
allowed by a permissive practices.

~~~
xj9
We have that, it is called formal verification. However, the process is time
consuming and therefore expensive. The issue is not permissive practices or
lack of standards, but the cost associated with quality.

------
codeulike
Perhaps it's not economical to produce totally bug free software.

------
sickbeard
"Over the last few years it feels like the quality of software and services
across the industry is falling rather than climbing. "

hey guys, this guy just started working a couple of years ago..

------
liveoneggs
the mess we're in with joe armstrong:
[https://www.youtube.com/watch?v=lKXe3HUG2l4](https://www.youtube.com/watch?v=lKXe3HUG2l4)

------
danharaj
i would spend a lot more time improving software i think is actually useful
and beneficial to others if it didn't mean i'd lose my job and fall off the
proletarian treadmill

------
chris_wot
I note that most of these errors are web server misconfigurations.

------
cloudjacker
the difference between everyone here and technophobes is that these problems
are benign to us.

when someone says "computers never work for me! technology hates me!" it isn't
that there experience is drastically different, just the very first
incongruence causes them to quit, whereas the very first incongruence is
completely benign to us such that we don't even notice it as we march toward
the entertainment or service we want.

------
mifreewil
Anyone else wondering why the author was concerned about a random person not
being able to activate an account using a random name with their email?

~~~
CUViper
The frustration was that support kept greeting with the random name despite
being asked not to. I'm sure that's just a "Hello $NAME" template, but it's
still lazy.

~~~
d2p
The original reason for contacting was this:
[https://news.ycombinator.com/item?id=11579638](https://news.ycombinator.com/item?id=11579638)

But yeah, they're included here because of the repeated greetings like that. I
suspect it was a template, though it only started after I told them that
wasn't my name; first few emails (not shown) were "Hi Danny"!

------
minionslave
In terms of software quality, websites are usually the worst.

Easier to patch and people and errors are usually less scary.

------
kpcyrd
I like the "can't download ethernet adapter drivers" limbo I usually get with
windows.

------
crazy5sheep
Nowadays, companies care more on putting in new features than having high
quality products.

------
known
Writing software != Selling software

------
SixSigma
Quality can be defined as : does what the customers expect.

If we can train them to accept crud, then we can call broken stuff quality.

------
id122015
thats why I trust Artificial Intelligence

------
am8
nice article. I use OVO Energy they have a nice user interface for managing
gas and electric. Although I did just check it and it's down for maintenance.

~~~
rossng
I did wonder why he would voluntarily move TO Npower. Even if you're saving
money, it's not worth it. A single 'live chat' with them was more than enough
to convince me of that.

~~~
maaarghk
I haven't had a gas bill from them in 5 months because their system wouldn't
let me put in my gas readings. I had to go through a painful 40 day complaints
process to get anyone to put them on the account. Never heard back from
anyone. Eventually someone on their twitter feed was able to fix it over the
course of a day, but of course it will be 3 months before their system
generates a bill from the new figures. I've had plenty of ASP.NET "error
occurred in the application" pages too so clearly they aren't building their
site in Release mode. Overall, best described as a clusterfuck.

------
maerF0x0
I need to blame a scapegoat for the world's problems. I blame offshoring.

~~~
nikolay
Wrong. Eastern Europe is offshore, too.

