Bad Software Runs the World
whitroth tips a story at The Atlantic by James Kwak, who bemoans the poor quality of software underpinning so many important industries. He points out that while user-facing software is often well-polished, the code running supply chains, production lines, and financial markets is rarely so refined. From the article:
"The underlying problem here is that most software is not very good. Writing good software is hard. There are thousands of opportunities to make mistakes. More importantly, it's difficult if not impossible to anticipate all the situations that a software program will be faced with, especially when — as was the case for both UBS and Knight — it is interacting with other software programs that are not under your control. It's difficult to test software properly if you don't know all the use cases that it's going to have to support. There are solutions to these problems, but they are neither easy nor cheap. You need to start with very good, very motivated developers. You need to have development processes that are oriented toward quality, not some arbitrary measure of output."
50% of all software is of below-average quality.
"Do you not know, my son, with how little wisdom the world is governed?" -- Axel Oxenstierna
Knight's problem was operations. Somebody pushed a test program onto a production network. That's not to say that software isn't hard. It is. It's just that system administration is hard too.
It's as simple as that.
FP. And what exactly do you mean by Quality???
That is because corporate infrastructure software does not generate revenue. Why spend money that does not directly impact the bottom line?
Maybe when you get people who actually understand the underlying business rather than a MBA graduate, that will change.
Good, Fast, Cheap...Pick Two.
With money and profit being the primary motivators, and these being directly related to the amount of time spent getting something released and generating revenue, there is no really good way to avoid this. (The software industry does not have a monopoly on this, either.) There are people within the organization whose primary function is to rein in devs who try to make every chunk of code completely bulletproof and spend hours, days, or even weeks trying to anticipate every sequence of events that could conceivably happen. At some point, you have to call it good 'nuff and move on, if you want to be competitive. If you're lucky, you'll be able to patch it later. If you're unlucky and there are errors to the point that the software is not usable, the company crashes and you move on. Everybody understands this game.
The underlying problem is that there are only so many people who really 'get' software development. Most of them are working in industries where they are compensated well or find the work exciting and interesting. Fixing legacy code on the cheap for a white-shirt-and-tie company like an electric utility or a defense contractor just isn't worth it.
True, most software is badly written and there are entire jobs dedicated to maintaining legacy and even current systems. Some software is so badly written that it requires a team to prop it during peak usage times or War Rooms to determine fixes. Managers usually only care about meeting a deadline and push for that. Young guys don't care about if something is correctly written - just that "it works" in that instance in time. Being a good developer requires being enabled to be a good developer by your team.
There aren't enough 'good' coders in the world to implement all the software that needs to be written, let along 'very good' ones. Not to mention good architects, designers, requirements analysts, etc, etc, etc. And even if there were, software that needs to work together isn't always designed to do so. Hacks, cludges, and jerry rigged solutions are what hold the tech world together, no amount of wishful thinking is going to change that.
Papa John's is shit-tier pizza anyway.
That is because corporate infrastructure software does not obviously generate revenue, and losses of opportunity are invisible.
Fixed it for you.
Basically just supporting the last half of what you said.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
11 cents a pie? I'll pay that if it means people can get healthcare.
That's just mean!
That is so because the big boys are the first ones to have their development teams outsourced overseas, where a coder is made in 1 week from his previous shepherd job, and, i kid you not. Big4Style
"James Kwak .. points out that while user-facing software is often well-polished, the code running supply chains, production lines, and financial markets is rarely so refined"
...
I disagree, while the GUI may be well polished, the underlying code is of poor quality, as it has most probably written by some contractor on an hourly rate. Quality control works like this. If it compiles, ship it and fix all the bugs in the next version
AccountKiller
and this article is absolutely correct. Forthe most part, we do regression testing, but a lot of code (a whole lot) is never unit tested, its not written to be used it tested, and there are configuration holes all over the place. Each time there is a Jerome Kerviel or Nick Leeson, a generation of auditors will come through and find systems faults, and put in reasonably effective controls, but that is not the same as programmatic correctness. Programmatic correctness often has to be baked into the code from the start (same with effective unit testing), and by and large, this is not an investment banks highest priority (as an earlier poster wrote, code that is not directly involved in revenue generation does not get funded).
It isn't cost effective to build good software... for a few users. I develop some internal systems. They are very complex and each of them have 40 users at most. The ROI of Apple polishing every tiny bit of a software is great. If each of their 100000 users spend one second less, it is a ROI of more than one day. Human beings are very intelligent. They can learn to play a musical instrument, drive a car, operate a machine and to use shitty software.
There should be an additional $0.11 tax added to every pizza for the extra health care needed to treat all the fat geeks! Wait... what? Oh crap, am I that fat?
OP mentions a few of the factors that help achieve better software (very good, motivated developers; orientation towards quality, etc). But the most important one was left out: customers willing to pay what it costs to get quality software, and their ability to spot high quality software up-front (during sales cycle). Until that happens, the quality will continue to be poor, because as OP notes, the cost will increase (driving customers away from higher-quality) and the lack of visibility to higher quality will keep them from getting it (ie, ability to recognize a better quality product during sales cycle and pay the extra price knowing they'll actually get higher quality out of it).
"You need to have development processes that are oriented toward quality, not some arbitrary measure of stupid."
XKCD:Xeric Knowledge Comically Dispen
Sounds good, add another $1 to the price and pay the folks making it the money made from it as well I say.
I have no problem paying a little more so that the people working long hours for shit pay can at least see a doctor when they get sick.
I wouldn't say it's all bad software, I'm sure a lot of it is, but some of it is purpose driven software that has been repurposed as if it were off the shelf software. Dev houses build a piece of software for a specific need for a specific customer, then that customer refers them to others and they all want the same thing. They don't rewrite the software to be off-the-shelf, they just repurpose what they have and shoehorn it in and make it work(well, it works with MS SQL, but this company uses Sybase, so lets just quickly change the syntax and now everything is okay). It might be great software, but it's a shitty implementation of it.
... it is interacting with other software programs that are not under your control. It's difficult to test software properly if you don't know all the use cases that it's going to have to support...
You define the use cases it will support, and reject anything outside of those defined cases. If your software acts upon cases that it does not know how to handle, then it is your problem, and only your problem.
Perfection does not exist, as humans, we degrade over time and eventually die... Why we should expect software does not?
http://jameskwak.net/about/
So he has some actual experience with seeing the kind of effort it takes to do software with high quality.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
Maybe, but it comes with a top-tier garlic dipping sauce that forgives all the sins of the pizza. Wait, you think Little Caesars is better? WTF is wrong with you?
No kidding, that stuff fucks me up worse than White Castle.
Support the EFF and Creative Commons. The war is coming, and they're supporting you...
Perfectly fine. Anything that would drive that crappy company out of business is a win. Their pizza tastes like warmed over turds.
Humans write software. Humans are inherently fallible, therefore the software they code is likewise fallible. Properly motivating a software engineer with pain or pay will not cause the engineer to become infallible. Removing greed from the equation might help, but like fallibility, it is in our nature and not likely to change.
Like a lot of the audience, I think it's really really good if products include the price of caring for the health of those who produce them.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
[Citation needed]
Indeed. I've been parachuted in to several companies with major software issues.
Three had avoided even starting a migration from hardware and databases that hadn't been supported in a decade or more.
Another placehad no concept of file locking or threading, or QA, and was using 8 different programming languages on just one project.
Two companies that handled 80,000 to 300,000 transactions a day did not have any way of simulating input or comparing the input to output.
One company that depended on several million TCP/IP connections a day had no idea that TCP/IP data might not all arrive in one packet.
Another place whose business was dependent on several custom fonts would not believe the veracity of both the Postscript and TrueType font verifiers when they said "your font has 488 serious errors".
About 3/4 of the places had not a clue what SQL injection was and how they were vulnerable.
The quality of the stuff out there is just horrible.
Yeah I love this quote:
“We’re not supportive of Obamacare, like most businesses in our industry?
Yes, because most in your industry pay your employees shit wages and treat them like disposable slaves. You might actually have to treat them better. THE HORROR!!!
Shit food huh says Moheeheeko the wise.
Let's see, is the third largest take-out and delivery pizza restaurant chain in the United States, 3,300 Papa John's establishments, including over 2,600 in the U.S. and the remainder spread among more than 30 countries, 500 million dollars in assets.
Geen, Moheeheeko, I'm curious what you do with your time, other than make up grade school rhymes and dream of spending other peoples money.
Do tell.
The underlying problem here is that most software is not very good.
Wrong. You get what you pay for...news at 11
Writing good software is hard.
Wrong. Understanding the requirements and getting it right is the hardest.
There are thousands of opportunities to make mistakes.
Just like anything...people are fallible.
More importantly, it's difficult if not impossible to anticipate all the situations that a software program will be faced with, especially when — as was the case for both UBS and Knight — it is interacting with other software programs that are not under your control.
Actually, this was by design. Knight wanted a fully automated system and they did not want any user intervention at any cost.
It's difficult to test software properly if you don't know all the use cases that it's going to have to support. There are solutions to these problems, but they are neither easy nor cheap.
That's why they call it engineering. Do you think when they crash test cars and check to see how much damage will occur if you hit a cow? Of course not, because we stay within the bounds of accepted principles. We don't need to know the answer to everything.
You need to start with very good, very motivated developers.
It's not motivation that makes a good product.
You need to have development processes that are oriented toward quality, not some arbitrary measure of output.
Most development processes that are oriented toward quality use some arbitrary measure for output. The best measure is to see if it works.
Software isn't hard. Everyone constantly tells me so. "It's simple! All You Have To Do Is...".
"Oh, those preliminary mockup screens look almost perfect". So you'll have the entire system ready for production deployment next Tuesday, right?"
"Just git 'er DUN!"
Ahh but that's not the question now is it. Listen carefully now this is really complicated.
ACA is not about healthcare, it's about incurance. You have full insurance in Cuba, do you understand this?
Furthermore, it's not about "if products include the price of caring for the health of those who produce them", it's about the state taxing the producers all the while pretending to supply this healthcare, as if it was a right of the people.
It is not a right, no more than MTV, Ipods or bling.
You have so much to learn grasshopper, so little time.
That Lawyers and bloggers know about bad software.
Fugue for Aaron Swartz
Bean counter and management do. They don't care how much the staff struggles with lousy software (e.g. Oracle server on Linux). They care about saving a few bucks, getting their bonuses, reorganizing to hide the bodies and moving on to the next job. Hence, there will always be a market for crappy software. Capitalism fails at the interface level. If the engineers and low level end users made the purchasing decisions, you can bet quality would improve in a hurry.
Please do not read this sig. Thank you.
As a software developer, I have yet to hold a job where I felt as though I was being paid to produce quality software.
Me: "In order to implement the new functionality I've had to rewrite the entire module"
PM: "Ooooh, what's the SLOC?"
Me: "It's decreased by about 2000."
PM: "WTF?! How am I supposed to report that on my weekly metrics spreadsheet?"
When I first read the article, I asked myself "what is the meaning of 'good' software?" in the article and "what does good mean?". Then after I read through it, I found out that the article does NOT explain the meaning of "good" but rather generalizes that any software is bad if it "fails" to correctly serve even one of its purposes. All examples in the article are about money (of course). The meaning of "good" software in this article means "ideal/perfect" and "robust" software. I really doubt that any huge software could be even close to a robust software, leave alone the "perfect" part.
The solutions given in this article do NOT guarantee that a good software will be produced either. In other words, the "cost" of software implementation and qualified developers can only be used as an implication of software quality, but they are NOT the software quality themselves. One could spend billions of dollars and have all knowledgeble team, but could still get a crappy software even though it is unlikely. And even though the software is good, it could still fail under certain conditions (either by itself or being tampered from external sources -- hack -- or both).
Nevertheless, I like the conclusion of the article that the solution is to accept whatever might happen and attempt to reduce the damage done by software failure. That is what everyone should expect and be prepared for.
Right, Papa John's must good because they have a lot of locations. If he said McDonald's made shit food, I doubt you'd be getting anywhere near as defensive.
There are also 5800 Taco Bells in the US. This doesn't mean their food isn't shit. It just means that for the price people are willing to accept the lower quality.
Ok, and? Other than an 'OMG! SOCIALISM!' why am I supposed to be crying?
Which is better for code that runs won't-kill-anyone-if-it-fails systems like the stock market, airline scheduling, and the like:
Software that is delivered on time with a 0.1% downtime, a 1 per-1000 transaction "caught" error rate that leads to doing work over again or a reported failure, and a 1-in-100,000 transaction "uncaught until things get expensive" error rate,
OR
Software that is 100 times as good on every metric but which isn't delivered until 5 years after the "bad" version above?
For some customers, the first one is the better choice.
The problem with software is we don't have a good handle on how much delay or additional effort it will take to get from "definitely on time, maybe good enough, maybe not" to "definitely good enough, but very likely unacceptably late."
We also don't have a good handle on whether any improvements will introduce new problems or increase the odds of an existing problem being triggered from "almost never" to "often enough that people notice."
When you have systems that can kill people if they malfunction, the questions are the same but the costs of failure is much higher. When you have life-saving systems which can kill when they malfunction you have to trade off the cost of lives lost in malfunctions (medical radiation machines delivering overdoses) to the cost in lives of the machines not being available (cheap radiation machine not being widely available in the 3rd world for several years after it could have been if an occasional fatal malfunction in "version 1.0" was acceptable).
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
"The cost will never stop going up, and the quality of care will go down"
I happen to know history, you apparently do not. Not my fault you are ignorant. Go and ask someone who endured healthcare in the former USSR and report back. My job is not to educate you.
The way the article is written, it hints that low quality = more implementation flaws.
Let's not forget that software can have design flaws, too, and careful programming might still lead to low quality software.
In the case of Knight, the defects might not have even been a function of the software per se. I'm sure a good bit of probability and machine learning go into HFT; these algorithms may have been the source of the errors, and the flawed algorithms might not even be due to the software engineers.
Not posting AC like a spineless bitch for starters.
Perfectly fine. Anything that would drive that crappy company out of business is a win. Their pizza tastes like warmed over turds.
So, you're a turd connoisseur, then?
This has been a test. If this had been an actual Sig, you would have been amused.
Please indicate where I said good. Take your time. Successful is the point I was making, and I am correct, as I always am.
Yes. I prefer my turds grilled with dill and lemon not warmed over like a Papa John's Pizza.
You do realize there are other nations that have socialized medicine than the USSR, right?
Many of them have fine medican care.
while user-facing software is often well-polished
I think the distinction is that most user facing software doesn't lose 400million due to a bug.
love is just extroverted narcissism
If someone wants code that will work when honest, competent people don't try to "game" it and know where the holes are and avoid them, it can work well.
But as soon as you ask it to do something it wasn't meant to do, such as be used by someone who doesn't know where the holes are or doesn't know how to work around them, or someone who intends to poke at the holes and exploit them, then you are no longer using the code for its original purpose.
Think of it this way:
Assume my car works fine and "bug free."
Assume yours is too.
Assume our town's roads are bug free as well.
BUT the definition of "bug free" for a car implies that it will work as a transportation device only as long as competent, trained drivers who obey the rules of the road are driving. If I decide "hey, I'm going to see if my car can be exploited as a killing machine" then all bets are off. Likewise, if an untrained driver hops in and says "what happens if I turn the key and press the pedal on the right?" all bets are off.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Software is generally of very high quality. This guy has no idea wh500 Server Error\nConnection closed by client\n
I have used this program my entire career. For the last 20 years (since MSC bought PDA), it has not changed apart from the odd user-generated macro getting included in. The windowing interface has had the same bugs (e.g. scroll bars that are 1 pixel high) since I was a wee lad. Half the stuff in it that isn't used regularly doesn't work, never has, never will and yet it is the standard for FEM pre/post in aerospace. Staring at this broken-ass POS year after year has filled me with ennui.
May there be a special circle in hell just for MacNeil-Schwendler.
Thank you. That is all.
Equine Mammals Are Considerably Smaller
>> It's difficult if not impossible to anticipate all the situations that a software program will be faced with, especially when — as was the case for both UBS and Knight — it is interacting with other software programs that are not under your control. It's difficult to test software properly if you don't know all the use cases that it's going to have to support.
That's why so many industries continue to use FTP (also FTPS and SFTP) to punt files over the wall when real-time response is not critical.
File transfer is cheap, easy, and as long as at least one side hangs onto the files, reversible if someone makes a mistake. But most of all, it breaks up operational problems into two distinct parts: 1) did it transfer? 2) did it parse? From there, you can build help desk and other entry-level IT tasks to correct transient problems...and usually avoid having to hire programmers to maintain a potentially faster but more brittle tightly-coupled interface.
We have home-grown billing software here at MegaDyingCorporation. We've used it since the corporation was a wee little LLC and it will never go away. One of the things that is so attractive about this software is its interface.
It is green text on a black background.
It has no HTML-esq 3D fields to fill in.
It runs in a browser.
When rookie billers first see the software the thought most often expressed is "it looks so old" and then they are trained.
It is is difficult to learn
It has many obscure work-arounds
It has no in-line help
When rookies are trained there is no binder that says "do this and get that result," or "Standard billing practice requires you to do X and then Y and follow it up with Z". The rookies are trained by someone who knows precisely how to bill all of the accounts the rookie will be billing and knows that if the rookie goes off the beaten track even a little they will end up cleaning up after the rookie. Everyone trains. Everyone knows how to bill their accounts. Everyone has notes.
It runs in an old version of java
It cannot be updated
IT hates it with a passion
Accounting refuses to part with it.
The application takes the data from the account, marries it with the time-keeping data from another app, mixes it in with the services, and stock used and allows those who have been trained to produce any sort of invoice the customer wants.
It is hard to use like a blacksmith's hammer is hard to use. (or vi)
It is hard to learn like some martial arts are hard to learn (or some programming languages)
Once you learn how to use it the application has it's small flaws but those flaws are there to be used by others who want a different outcome.
It is a horrible, ugly, difficult to learn application that has driven more than one rookie to quit.
I always assumed that Taco Bell's product was consumed as a laxative, of which they produce a highly effective product.
I believe in socialism.
except for that guy, he's on his own...
No. I don't want to. How do you like that?
I see that socialized education system worked wonders for you. What's a medican, by the way?
1) Ban all HFT software. Period.
Not a bad idea anyway, IMO, since HFT software tends to give the big fish an unfair advantage over, well, everyone else.
2) Tax the living shit out of all trades. When the day traders bitch, tell them to get off their lazy asses and contribute to society like the rest of us.
An enigma, wrapped in a riddle, shrouded in bacon and cheese
I'd like everyone to have insurance too. Helps to encourage risk taking, which all the right wingers seem to think is a good thing if rich people can do it.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
It is called a typo you ignorant twat.
I have actually lived in a country with socialized medicine, it was quite nice.
Unlike you who has probably never left his trailer park.
The real problem is two things. People either not understanding the quality of the tools (software) they are using, or willingness to use "good enough" software and gamble against a catastrophe. Given the financial market's track record, it's most likely more of the second. If I have no idea about how to judge the ripeness of fruit and I make a pie that makes me sick because the apples were rotten, how can I blame the apples?
That being said, as a developer I can honestly say about 99% of the code I've seen is not Scottish. (It's CRAP!)
...is just good enough.
With the understanding that the world hasn't burnt itself down to a crisp thanks to all the bad software out there, the logical next step is to figure out just how bad you can write software with it still being good enough to run the world. Save the money and spend it on something else you think is more important.
You fools think it's going to be a dime or a dollar? The cost will never stop going up, and the quality of care will go down.
Boy you libs are so damn predictable.
You want 100% coverage, gee Cuba has had that for a long time now.
"Ohh I'll gladly pay [and pay and pay and pay and pay]."
Keep bending over suckers, the real hard part is just around the corner.
No, it hasn't. Ever been to Cuba, where you get an aspirin for free, for everything because that's all they have?
A better comparison is the health care systems of say, Japan, Canada or Israel... or almost any other developed country for that matter.
Like a lot of the audience, I think it's really really good if products include the price of caring for the health of those who produce them.
They should also include the price of caring for the health of those who consume them.
If we pay for our health care costs up front at the register it means:
1. We can stop arguing about health insurance.
2. People who take risks assume the full cost of those risks.
I don't care if you smoke 2 cartons/day, you've already paid for your cancer treatments at the register.
There are also 5800 Taco Bells in the US. This doesn't mean their food isn't shit. It just means that for the price people are willing to accept the lower quality.
Found on another website many years ago:
"Taco Bell...it's cheaper than food."
You have "intelligent" confused with "trainable." If people were very intelligent, they would not be baffled every time an OS or application had a major UI overhaul.
The other day I was surprised wen talking about Debian to a friend. Debian is represented (misrepresented perhaps) as using only stable versions. This make so every new version of Debian is very rare. While other distros can live more on the cutting edge of tech and include more modern versions of all software.
He said that this is low quality. And I suppose kind of make sense. Quality can also be a attribute of delivery. Good code now is much better than the perfect code 10 years from now and having to pay 20 million dollars. For most uses, we write and use good code, and the perfect code is beyond what everyone need.
-Woof woof woof!
Their regular crust is too thick, making the pizza bready. Try thin crust w/ extra sauce, well done for an excellent pizza.
There aren't enough 'good' coders in the world..
Yeah there is.
Apparently not.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
All of the quality engineering, quality assurance, and quality control measurements should be designed to emulate the real world application of the software to the highest possible degree. Then a company must hire a compentent Quality Team in order to implement and perform the real world test cases. When it is not possible to recreate the actual real world environment due to cost or time, that risk is documented. Then management decides if it is an acceptable risk or if the money and time should be spent on creating that real world environment.
Sadly, they don't teach Quality Engineering as a focused career skill in school. It is always a secondary concern of development. Based on my own 17 years of Quality Engineering career experience as an individual contributor and as a department manager, about 2/3 of the developers I have worked with, are horrible at quality design, etc. That other 1/3 you find are the best developers in the company.
For every benefit you receive a tax is levied. - Ralph Waldo Emerson
Ah yes, the mythical good coder who writes it "right" the first time.
That's not really the work of a good coder. Anyone could get lucky, and no-one writes correct code all the time.
A good coder though can structure code in such a way that problems do not cascade, that incoming issues are limited in scope in terms of affecting the rest of the codebase. A good coder can make a huge system where you can replace a part of it without magic or too many tears.
Perhaps it's nothing more than the ability to think ahead a bit while coding or planning to code or pondering the data that is to be fed into a system, but from past experience there are simply many people who do not do that when coding or architecting for whatever reason.
For the non-coders out there, they kind of guy I am talking about is the pants tailor in "The Hudsucker Proxy", who added a second layer of stitching because he liked his client...
That's the kind of system a good coder gets you, the kind of system that lets you metaphorically hang by your pants 50 stories above the ground when things go pear shaped or your input goes wiggy.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
On arriving in the US a few years ago, being someone who likes mexican food, hungry and tired after a long flight, I found my way to Taco Bell.
I think that my travel agent should have warned me before departure, or provided some literature so that I could make an informed decision. .
. .
blame for the mess too hard to pin down to prevent recurrences by prominently displaying a few severed heads near the Tower of London.
That is so true. Not even "git blame" can lead you to the truth of who is at fault, when the problem is not that any one person is at fault as there is simply a failure to do something in a better way.
The problem with software is it's all to easy to get it working, but far harder to have it working a long time for any degree of shift in what must be done - and at the point something is working it's so hard to tell which variant of software you have....
There's got to be some kind of humorous measurement of what quality software you have based on what kinds of liquor are consumed on launch day by the engineers.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Be part of the problem.
Consulting. Minimum $100 an hour, right after you quit the first job you got out of college.
Is the distribution curve simmetric?
Why wouldn't it be measurable by the little people who live in your computer?
One company that depended on several million TCP/IP connections a day had no idea that TCP/IP data might not all arrive in one packet.
As long as all they cared about was opening connections then it doesn't matter how much data a packet could hold... :-)
But seriously, what you describe I'm pretty sure is common across most companies.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Taco Bell is most definitely American food.
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
If you should want any general class of people to be able to go see a doctor when sick, it would be people who handle your food...
You think any kind of fast-food delivery pizza is even worth eating? WTF is wrong with you?
why is this news to anyone? Software is -always- shipped full of issues to meet a PM's deadline in order to say "See!!! We got it done on time!" to justify their salary and existence at the company. "Ship it now and fix it after the fact" (if at all) has been the mantra of in-house and commercial software for 20+ years.
Fifty watts per channel, baby cakes.
quality entails
I totally agree with your list, but it also illustrates what an impossible task it is to know while building or at launch the level of quality of your software...
Look over that list, only this time with an eye to what you can actually determine about a system while you are building it, vs. years after it has been running:
architecture, design and implementation decisions that minimize the cost of change, that does not deteriorate with each change (or at least deteriorates linearly with each change),
You can have software that theoretically has this property, but here you cannot really know until the real changes come along. Very often the kinds of changes that must be made in reality, were not the ones planned for...
that exhibits strong cohesion and lose coupling,
This you can actually tell. So there's one.
that permits reasonable maintainability and configurability,
This depends on who is going to maintain it and administer it.
with relative small bug count per whatever metric one picks (FP, SLOCs, etc.)
I disagree with this point, as another poster pointed out there is a huge difference in kinds of bugs and the degree of pain they inflict, so a mere count is never a good metric of anything.
that is amenable for testing
Helpful but not in the end I think much of an indicator of the final quality of the software.
with architecture and design that are understandable (tied with #1)
Again, the measure of success here depends on who has to understand it going forward.
The real measure of quality in software rests on people that do not yet exist, and system changes that have not yet happened.
Given all that, the best you can do to build quality systems is to make sure at least some of your team are seasoned and trying their best to plan ahead for unplanned issues. AND that they are listened to when they have a bad feeling about something. When a guy who has built several working systems says he doesn't like something but can't explain why, don't argue - run screaming from whatever bothered him.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
From top to bottom:
That one local place which has DIVINE pizza (which is Great Plains in Ames or Alfano's in Rock Island, YMMV)
GodFathers
PizzaHut
Papa Johns
Little Ceasers
Dominoes
(all those thin-crust pizza joints)
I'm going to step in here as a pizza connoisseur. You are correct about how to order a Papa John's pizza (although you neglect to mention that the reason for going thin crust is more the hideous amounts of sugar they dump in their regular crust than its thickness), but it's definitely not excellent. Passable, if nobody else near you delivers and you don't feel like going out, but far from excellent.
The sauce isn't great, their thin crust is way too crunchy (unless it's soaked in grease and falling apart like toilet paper) and about as flavorful as a wafer cracker, their regular sausage is weird-tasting rubbery balls of fat, and their cheese is as tasteless as everything else unless you get one of their blends, in which case it's actually pretty good but there's far too much of it.
If Papa John's seems like excellent pizza to you, go to New York. Or Chicago, for a completely different but still very yummy experience. Either way, you'll find better pizza on the way there than you will at Papa John's, and I'm saying this as someone who ordered so much of it that the manager of my local store sent me a Christmas card.
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
So you have no real response for me other than the boogey man of 'socialism'?
Bingo.
Single-payer, for instance, would be a bigger boon to entrepreneurship, job mobility, and (actual) small businesses than any tax cut proposal the right (or left, for that matter) has put forth. Even better, if it's done right (so, at least as well as it is in the very worst system of that sort in the industrialized world, since they all spend less than we do) it'd cut costs for everyone, including big businesses.
Too bad that would be evil socialism, I guess.
So you pay 10+ dollars for some shitty puzza for 5 cents of garlic dipping sauce?
Remember: Broken gets fixed. Shoddy lasts forever.
Get that fucking commie talk out of here! *cocks gun*
You can buy the sauce on its own from them. The sauce complements the pizza. I like the pizza with the sauce. I don't like the pizza without the sauce. See spot run.
And no - I usually wait until I have a 50% off coupon code because I'm cheap and I'll buy a frozen pizza before spending too much on carryout. It's comfort food, not gourmet.
Bad software also runs unimportant websites.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
Oh right, because every slice of new york pizza is heavenly.
As a New Yorker myself, maybe YOU should try going to New York and sampling some of it, dickcheese - MOST NY pizza is half-stale shit-tier cardboard with greasy, overcooked cheese falling off it. "Great NY Pizza" is one of the most pervasive urban legends known to man - and it's just about as common as Nessie.
Most of it is shit, and it's just as easy to get a good pie in east bumfuck as it is in New York.
Weinberg's Second Law
Maybe your mistake is ordering the dickcheese pizza.
<xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
Man you don't need to go to New York or Chicago to get some top notch Pizza, you could go This place in Boise for some of the best pizza you'll ever put in your fat mouth.
I got here through a series of tubes
I've worked in business software development for vertical markets (particular industries) for many years. It's full of incompetence both at the management level and the programming level. For example, a company will put out an RFP (Request for Proposal) for software that performs a particular task (e.g. managing customer orders in the gas industry or something) and it will consist of hundreds of pages of requirements that interested parties must fill out (does your software do X, etc).
What tends to happen though is that nobody wants to say no to anything in case your competitors lie. So everyone ends up saying yes, and either you quickly develop the missing functionality in some hasty half-arsed fashion or late in the day you basically say "We meant yes in the sense of no". These kind of shoddy practices distressed me initially, but eventually I came to realise that the whole industry was like this. Full of crooks and incompetence. Far shoddier than anything you would encounter on the shelves of a high-street software store.
Part of the problem is due to lack of funds, particularly in smaller companies. There often just doesn't seem to be the money to employ proper testing/quality assurance teams, so the programmers themselves end up doing those tasks. Also, due to money issues they end up employing inexperienced students instead of experienced industry professionals. The software managing your gas bills may well have been designed by someone straight from college who is still trying to learn C#/ Java etc. This is not uncommon at all.
So yes, the software suppliers are often unprofessional crooks but so are the customers. For example, there is a legal requirement (at least in Europe) that procurement of something over a certain cost has to go open to everyone. You can't just say "we want to spend £1000,000 on a customer management system from Company X. So the customer is forced to put out an RFP even though they have no intention of buying anything from anyone other than Company X. So software companies end up completely wasting their time filling out these RFPs. It can be really time-consuming and costly. So sometimes you make a judgement call that "this customer always buys from Company X, so lets not go through the costly charade of filling out their RFP".
It's quite a different world from that of developing Microsoft Word, or Google Docs etc. If you are in charge of software procurement at a company and you have to deal with this industry, you need to be incredibly cautious. As early as possible you need to demand to see demo installs of software to confirm that the RFP requirements are indeed met, and the companies concerned were not just lying through their teeth.
As a resident of NYC, I can tell you that Papa John's is right up there with the most disgusting food I've ever eaten.
Real pizza is much different. it saddens me that you can't really find decent pizza outside NYC, but life is like that. There is (or was) a pizzeria on Lawrence Expressway in Santa Clara that wasn't half bad. The owner started making pizza in NY before he moved to CA and complained that you couldn't get the same quality of ingredients outside of NY. It's sad really.
All that said, I wouldn't care if Papa John's started giving away their pizza. It is *nasty*
From top to bottom: That one local place which has DIVINE pizza (which is Great Plains in Ames or Alfano's in Rock Island, YMMV) GodFathers
disgusting
PizzaHut
Less disgusting but still gross
Papa Johns
Might as well barf on a plate and eat that. Just nasty.
Little Ceasers
Doesn't make me want to barf. two stars for Little Caesar's
Dominoes
Just yuck.
Come to NYC and go to just about *any* non-chain pizza place. It will ruin you for all of the above.
Oh right, because every slice of new york pizza is heavenly.
As a New Yorker myself, maybe YOU should try going to New York and sampling some of it, dickcheese - MOST NY pizza is half-stale shit-tier cardboard with greasy, overcooked cheese falling off it. "Great NY Pizza" is one of the most pervasive urban legends known to man - and it's just about as common as Nessie.
Most of it is shit, and it's just as easy to get a good pie in east bumfuck as it is in New York.
Not sure where you live, but I know of at least seven or eight places in Manhattan (and don't even get me started on Brooklyn) that, compared to Papa John's, Dominos, etc., are little (or in the case of Koronet, not so little) pieces of heaven. Sure there are crappy pizza places in NYC. But you only end up eating one slice (or a portion thereof), then you know better.
...
I'm not trolling, it's a reality check.
Most big software projects I've seen fail hard, like millions and 10's of wasted dollars hard. By comparison you just dont see that very often in big electrical/mechanical/civil projects, which can be equally complex (eg refineries, cruise liners etc).
There are software developers with all sorts of fancy titles - architects, analysts, engineers - and yet they cant get the code right. Usually the root cause is inadequete requirements spec and failure to manage the customers expectations but that's no excuse, there are usually numerous poeple employed in the project process specifically to get those parts right.
Software engineering is still playing catch up, in the sense that most developers and development companies I've seen still dont follow a formal enough process for it really to be called engineering. Usually it's a bunch of computer science graduates having a wild stab at it, and the good ones are closer to artisans than engineers.
Until the entire software industry gets off it's high horse and admits this to itself - and more importantly admits this to the customers, we are going to continue to be dissapointed with the quality.
Yep, it's mostly bad and made bad not solely by the programmers but by the business analysts.
You believe that all of those countries that spend less have better outcomes?
A monopsony for medical care means that doctors and other medical professions get paid less for the time and effort they put in; either quality suffers, or quantity suffers. Both are reductions of the supply of medical care.
Yes. They also are very highly rated by the citizens of those countries.
...please keep producing crap software, as much as you can make.
Personally I earn a *stack* of money every year from clients who are fed up with your paltry offerings and want to get software from someone that knows what they are doing.
If the rest of you start doing a good job then I'm going to lose a lot of clients.
Sincerely,
One of the good ones.
Your quantity is already suffering because doctors act like a guild. How many people that want to be a doctor in the US can't do so because they can't afford it, or can't pass entrance exams that are far more difficult than needed? Why do I need a doctor instead of a nurse for most run of the mill medical care? It's all as silly as needing a license to cut hair.
How many unemployed doctors are out there?
The US doesn't have either a good public system that cares about cutting costs, or anywhere near enough competition to use market forces in the customer's favor. Worst of both worlds.
That's tough because you have to figure out the inflation factor, as well as escalating treatments. If I charge you $500 / pack of cigarettes, that may not be enough to cover modern medical treatment 20 years from now when you develop the cancer. The treatments on which your fee was based may not even exist anymore, so we can't even necessarily just restrict you to the treatment you've prepaid.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
Argue theory all you like, the statistics say the outcomes are better in basically every country with a socialized healthcare system. When facts and theory diverge, I prefer to stick with facts.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
You hit the nail on the head. If a fraternity did half the hazing they make you do to become a doctor, they'd have their charter revoked and their house deeded over to the school. It's no wonder most students would rather rush the Finance fraternity. Initiation is just a simple soul signing-away, and then you get all the free beer you can drink.
They also are very highly rated by the citizens of those countries.
Have you actually lived or spent time in a country with such a system? Canada perhaps or maybe somewhere in Europe? While it's true that one can always find some satisfied patients, even in otherwise flawed systems, my impression after having spoken to many Europeans and particularly to Italians and Russians is that for most people socialized medicine results in a lower standard of care. For example, regular services may be of lesser quality or one might have to wait weeks or even months to receive them or else pay bribes to get decent service. At the high end of the spectrum, advanced or experimental treatments are generally unavailable unless one has money and even then such care often necessitates foreign travel. The United States is a common choice in these instances because the standard of care is excellent and the choices of drugs, devices and procedures are almost unlimited and highly available to those who can afford to receive them. Socialized medicine does control costs, but the standard of care often suffers as a result. What's the point of paying taxes for a socialized health system when one still has to go to the "checkbook" clinic to receive a decent standard of care in a timely fashion? I'm not arguing that the US system isn't in need of changes, but we would do well not to repeat the mistakes of Britain or Italy or any number of other socialized medical systems when considering what sorts of changes to make.
It's all as silly as needing a license to cut hair.
You will observe that in both cases, medicine and cosmetology, the practitioners lobbied for the own licensing and regulation so as to restrict entry into their respective professions. It' reasonable to have some licensing for medical care, and possibly even for cosmetology, but many qualified people choose not to enter the medical profession due to the overly restrictive licensing rules designed by the existing doctors to severely limit supply and protect the wages of existing members at the expense of consumers who bear the costs of an uncompetitive market for health care services enforced by overly restrictive government regulation.
Your impression is wrong. While socialized medicine does have it's own negatives, quality of care is much better in Canada and the majority of Europe. Almost universally. The facts do not support your argument.
Sooner or later the complexity we create will be too great for human intelligence to deal with. And not just in software.
E Proelio Veritas.
My back end and close-to-the-metal code is always much more solid -- and easier to write -- than UIs. I feel I'm much better at anticipating what a computer is going to do that what a user will try.
When it's on the Internet, it's either correct, or it's a catastrophic security failure waiting to happen.
Believe it or not, there are some industrial and embedded computers out there that are by design not on the Internet and in many cases, aren't capable of being put on an IP-based internet without major software changes and possibly even hardware changes.
Heck, most consumers own that will never be on the Internet, including some that could kill if they malfunction:
* Until recently, "smart" thermostats weren't able to be remotely accessed, but if they malfunction they can cause a house to get very hot or very cold, possibly killing a medically fragile person.
* Microwave ovens, which if the timer malfunctions can cook food to the point that it starts a fire.
* Automobile computers, which until recently couldn't be remotely accessed. If these malfunction, brakes can fail or be mis-applied, engines can rev, and other potentially deadly things can happen.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Here's a very plausible explanation:
http://www.nanex.net/aqck2/3525.html
You mean like "a local place which has DIVINE pizza"?
Wow, if only I had taken that into account on my list.
If only I had put that at the top.
If only someone had read my post.
See kids, this is what thin-crust New York style does to you.
So instead of doing anything to increase the supply of doctors or medical care, we'll create a new system where the we have some single payer who simply pays less.
Econ 101: When you reduce the price paid without changing the supply curve, the market equilibrium shifts to a point on the supply curve with a lower "quantity". For medical care, quantity translates to availability and quality. You might end up with good doctors but a long waiting period, or available doctors who aren't as good. Depending on how much one values one's own health, that isn't a good tradeoff.
Does it really take a college education to realize that single payer does nothing to actually improve medical care? It's just a way of choosing to do without.
Lies, damn lies, and statistics.
Facts are one thing. Opinions on how to interpret the facts are yet another.
Stats don't say anything of themselves, especially when it comes to something as difficult to quantify as human health. When it comes to comparing healthcare of different countries, what stats are you comparing? What stats are left out in the comparison? Your post is data free. Good for you if you believe it, but you have provided no reason for anyone to agree with you.
And ... ? Do these same citizens have experience with America's healthcare system? No baseline of comparison?
A vegetarian may really really enjoy their veggie burger, but it doesn't mean that I'd take it over a cheeseburger. It may be tasty in its own right, and certainly better than nothing, but their preferences are not mine.
How another country's citizens feel about their own healthcare system doesn't provide enough data to demonstrate objective superiority.
Why do you assume that if the US tried to implement socialized healthcare, it would end up like Cuba's? Why wouldn't it be similar to a nation whose healthcare system works?
You're approaching it with the mentality of "Oh, we can't do anything Canada can do. Maybe we'll try to see if we can match Cuba instead." Do you have so little faith in the ability for Americans to do things better than Cuba?
And by now the psychopathic boss is standing by your cubicle, red in his face, pounding is fist into your cubicle wall, and YELLING: DELIVER! DELIVER! I WANT DELIVERIES!! NOT BEAUTIFUL CODE!!.
Well structured code does not have to be beautiful, it can be quick... obviously some structure suffers as a result but less than you would think.
Unlike Test First programming which imposes a huge up-front cost leading to exactly the effect you describe, simply writing well-structured code is something that is a skill you can fit into the most absurd of schedules to make the result better.
I have been on projects with exactly those pressures and still produced a code base that was suited for growth.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Forget corporate software, end-user software is just as bad. Consider something popular like ... I dunno, let's say Windows.
You see sloppiness every day. Things like:
# The file copy process. This remained basically the same from Windows 95 through to XP. Run into a locked or corrupt file? It kills the *entire* copy operation because of one bloody file, even if you were in the process of copying a thousand files. One uncopyable file doesn't mean all the files are the same way, this is just extremely lazy programming. Windows 7 has finally improved things a bit, but it still doesn't compare to far more usable replacements like TeraCopy (seriously, try it out, you will never go back).
# The command window. You are stuck with a very low maximum width. Why? Why can't I resize it to full-screen? Again, lazy programming.
# UI elements hanging on background processes. Open a network share, attach a USB drive, insert a CD, and what happens? Everything grinds to a halt, because the UI is waiting for something to load. Worse, it doesn't even provide any indication, it just locks up and you have to sit there and wait for whatever's holding up to finish. Lazy programming and lacking foresight.
# Internet Explorer, enough said (yes, IE9 is still crap)
I could go on, but I don't have all day.
And have not yet read this email! Though generally speaking I do not complain about it, I SUFFER IT. My search capacity in my own computer has decreased steadily from Win98 to this one. I can barely find anything now. I even feel like MS is like mimicking what I do while waiting for a team of programmers to advance it further... But anyway, compared to any other Human product, software manufature is still **on the making** and the least understood of all productive activities, though you have many experts who know why you are not as good as you think and what are your errors and how EXACTLY must be done, right?
No, it hasn't. Ever been to Cuba, where you get an aspirin for free, for everything because that's all they have?
I call bullshit...
A better comparison is the health care systems of say, Japan, Canada or Israel... or almost any other developed country for that matter.
...there is a point to comparison with Cuba here - and it's something you dislike so much you had to resort into lying: you could never accept that a socialist country has done something better than you do in USA.
Anyway, I know the man is a populist, but still the documentary film Sicko is quite worth watching - it has a part where they get "aspirin" from Cuba too ;)
In capitalist USA corporations control the government.
You go ask someone living in one of the "nordic welfare states" - someone like, umm, me... ah yes, I live in Finland - and we have socialized health care. Watching the documentary film Sicko really makes me sick, in a way that even our health care system can't help :(
In capitalist USA corporations control the government.
Yanks should try and have a pizza in Italy - and no, 4rth generation Italian-American stereotype doesn't make it an Italian pizza.
But I don't know if you people would actually even like it - I kinda have an image of Americans loving their pizzas which would be shunned by Italians and maybe Yanks would not even recognize the Italian ones as good pizzas... but then, this is just my imagination... And I'm Finnish, but I've been to Italy and my papa was also big on Italian cuisine so I've had quite Italian pizzas at age of 3 at rent apartment in Finland...
In capitalist USA corporations control the government.
As Finnish citizen, I confirm this.
In capitalist USA corporations control the government.
By who's measure? The people to whom I've spoken all complained about nearly every aspect of their experience from the time spent waiting, to the way the doctor set their broken arm, to the cleanliness of the facilities, you name it. I suppose that it's possible that I just happened to meet only those few people who had bad experiences, but I doubt it. The bottom line was that people were dissatisfied with the care that they received. They thought that it could have been much better had they gone instead to the private clinic and paid out of pocket. Now, the doctors might say that the care was good if the arm healed and didn't get infected along the way, but that doesn't take into account the patients' experience. Who gets to decide whether or not the care was "good quality"? It would seem that the one who pays the bill decides that. In a country that mandates socialized medicine, they probably don't care if you thought the doctor was a butcher as long as you recovered, but would you chose to go back to that same doctor again if you were paying the bill yourself? I'd think not.
Single payer?
In Finland we have free/cheap (you get billed, but if you are unemployed the social security system covers your public health care costs and your medicine) socialized health care system - and we have a well doing private sector as well, with healthy competition. It's a very healthy system.
In capitalist USA corporations control the government.
By literally any metric you care to use, other first world countries have far superior health care. And they spend much less to get that health care.
Surveys consistently show that people in countries with socialized health care are much more satisfied with the quality of their medical care. Patient outcomes are better. Hospital stays are fewer, and for a shorter duration. Life expectancies are higher. Infant mortality is lower. Preventable diseases like diabetes are lower.
You also seem to be making the assumption that because we have a market-based health care system that those same poor anecdotal experiences don't hapeen. My grandmother once passed kidney stones in the emergency room of a hospital because she was waiting there for 6 hours. A close friend of mine cut finger off slamming it in a car door, and the surgery was completely botched leaving her with a significant amount of pain. These things happen happen all the time in the US.
The idea that a market based health care system is superior is laughable. If it was superior, we would be healthier!
In the context of this discussion, an earlier post claimed single payer would fix all of the ills of America's health system.
It's bullshit, because all single payer does is create a monopsony and reduce the amount of medical care bought. It'll be cheaper, but it won't be better.
A policy that encourages an increase in the supply of medical care is the only type of policy that can claim to reduce prices *and* improve quality of care. (ex: Encourage training of more doctors/nurses -> higher supply of medical personnel to meet demand for their services)
All I want here is for people to understand the cause and effect they're playing with. If you're happy with your country's healthcare system, great. You'd be just as annoyed as I am when people talk about how to improve it while showing ignorance of how it actually works.
http://www.openmedicine.ca/article/view/8/1
http://www.commonwealthfund.org/Publications/Fund-Reports/2010/Jun/Mirror-Mirror-Update.aspx
http://umaine.edu/ble/files/2011/01/US-healthcare-system.pdf
That covers three different dimensions for measurement, and we lose in every one.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
1) It's like the old adage; fast. cheap, or good; pick two. If you're lucky. If not you get only one. Or zero.
2) Unlike other engineering disciplines where you have to pass a licensing exam, in "software engineering" there aren't established standards equivalent to the crush strength of asphalt or the melting point of tungsten which you have to at least know exist and can be looked up in order to be accepted as a real engineer in the chemical, mechanical, aeronautical, hydraulic, automotive, or whatever other real engineering sense. I wouldn't let a high school kid who taught himself mechanical engineering in his spare time design me a roller coaster; i know quite a few folks who should know better who had their cousin in high school who "taught himself computers in his spare time" design for them a billing system or inventory system or something of that ilk.
3) writing code is more like writing music. and there are general concepts which help you write good code just like there are general concepts that help you write good music. but writing a VBA macro for excel is a far cry from designing a pentode audio amp, to pick two tasks of approximately equal degree of difficulty, for those who are marginally facile in the relevant disciplines; like having a single course under the belt.
Star Trek transporters are just 3d printers.
You can not have successful single payer unless you also have single provider. Multi-million medicare frauds are common with quarter billion frauds not unheard of. Single payer will be twenty times bigger than that. Government will have to employ all doctors and nurses as civil servants and all medical devices supplied by government contractors. Imagine the VA for everyone.
Are there no allowances to be made for different lifestyle and cultural choices, independent of what sort of health care system exists? For example, we Americans eat lots of red meat, high fructose corn syrup and trans fats or at least some of us do because approximately 2/3 of all US adults are now overweight with a substantial percentage of those being obese. No matter what the quality of health care system, those independent choices are going to worsen American health outcomes as compared to say Japan or other nations where highly refined carbohydrates and meat are less available. Thus, It's a mistake, in my estimation, to attribute longer lifespans or better health outcomes solely to the health care system because it tends to make the American system look worse than it actually is while at the same time making others look better than they really are. These factors are known to be difficult to control for when making comparisons to other health care systems.
BTW: many Americans are well aware of the problems in the average emergency room. In fact, it's often better, if you have a choice, to arrange for treatment at a private clinic or even an urgent care facility instead. Their wait times tend to be much shorter, because they only admit paying patients, and for the price of a few hundred dollars cash or credit you can have your broken bones set, bullet fragments removed, wounds stitched and even receive minor surgeries. If you still require more extensive treatment, they can send you on to the hospital afterwards, but without being admitted through the emergency room which again lowers overall costs. Good care at reasonable prices can be found here in the US, provided that one knows where to look and how to ask.
Well, I can see no reason to disagree with what you are saying on this post, so at least that far we can fully agree :)
In capitalist USA corporations control the government.
To a certain extent, yes, there are differences in culture that are independent of the health care system. Preventable disease like diabetes and heart disease are largely dependent upon lifestyle choices like diet and exercise.
But a lot of that difference can also be attributed to the way the health care system in the US is run. It is not a holistic system. Because health care is so expensive, most people only go to the doctor when they are very ill. On top of that, most private medical insurance does not cover much in the way of routine checkups or consultations with nutritionists/dietitians/etc, therefore the majority of people do not have access to those services without paying a hefty fee. If people had free and easy access to those services, many would make different choices regarding their diet and overall health.
A lot of the other metrics like patient outcomes, duration of hospital stays, infant mortality and the like I think are completely valid metrics to directly compare two countries' health care systems.
And I remain unconvinced that the private health care system actually results in increased choice and competition most of the time. My private insurance charges drastically different rates for in-network and out-of-network care. We have two different major hospital systems in my city. One is in-network and the other out-of-network. If I were injured and needed to go to the hospital, I wouldn't choose the hospital that is closest or the one that provides the best service. I would choose the hospital that was in my network because that's what my insurance covers. I'm not making that decision, some bean counter in my insurance company is making that decision for me. And there are many, many places around the country where there is only one hospital or one hospital system available.
Yes and no. NYC is full of shitty pizza places, but there are also some exceptional ones. You really have to know where to go. Hint: not one of the 9000 Ray's clones.
Contrast this with the Midwest, outside of Chicago you're lucky to do better than Dominos.