@@olivesantos1840 I think it's just a general statement about people going into politics. It's... not completely unfair, but that's not really cringy in the story.
I can imagine Tom Scott rocketing to the clinic: _ I'm here because of the results. _ But sir, you could just have called. _ I did, and that's why I'm here. Show me the server room.
@@encycl07pedia- Its better then Scott: I'm here because of the results Clinic Emploee: But sir, you could have just called! Scott: I did, and thats why im here. Show me the server room
Contrary to the beliefs of some, software engineers do have sex lives, especially emotionally and cognitively intelligent software engineers, who treat their partners with care and respect. They can actually be quite active, especially in cities like San Francisco, where it's easy for it to seem that the overlap between the sex and tech scenes is nearly universal… until some garage geek from the suburbs gets excited about a subway billboard about syphilis testing.
I work at a retail store where every error is as generic as it can be "Authorization declined" for example. It could mean... -Wrong PIN -No Balance -Chip was bumped -Card was used out of state It's very frustrating to me AND customers.
What's worse is when idiot programmers decide error codes are a good idea after 1980. Error code: 123984JRH. You have to search it. Oh, this means you may have one of ten different issues! Netflix is one of those. Just tell people the actual error. And don't get me started on the error messages that are just plain wrong. It's infuriating as a programmer when you fix the problem stated in the error message and get the same error message because the monkey who designed it was too myopic to see any cases where something else could cause that error to occur. Those are arguably worse than just sitting and waiting on an error code that may never come (looking at you, noscript-less pages).
As a customer, I'm perfectly fine with reporting an authorization error instead of no balance. It's already embarrassing, I don't really want to let everyone know that I'm broke.
@@encycl07pedia- errorcodes are a means of abstracting the error from the receiver. I can't tell you, the customer, the same data that i, the developer, need to investigate the error. Instead i drop you an error number and a time, and at the same timestamp my application logs show me a program-state-dump i can use to dig in. Were i to show you that state-dump i would open the application to various attacks and vulnerabilities from the outside
@@hovnocuc4551 I agree that it shouldn't say you don't have enough money; but it should be more clear on the other stuff: - Can't read the chip. - Card is out of date. - PIN code is wrong. But to be fair, most people who don't have enough money on the card usually have the money on a separate account or have cash. You shouldn't have all your money available on your card.
Reminds me back in the time, when I wrote a program in VB6. I wrote a neat readme and down in "Troubleshooting" I told about an error, which only appears when you don't have the VB runtime installed. Yet, I got a mail asking, what this error number meant.
Tom, I work in HR to help develop better people systems for the manufacturing company I work for (specifically training and workplace safety). I showed your video to a few of my coworkers who were planning on implementing a new occupational health initiative without thinking of the potentially disastrous follow-through consequences, and they have changed their minds and gone back to the drawing board to redesign the program in an effort to reduce the negative consequences. Thanks for summing up my thoughts in a way I wasn't able to in order to make peoples' lives better.
Every season of the Basics has three episodes: one about theory, one about code, and one about the wider world. This is definitely the one about the wider world. (And just to be absolutely clear, the test was negative.)
As a programmer that takes a ton of pride in your work, the worst user interfacing most times doesn't come from a programmer's decision, it comes from a manager or business owner. I promise we're not incompetent clowns who just crap out code. We deal with people every day who care about time and money more than an average person should.
As a developer with over 25 years of professional experience (and almost 40 in all), my experience is that a depressingly large percentage of developers are indeed incompetent clowns.
"Show me something foolproof, and I'll show you a better fool." I heard those words somewhere on the internet a few years ago, and they have shaped my life. You can't think that it will be 'good enough' because it won't.
10 bucks says whoever was tasked with writing the program for that clinic was either paid a shockingly small amount to get the job done as quickly as possible, so their incentive was just to slap something together that worked, or, could have been designed by committee and so many people had their hands in it and nobody bothered looking at the forest through the trees.
Another possibility is that the programmers know about the bug and its on their list of things to fix but they are too busy trying to implement extra "features" that the committee have come up with after the system went live.
Nope, it'll been a large budget because it's govt work, and most of the money will be soaked up by huge amounts of paperwork 'proving that no taxpayers money has been wasted'. This sort of thing is incredibly common for govt contracts so that there's the appearance of transparency and as many people have a finger in the pie so they can use a successful project as promotion fodder.
The most likely cause was this: The lab Tech knows that if you fill a non existent field as positive the Call center will glitch out.. Or the system needs a perfectly normal address. Were one field to be left blank, the system glitches.. As we all know it is not possible to program for all possibilities.. One can only aim for the most likely! And hope, for the best.
@@garrettk7166, Some people break code with the desire to help.. However, almost all code has holes.. I have seen where a patch made more holes than there were before... And one need not "incentivize people". As people will do so, just by being people... Actually you cannot stop people from breaking the system. But you can give positive feedback for when people report a bug..
A couple of years ago I started having alarming neurological symptoms. After many tests and scans I got a call from a specialist who would be taking over my case. At this point I still had no idea what was going on, so I called the number to set up an appointment. The words I was greeted with filled me with dread. "Thankyou for calling neuro-oncology, can I help you?" It turned out that because of a rare genetic disorder I have I was referred to a doctor who had a subspecialty in this disorder, his main specialty was neuro-oncology. So I didn't have brain cancer. But of course the receptionist who set up my appointment couldn't tell me this, so I spent about a week thinking I was going to be getting very bad news indeed. It was very stressful. I mentioned this to my doctor and for some reason they stopped greeting people with that greeting. I mean, a lot of the people calling that number probably do have brain cancer, and you don't want to find this out with a cheery "Thank-you for calling the brain cancer treatment doctors"
If we're going to nitpick code, in most non-scripting languages, strings cannot be checked for equality. Instead, you need a function that compares two strings character by character. Although the function call could be syntactically hidden by operator overloading. It's likely, though, that phone system programming does use scripting languages, aimed as they are at easy use by non-programmers.
With a system that public, it should at least have a generic message as part of the catch-all. "We're sorry, the automated system has experienced an issue accessing your data. Please stand by while we connect you with one of our team." It's always worthwhile to handle edge cases. The only question is: Do you handle them individually, or do you use one giant generic error handler?
IMO, handling errors well is one of the most difficult aspects of programming. My rule of thumb is: individual messages / solutions for "business domain" problems that the user can understand ("The selected seat has been reserved by someone else in the meantime. We have updated your seating plan, please try again."), one general message / solution for technical problems like database trouble or unreachable services or anything else not in the user's domain ("Your reservation could not be processed due to a technical problem. We have already been automatically informed about the issue. Please try again at a later time.") Assuming a typical logging mechanism is in place, technical problems should always be internally logged as errors with internal details of what went wrong, so that the system operator can be notified and so that programmers can figure out the issue. Business domain problems should not usually be logged above info level because they don't indicate that the system is malfunctioning, so they would just create noise for the system operator to sift through and ignore. In the system Tom describes there was apparently a general solution for technical problems and it was even a sensible one (the system didn't just e.g. tell him there was an error and hang up, though that would have been easier on people's nerves). The only issue is that it initially looks to the caller like the "bad news" case.
How's this: if (positive) { //sucks to be you announce(callTransfer); call.transferToRealPerson; } else if (negative) { announce(resultsNegative); call.hangUp; } else { announce(oopsieDoopsie); call.transferToRealPerson; TH-cam.subscribe("PewDiePie"); //I am doing my part! }
@@MedoFortyTwo : A huge gaffe in the system that Tom used was it's saying something like ''Here are your results" when it was not ready to give the results.
I don’t know what’s more crazy in this video, Tom casually receiving a poetic message about the possibility of having chlamydia or everybody in the comments losing their minds about a personal fact of Tom’s life.
5:50 "Deliberately screw things up and see how your code copes" Programming is a lot like science - try to disprove your hypothesis, if you can't, it's probably good.
Literally just had an almost identical experience. Got a text telling me to ring radiology about a scan I had on a suspicious lump. I had the exact same thought, "it must be serious if they're having me speak to a person, and asking me to call on my own time instead of just ringing me". The reason? Apparently their system bugged this morning, and told everybody that's had a scan this week to ring them! As a result, their line was very busy, and for a good hour trying to get through, I was worried I had cancer.
"Far too often a bodged-together system that was just ment to be a test gets rolled out into production..." My mind, reading this as relationship advice: Woah.
Actually, that message “I can't find your result, let me put you through” should be there even if the result is found and positive. But that's not about code but about how to handle such situations.
But then people would get used to hearing "I can't find your result" and assume it's bad news, so the situation would play out exactly the same anyway.
Exactly, IMO this is 100% a feature, not a bug. If the computer only puts you through to a human to give bad news, well then when it says "I'm putting you through to a human" it just DID tell you the bad news. In contrast if it has a chance of just giving ANYONE the human operator, well now who knows?
I think the "sorry. We can't find your result. Please give us a moment." Should be used in all cases that required a human on the other end. This shock-moment shouldn't be there even if the test has a positive result.
Just having a message saying "we have trouble getting the results, we're passing you through" as an edge case for any time the results can't be accessed, seems like the most logical and fair method.
Also possible: The devs actually coded hundreds of specific edge cases that lead to different response ids/audio but doesn't actually supply the audio directly because of the need for possibly hundreds of different national/regional preferences for wording and/or performing the actual voiced responses themselves, and some bright spark on the other end decided, while implementing, that they could save pennies on voice talent by just rolling response 1 through 20 into one vague catchall response.
I recently began working as a Software Engineer at a major company. Millions of people use the systems I work every day and I was faced with a decision that could deeply effect a very small percentage of people who couldn't afford a cell phone and would cause them a LOT of problems. I spent an additional day writing code for these people and I'm glad I did.
I am employed full time to write software for the NHS, and it’s constantly a battle between doing it right or shipping sooner and cheaper... I relate it to how things were built 20-30 years ago. We used to have machines which would last a lifetime. Now we are producing plastic disposable bottom line products. The same is the case for software! Makes me sad and mad! Great video as usual!
I had a really similar experience this summer in the US when I got checked for Lyme disease... I went to log in and they asked me to call the hospital. It freaked me out, until a chipper woman told me that I was all fine. Interesting to learn why this system is the way it is.
GigawingsVideo no it’s a big disease where I live in Upstate New York. It’s mainly transmitted by deer ticks and it’s quite dangerous if you don’t detect it.
@@GigawingsVideo Lyme is a disease that is basically eradicated in the modern world. It's still around in the USA. You might be confusing it with Ligma, which is a made up disease which is part of an immature joke.
Oh good, Tom, you’re back! Some crazy guy claiming to be you from the future has been uploading videos on your channel. I think you might want to change passwords!
"See how you'd attack your own system, explore those failure states" This is why quality assurance and security testing is SO vital! It's so often underpaid, understaffed, and rushed, but these positions and expertise are vital
To add on @@BalthorYT their statement; STDs come from someone and might also spread through non-sexual means. Just because you're a virgin doesn't mean you're safe, necessarily.
Why not just add a catch all error message that says: "I'm sorry, there was an unexpected error accessing your data. We will put you through to a representative. Thank you for holding"
I agree. Seems like it should be a relatively simple recording and implementation, and if it happens enough that the employees call it normal, it's worth fixing (even if it was somewhere that wasn't a health clinic)
By 0:35 "they give me a card with a passcode on it" I totally expected the next thing to be "So I started dialing with random passcodes and listening to other people's messages".
If there was a different message for an error compared to a positive test result, then the message for the positive test result would effectively be the computer telling you the bad news. By the sounds of it, the problem wasn't so much with the code, but with telling the patient that there will be a difference in how the message is delivered depending on the test result - The given method basically results in the patient being told of a positive result by a computer whilst stating that the whole point of the system is that a patient should not be told of a positive result by a computer.
That's what I dipped into the comments to say, i.e. the alleged programming error has the effect of keeping uncertainty (and hope) alive until there's definitely a human available to talk. Thank you for being onto it already.
So that might be intentional design to pass through people more often? So you can't be sure? They might need to crank up that value more if that's the case.
In my software engineering coursework, we had an entire semester of nothing but exploring historical cases like this and going over the consequences and tradeo ffs. I am always a bit surprised when programmers act like this isn't 101 stuff.
Mostly it's not the case of not knowing what to do, but not having the resources to do what you know should be done. That, and an engineering knowledge that peppering your code with handling of "almost impossible" error scenarios (of which there's always plenty) won't make life easier for the maintainers and may by itself introduce hard to understand bugs.
@@clray123 Sure, its impossible to write code that handles every possible situation, and there is usually only time and resources to handle likely situations. But it is possible to have a final, ultimate fall-back error handler that at the very least logs the "almost impossible" occurrence and alerts someone (or something) outside of the system as to what has happened.
@@DerekHohls That single "fall-back error handler" is in fact the only "error handler" you need, apart from the "retry and hope for the best" error handler.
As a software developer of 45 years experience working on IBM Midrange and Windows systems, I give you big "KUDOS" for this post. One of the most important lessons I ever learned was that chiefly, I am a tool maker. I make tools that other people have to use to do their jobs. 'Good enough' is never good enough.
I love the nicely censored 'Oh for **********' also EVERYONE WHO'S SEXUALLY ACTIVE GET TESTED EVERY 3 MONTHS IF YOU HAVE SEX WITH MULTIPLE PEOPLE, OR WHENEVER YOU HAVE NEW PARTNERS!!!
Thank you for instilling a deep sense of responsibility in new programmers. But especially for noting the difference between incompetence and malice. I believe most people are good.
I must only applaud such a thoughtful and responsible thinking, especially coming from a relatively young guy. It gives us hopes for a better and more ethical future. It goes like the old and sometimes felt like "worn out" saying: "If you're going to trouble yourself for doing something, be sure to make it right", not because it's going to show well on your resumé or because in the long run it will turn out to be more profitable "after all", but just because it's the right thing to do. Well done!
Me: *watches this video while writing a JavaScript Rock Papers Scissors game for homework * Also me: *Has a mental breakdown on what consequences might have my program*
Clinic system code messes up... Karen: I need to speak to your manager. Tom Scott: Let me make a 6-minute philosophical video about it and have a million people watch it.
It’s possible that that was intended behaviour, had they publicised the fact that some negative test results are randomly put through to humans it would cause people to panic less when they’re put through to humans. This may have been a mistake in the PR not the code.
Sounds possible - especially as people may have follow up concerns so having occasional calls forwarded to specialist nurses might help catch health trends sooner (or just act as a blind control on whether the system/model works - ie if more aftercare, support, etc is needed)
@@NFMorley I have a feeling that a random sampling sent on purpose to humans would not have experienced the absurd pause Tom got on the line, though. (And I don't know how the system usually works; I'm not in the UK. Maybe there actually is a lengthy pause for everyone.)
I was thinking that too - if every single negative result puts you through to a human and every single positive result doesn't, then there's no difference in having the machine announce you failed the test.
Came to look through the comments to see if anyone else had this same thought. If this is what’s happening, there should be more information given to people saying so. Leaving that out only decreases the effectiveness of such a design decision. That said, I can see such a change being made after the system was already in place. That’s a recipe for half-baked implementations like this one just to fulfill the new requirements and nothing more. This kind of “fix” might even be as simple as changing some numbers or clicking a checkbox. If that’s the case, I can see why no further effort would have been made to record more informative messages.
it's not only for those errors caused by edge cases, tho. it's also about people whose devouted enough to abuse it and sometimes people are lazy or don't have enough time to do such thorough debugging. And sometimes such weaknesses came inherently from the platform that the code stood upon.
Or maybe it's deliberate so that 'you're getting redirected' does not automatically equal 'might as well off yourself' EDIT: Certain websites do it for their passwords. Once in a while they'll reject your good one just to make sure.
My friend just casually mentioned they just had that test months ago; I asked if they ever got results back. They said they never got contacted so they assumed it was negative... I helped them sort it out but that did not mean negative.
I used to work with a developer named Charlie. "Charlie's Law" was if it takes 1 unit of time to develop code for "me", it takes 3× time to develop code for "us" (the team, a group of coworkers) and 3× that amount of time to make it work well enough for "everybody." I think this is reasonably accurate.
I love Tom Scott, especially as I think I want to go into computing since I love coding. Once syntax is out the way, by far the most important area of programming is ethics.
Excellent video, and I agree 100%! As a user experience designer in healthcare, we say similar things all the time to our coworkers. But even we need to be more vigilant, to make sure our “easier” designs don’t have unintended consequences. Thank you for this video.
You're right that developers don't have a crystal ball to tell them of future problems with their code. The developers working on the crystal ball app keep having problems with edge cases. They have to consider *all possible* edge cases because they don't have a crystal ball.
@@rafaelribas1027 The problem is that they are trying to build the crystal ball out of code blocks. They haven't figure out how to get rid of the edges to make it spherical... had they figured it out, they had a crystal ball by now.
As a professional test monkey I can tell you this much, sometimes those problems come up well in advance, but management wants it out rather than fixed.
That’s nothing Tom. Once in the mid nineties I had a phone call from a lab, “would you please come back tomorrow for another blood sample, because your hiv test is positive, ans also other tests, so we’d rather repeat them”. It turned out I only had had mononucleosis and that interfered with the hiv reagents. But someone more anxious than me, probably would not have slept that night 😄
I work for a company making games for kids and every time we go down I just feel like we've made a system with the power to make 10k kids unhappy in an instant. Instability is no joke
The beginning of this video might be the most personal Tom’s got in 10 years
I dunno. More than any lover Tom might speak about, I still feel like the most personal moment was when Tom burned his hoodie.
@@MarkChimes yes. :)
@@p1rgit what's cringy in the ballad of mad capn tom?
@@olivesantos1840 I think it's just a general statement about people going into politics. It's... not completely unfair, but that's not really cringy in the story.
@@MarkChimes excuse me but which video is this?
"No idea. It just does that sometimes."
-Bethesda
its just work
I have chlamydia
And you might too
The computers were programmed
By the guy who made Pro Skater 2.
Is that a bug or a feature?
Yes - Bethesda
Brian C hehehehehehehehehehehehehehehe.
My parents thought I was going to choke when laughing so hard at this joke.
It JUST works.
I absolutely love that screenshot where Tom's response is just "Oh for f***s sake". Comedy genius.
Well It could be
for crying out loud
Or for Pete's sake
Or for all things good and holy
@@comit8077Then it wouldn't be censored.
For f***s sake.... That's probably how it would have happened, yes.
Oh for f***s sake is about the most British phrase ever.
*OH FOR F**K’S SAKE*
I can imagine Tom Scott rocketing to the clinic:
_ I'm here because of the results.
_ But sir, you could just have called.
_ I did, and that's why I'm here. Show me the server room.
😂😂😇
bruh hahaha
_ Sir, why are you carrying a fireaxe?
Why are you prepending with underscores?
@@encycl07pedia- Its better then
Scott: I'm here because of the results
Clinic Emploee: But sir, you could have just called!
Scott: I did, and thats why im here. Show me the server room
Moral of the story: Tom Scott smashes
honestly a terrifying thought
If that's what you want to take from this, then sure
That actually shocked me to hear... Sorry, tom
Apparently the audience of extremely online nerds was not ready for something this extreme
@@heynyquildriver Agreed
If you tell an ex with chlamidya that you're clean, does that count as clapping back?
If you tell them in a video its even better!
Clap is actually a colloquial euphemism for gonorrhea, not chlamydia.
Not bad Chris, but Gonorrhea is "the clap" and not Chlamydia.
@@frankdantuono2594 Yep. An sti. My jokes are rarely all that complex. (Also, my name is Evan, not Chris). :)
Gonorrhea, chlamydia, who cares? what's the difference? The reply was still witty and funny
Roses are red
Violets are blue
That wasn't an intro
I thought Tom Scott would do.
+
1 thousandth like
Contrary to the beliefs of some, software engineers do have sex lives, especially emotionally and cognitively intelligent software engineers, who treat their partners with care and respect. They can actually be quite active, especially in cities like San Francisco, where it's easy for it to seem that the overlap between the sex and tech scenes is nearly universal… until some garage geek from the suburbs gets excited about a subway billboard about syphilis testing.
Mik Scheper Touchy, are we?
+
Roses in the dirt
Violets on the road
Programming is more than
Learning to code
**Learning** (Using "Leaning" leads to a syntax error.)
@@Rationalific Someone has poor variable naming practices.
I'm going to say the n word
Learning to code. You made a mistake there. This message was supposed to be for the masses.
Programming is easier than you think. Take this udemy course
I thought we would sooner see Tom in a blue t-shirt than knowing anything about Tom's sexual life
Considering his knowledge of computers it was almost a shock to learn that this particular attribute was not NULL.
I'm offended, personally
i hate this knowledge so much
AHHHHHH why did you make me visualize that?!?!
Why
Tom in a blue shirt AHHHHHHHHHHHHHHHH ITS AWFUL
@@kwibloupthesomething "oh no, this person had sex" lmao
I work at a retail store where every error is as generic as it can be
"Authorization declined" for example. It could mean...
-Wrong PIN
-No Balance
-Chip was bumped
-Card was used out of state
It's very frustrating to me AND customers.
What's worse is when idiot programmers decide error codes are a good idea after 1980.
Error code: 123984JRH. You have to search it. Oh, this means you may have one of ten different issues! Netflix is one of those. Just tell people the actual error.
And don't get me started on the error messages that are just plain wrong. It's infuriating as a programmer when you fix the problem stated in the error message and get the same error message because the monkey who designed it was too myopic to see any cases where something else could cause that error to occur. Those are arguably worse than just sitting and waiting on an error code that may never come (looking at you, noscript-less pages).
As a customer, I'm perfectly fine with reporting an authorization error instead of no balance. It's already embarrassing, I don't really want to let everyone know that I'm broke.
@@encycl07pedia- errorcodes are a means of abstracting the error from the receiver. I can't tell you, the customer, the same data that i, the developer, need to investigate the error. Instead i drop you an error number and a time, and at the same timestamp my application logs show me a program-state-dump i can use to dig in.
Were i to show you that state-dump i would open the application to various attacks and vulnerabilities from the outside
@@hovnocuc4551 I agree that it shouldn't say you don't have enough money; but it should be more clear on the other stuff:
- Can't read the chip.
- Card is out of date.
- PIN code is wrong.
But to be fair, most people who don't have enough money on the card usually have the money on a separate account or have cash. You shouldn't have all your money available on your card.
Reminds me back in the time, when I wrote a program in VB6. I wrote a neat readme and down in "Troubleshooting" I told about an error, which only appears when you don't have the VB runtime installed. Yet, I got a mail asking, what this error number meant.
_calls number_
“Hello, *Tom.* Your test results are: *Positive,* for not having chlamydia. Thank you.”
Huh. That's really positive news
"Hello, Tom, your negative result is positive. However please note an added negative; you are HIV positive.
@@musicalneptunian oh dear
I got tested for hiv but luckily the results came back 100% positive.
HIV Aladeen
Tom, I work in HR to help develop better people systems for the manufacturing company I work for (specifically training and workplace safety). I showed your video to a few of my coworkers who were planning on implementing a new occupational health initiative without thinking of the potentially disastrous follow-through consequences, and they have changed their minds and gone back to the drawing board to redesign the program in an effort to reduce the negative consequences. Thanks for summing up my thoughts in a way I wasn't able to in order to make peoples' lives better.
+
+
+
+
+
Every season of the Basics has three episodes: one about theory, one about code, and one about the wider world. This is definitely the one about the wider world. (And just to be absolutely clear, the test was negative.)
3 days ago?
Woah it's uploaded today and this comment is posted 3 days ago
Your travelled back in time
3 days ago
@@defaultmesh Tom just wanted everyone to know he was First!!!
And (edited) too hmmmm 🤔
*_WHEN WILL YOU LEARN?!?_*
*_WHEN WILL YOU LEARN, THAT YOUR CODE HAS CONSEQUENCES?!?_*
-sammyclassicsonicfan
As a programmer that takes a ton of pride in your work, the worst user interfacing most times doesn't come from a programmer's decision, it comes from a manager or business owner. I promise we're not incompetent clowns who just crap out code. We deal with people every day who care about time and money more than an average person should.
I just press buttons until the thing I want happens
Preach!
Yes. In my brief experience accuracy should always be sacrificed to speed.
As a developer with over 25 years of professional experience (and almost 40 in all), my experience is that a depressingly large percentage of developers are indeed incompetent clowns.
@@Isaac-eh6uu No.
"Show me something foolproof, and I'll show you a better fool."
I heard those words somewhere on the internet a few years ago, and they have shaped my life.
You can't think that it will be 'good enough' because it won't.
I found the more "natural" your code is, the less edge cases you have. Natural being decoupled mechanisms that are not cross dependent on each other
Douglas Adam’s once said
When designing something foolproof, one must not underestimate the ingenuity of absolute fools
Nothing is foolproof to a sufficiently talented fool.
Guys, I think I've found a job..
"Program foolery tester"
IBM: You can make it foolproof, but you can't make it damned-fool proof.
10 bucks says whoever was tasked with writing the program for that clinic was either paid a shockingly small amount to get the job done as quickly as possible, so their incentive was just to slap something together that worked, or, could have been designed by committee and so many people had their hands in it and nobody bothered looking at the forest through the trees.
Another possibility is that the programmers know about the bug and its on their list of things to fix but they are too busy trying to implement extra "features" that the committee have come up with after the system went live.
Nope, it'll been a large budget because it's govt work, and most of the money will be soaked up by huge amounts of paperwork 'proving that no taxpayers money has been wasted'. This sort of thing is incredibly common for govt contracts so that there's the appearance of transparency and as many people have a finger in the pie so they can use a successful project as promotion fodder.
The most likely cause was this:
The lab Tech knows that if you fill a non existent field as positive the Call center will glitch out..
Or the system needs a perfectly normal address.
Were one field to be left blank, the system glitches..
As we all know it is not possible to program for all possibilities..
One can only aim for the most likely!
And hope, for the best.
@@marlonlacert8133 so the key is to incentivize people to come in and break your system?
@@garrettk7166, Some people break code with the desire to help..
However, almost all code has holes..
I have seen where a patch made more holes than there were before...
And one need not "incentivize people".
As people will do so, just by being people...
Actually you cannot stop people from breaking the system. But you can give positive feedback for when people report a bug..
I've coded so much spaghetti that I put Italy to shame.
*ARDUINO* wants to know your location
wow
wow
That’s Aammoorree
wow
I scrolled through the comments, but did not find this nice piece:
Roses are Red,
Violets are Blue
Unexpected '{'
on line 32.
Makes sense
And only 7 lines in your code
You have too.
aaaaaaaaaaaaaaaa
For me they’ll always be a misspelled word
;
A couple of years ago I started having alarming neurological symptoms. After many tests and scans I got a call from a specialist who would be taking over my case.
At this point I still had no idea what was going on, so I called the number to set up an appointment. The words I was greeted with filled me with dread. "Thankyou for calling neuro-oncology, can I help you?"
It turned out that because of a rare genetic disorder I have I was referred to a doctor who had a subspecialty in this disorder, his main specialty was neuro-oncology. So I didn't have brain cancer. But of course the receptionist who set up my appointment couldn't tell me this, so I spent about a week thinking I was going to be getting very bad news indeed. It was very stressful.
I mentioned this to my doctor and for some reason they stopped greeting people with that greeting. I mean, a lot of the people calling that number probably do have brain cancer, and you don't want to find this out with a cheery "Thank-you for calling the brain cancer treatment doctors"
That was the least expected intro to a Tom Scott video ever
that was obviously the piece of code that said if(name=="Tom Scott") letHimSufferABit
That code has no effect. You either forgot to assign a value or call a function with ()
@@Henrix1998
get a life :)
@@Henrix1998 It is a macro
If we're going to nitpick code, in most non-scripting languages, strings cannot be checked for equality. Instead, you need a function that compares two strings character by character. Although the function call could be syntactically hidden by operator overloading.
It's likely, though, that phone system programming does use scripting languages, aimed as they are at easy use by non-programmers.
@@Henrix1998 Also "Then" (+ "end") and {}
Anyone else notice the "Oh for...." from Tom in response to the lovely poem
Nope.
"lovely"
So to summarise:
A: Handle invalid states with sufficient transparency to your end-user.
B. Wear a condom.
Condoms reduce risk but are not 100% effective against Chlamydia.
Get tested and get tested often.
@@bob53135 It took me a wee second to think what the comment was you were replying too. I was thinking "er, ok then".
@@notdaveschannel9843 a wee second
Got a vasectomy for a reason...
Also about B: He said he got a text message from an ex girlfriend. You are not always using a condome in a relationship.
Oh for [fuck's sake]
I'm sorry but I can 100% imagine Tom saying that.
Me too!
Or there's some special "if patient=="Tom Scott", then mess with him" code in there.
There's got to be more than one Tom Scott out there
Plot twist: that code was written by his ex.
The fact that there is an unclosed inverted comma is painful
@@davidcox2459 There would need to be an AND clause in that case comparing his unique patientId
@@R2Cv1 which unclosed inverted comma?
They must have used "using namespace std;"
Did they also change the IDE font to Hobo Std?
Taliias Why isn’t this the most upvoted comment?
Amazing comment
@@gustavomaganalopez6427 learn c++ then come back
Never do that
With a system that public, it should at least have a generic message as part of the catch-all. "We're sorry, the automated system has experienced an issue accessing your data. Please stand by while we connect you with one of our team."
It's always worthwhile to handle edge cases. The only question is: Do you handle them individually, or do you use one giant generic error handler?
And now I'm gonna erase my post saying the same thing.
IMO, handling errors well is one of the most difficult aspects of programming. My rule of thumb is: individual messages / solutions for "business domain" problems that the user can understand ("The selected seat has been reserved by someone else in the meantime. We have updated your seating plan, please try again."), one general message / solution for technical problems like database trouble or unreachable services or anything else not in the user's domain ("Your reservation could not be processed due to a technical problem. We have already been automatically informed about the issue. Please try again at a later time.")
Assuming a typical logging mechanism is in place, technical problems should always be internally logged as errors with internal details of what went wrong, so that the system operator can be notified and so that programmers can figure out the issue. Business domain problems should not usually be logged above info level because they don't indicate that the system is malfunctioning, so they would just create noise for the system operator to sift through and ignore.
In the system Tom describes there was apparently a general solution for technical problems and it was even a sensible one (the system didn't just e.g. tell him there was an error and hang up, though that would have been easier on people's nerves). The only issue is that it initially looks to the caller like the "bad news" case.
How's this:
if (positive) { //sucks to be you
announce(callTransfer);
call.transferToRealPerson;
}
else if (negative) {
announce(resultsNegative);
call.hangUp;
}
else {
announce(oopsieDoopsie);
call.transferToRealPerson;
TH-cam.subscribe("PewDiePie"); //I am doing my part!
}
Indomitus:
One thousand times YES.
But since the error handling involves transferring them to a human, be generic. What you suggested sounds great.
@@MedoFortyTwo : A huge gaffe in the system that Tom used was it's saying something like ''Here are your results" when it was not ready to give the results.
I don’t know what’s more crazy in this video, Tom casually receiving a poetic message about the possibility of having chlamydia or everybody in the comments losing their minds about a personal fact of Tom’s life.
we're forever a sad and desperate fandom
You can type it binary
Or type it in hex
I just don't believe
That Tom has an ex.
What scumbag would leave Tom?
@@Mikasacusfan Someone who almost gave Tommyboy here the clap.
@@Mikasacusfan you don't know any of those people, let them alone
Good people can still be incompatible, or just have different goals or not meet at the right time.
@@LostieTrekieTechie no, you clown
Tom, did you make this video just to tell the world you don’t have Chlamydia?
I mean, I didn't consider the possibility until now.
After this he's going to make a phone call "Carol, see, I don't have Chlamydia!"
My name is Jack and I do not have Chlamydia
@@jackbauer5386 My name is also Jack, and I also, do not have Chlamydia
Or to tell the world he's not a virgin ;)
5:50 "Deliberately screw things up and see how your code copes"
Programming is a lot like science - try to disprove your hypothesis, if you can't, it's probably good.
But they often use far too diciplined testers
Never ascribe to malice what can easily be explained by incompetence.
Literally just had an almost identical experience. Got a text telling me to ring radiology about a scan I had on a suspicious lump. I had the exact same thought, "it must be serious if they're having me speak to a person, and asking me to call on my own time instead of just ringing me". The reason? Apparently their system bugged this morning, and told everybody that's had a scan this week to ring them! As a result, their line was very busy, and for a good hour trying to get through, I was worried I had cancer.
"Far too often a bodged-together system that was just ment to be a test gets rolled out into production..."
My mind, reading this as relationship advice: Woah.
Woah
Woah
Woah
Woah
Woah
Actually, that message “I can't find your result, let me put you through” should be there even if the result is found and positive. But that's not about code but about how to handle such situations.
That would be a really good way of handling it
But then people would get used to hearing "I can't find your result" and assume it's bad news, so the situation would play out exactly the same anyway.
@@zyill well no they wouldn't because a large amount of the time it would be an actual glitch
Exactly, IMO this is 100% a feature, not a bug. If the computer only puts you through to a human to give bad news, well then when it says "I'm putting you through to a human" it just DID tell you the bad news. In contrast if it has a chance of just giving ANYONE the human operator, well now who knows?
I think the "sorry. We can't find your result. Please give us a moment." Should be used in all cases that required a human on the other end. This shock-moment shouldn't be there even if the test has a positive result.
but it would be a lie... surely not something a clinic wants to be known for
Just having a message saying "we have trouble getting the results, we're passing you through" as an edge case for any time the results can't be accessed, seems like the most logical and fair method.
Also possible: The devs actually coded hundreds of specific edge cases that lead to different response ids/audio but doesn't actually supply the audio directly because of the need for possibly hundreds of different national/regional preferences for wording and/or performing the actual voiced responses themselves, and some bright spark on the other end decided, while implementing, that they could save pennies on voice talent by just rolling response 1 through 20 into one vague catchall response.
All the code needed was: "Congratulations, you have Chlamydia!"
@@garrybogdanho It can be python. Console is text to speech library and log is speaking function
@@adamrezabek9469 Wasn't it just
print "You have Chlamydia!"
in Python?
@@theramendutchman if result == "true":
print('Congratulations, you have Chlamydia')
@@aadisahni Well yes that too
X = 0
If (X = 0)
{
System.out.print("Congratulations you have chlamydia!")
}
I recently began working as a Software Engineer at a major company. Millions of people use the systems I work every day and I was faced with a decision that could deeply effect a very small percentage of people who couldn't afford a cell phone and would cause them a LOT of problems. I spent an additional day writing code for these people and I'm glad I did.
"The real world is not a Trolley Problem."
Tom Scott - 2018
America encountering a deadly global pandemic: "Hold my beer"
I am employed full time to write software for the NHS, and it’s constantly a battle between doing it right or shipping sooner and cheaper... I relate it to how things were built 20-30 years ago. We used to have machines which would last a lifetime. Now we are producing plastic disposable bottom line products. The same is the case for software! Makes me sad and mad!
Great video as usual!
Thanks for reminding me to act conciously when other people are involved.
It's easy to forget that you deal with human beings, not just with code
For some reason the thought of Tom having sex never occurred to me.
Good.
BURN
Oh no
*Tom Scott Rule 34*
@@TheTimesOfOld GET OUT OF MY HEAD
Wow, I never thought I'd hear an intro like that from Tom
I had a really similar experience this summer in the US when I got checked for Lyme disease... I went to log in and they asked me to call the hospital. It freaked me out, until a chipper woman told me that I was all fine. Interesting to learn why this system is the way it is.
Wait, I thought Lyme disease was made up?
GigawingsVideo no it’s a big disease where I live in Upstate New York. It’s mainly transmitted by deer ticks and it’s quite dangerous if you don’t detect it.
@@GigawingsVideo Lyme is a disease that is basically eradicated in the modern world. It's still around in the USA.
You might be confusing it with Ligma, which is a made up disease which is part of an immature joke.
@@lforlight Nope Lyme disease is world wide. Just google it.
@@lforlight Sorry I mistaken Lyme disease with Lynks disease from horror series _This house has people in it_
I work in web quality assurance - breaking other people's code is what puts food on my table.
Out of date food with foreign cooking instructions on ...
Oh good, Tom, you’re back! Some crazy guy claiming to be you from the future has been uploading videos on your channel. I think you might want to change passwords!
*From _a_ future. But I still agree with you, perhaps time for a new password to celebrate the future in 2019. EDIT formatting is hard _:(_
Try dashlane
The king of random reference ?
@@00O3O1B cheers dude, helpful tip - i just installd it then :)
@@00O3O1B I was a bit scared that I'll have to change my password manager until I read that Keepass is fine.
"See how you'd attack your own system, explore those failure states" This is why quality assurance and security testing is SO vital! It's so often underpaid, understaffed, and rushed, but these positions and expertise are vital
“Get yourself tested” Haha, bold of you to assume that I’m not a virgin
Test yourself anyways, who knows where that filthy hand you're seeing has been...
To add on @@BalthorYT their statement; STDs come from someone and might also spread through non-sexual means. Just because you're a virgin doesn't mean you're safe, necessarily.
@@theramendutchman i think that person's statement was a joke mate
@@martinszymanski2607 Even then, it's important to educate people on STDs and the ways they can be transmitted.
@@theramendutchman It almost certainly does though
Weird flex but ok
A surprise to be sure but a welcome one
Even Tom Scott is getting laid 😞
Plot twist: the text was from his mum
I've heard rumours that the clinic's developers got confused and printed the results to STD-out instead of voicing them to the user.
Ten points!
Why not just add a catch all error message that says:
"I'm sorry, there was an unexpected error accessing your data. We will put you through to a representative. Thank you for holding"
I agree. Seems like it should be a relatively simple recording and implementation, and if it happens enough that the employees call it normal, it's worth fixing (even if it was somewhere that wasn't a health clinic)
"It just does that sometimes." is a phrase you never want to hear as a programmer.
By 0:35 "they give me a card with a passcode on it" I totally expected the next thing to be "So I started dialing with random passcodes and listening to other people's messages".
Now I want to do that...
Thank you for existing, Tom.
If there was a different message for an error compared to a positive test result, then the message for the positive test result would effectively be the computer telling you the bad news.
By the sounds of it, the problem wasn't so much with the code, but with telling the patient that there will be a difference in how the message is delivered depending on the test result - The given method basically results in the patient being told of a positive result by a computer whilst stating that the whole point of the system is that a patient should not be told of a positive result by a computer.
That's what I dipped into the comments to say, i.e. the alleged programming error has the effect of keeping uncertainty (and hope) alive until there's definitely a human available to talk. Thank you for being onto it already.
So that might be intentional design to pass through people more often? So you can't be sure? They might need to crank up that value more if that's the case.
In my software engineering coursework, we had an entire semester of nothing but exploring historical cases like this and going over the consequences and tradeo ffs. I am always a bit surprised when programmers act like this isn't 101 stuff.
Mostly it's not the case of not knowing what to do, but not having the resources to do what you know should be done. That, and an engineering knowledge that peppering your code with handling of "almost impossible" error scenarios (of which there's always plenty) won't make life easier for the maintainers and may by itself introduce hard to understand bugs.
@@clray123 Sure, its impossible to write code that handles every possible situation, and there is usually only time and resources to handle likely situations. But it is possible to have a final, ultimate fall-back error handler that at the very least logs the "almost impossible" occurrence and alerts someone (or something) outside of the system as to what has happened.
@@DerekHohls That single "fall-back error handler" is in fact the only "error handler" you need, apart from the "retry and hope for the best" error handler.
As a software developer of 45 years experience working on IBM Midrange and Windows systems, I give you big "KUDOS" for this post. One of the most important lessons I ever learned was that chiefly, I am a tool maker. I make tools that other people have to use to do their jobs. 'Good enough' is never good enough.
I love the nicely censored 'Oh for **********'
also EVERYONE WHO'S SEXUALLY ACTIVE GET TESTED EVERY 3 MONTHS IF YOU HAVE SEX WITH MULTIPLE PEOPLE, OR WHENEVER YOU HAVE NEW PARTNERS!!!
Thank you for instilling a deep sense of responsibility in new programmers. But especially for noting the difference between incompetence and malice. I believe most people are good.
Programming: This time it's personal.
I must only applaud such a thoughtful and responsible thinking, especially coming from a relatively young guy.
It gives us hopes for a better and more ethical future.
It goes like the old and sometimes felt like "worn out" saying: "If you're going to trouble yourself for doing something, be sure to make it right", not because it's going to show well on your resumé or because in the long run it will turn out to be more profitable "after all", but just because it's the right thing to do.
Well done!
It's hard to imagine that Tom, with all the videomaking, world exploration, and everything else, even had time for a girlfriend.
And tom responded "oh for fuck's sake" 😂😂😂😂
Me: *watches this video while writing a JavaScript Rock Papers Scissors game for homework *
Also me: *Has a mental breakdown on what consequences might have my program*
@NotYourGreatestPlan 20 mins later: *ww3 starts*
Watching this while programming a game for a school project was not fun
Clinic system code messes up...
Karen: I need to speak to your manager.
Tom Scott: Let me make a 6-minute philosophical video about it and have a million people watch it.
Why talk to the manager when you can make money
It’s possible that that was intended behaviour, had they publicised the fact that some negative test results are randomly put through to humans it would cause people to panic less when they’re put through to humans. This may have been a mistake in the PR not the code.
Sounds possible - especially as people may have follow up concerns so having occasional calls forwarded to specialist nurses might help catch health trends sooner (or just act as a blind control on whether the system/model works - ie if more aftercare, support, etc is needed)
Why you're not higher in the comments? That was my thought too
@@NFMorley I have a feeling that a random sampling sent on purpose to humans would not have experienced the absurd pause Tom got on the line, though. (And I don't know how the system usually works; I'm not in the UK. Maybe there actually is a lengthy pause for everyone.)
I was thinking that too - if every single negative result puts you through to a human and every single positive result doesn't, then there's no difference in having the machine announce you failed the test.
Came to look through the comments to see if anyone else had this same thought. If this is what’s happening, there should be more information given to people saying so. Leaving that out only decreases the effectiveness of such a design decision.
That said, I can see such a change being made after the system was already in place. That’s a recipe for half-baked implementations like this one just to fulfill the new requirements and nothing more.
This kind of “fix” might even be as simple as changing some numbers or clicking a checkbox. If that’s the case, I can see why no further effort would have been made to record more informative messages.
"no idea. it just does that sometimes" team fortress 2 code in a nutshell
You are the best quality content creator I ever know. Thank you for putting so much homework to come up with such creative and thoughtful concepts
Fast, Good, Cheap, pick two..
Guess which two middle managers pick.
Cheap, they only pick cheap.
@@MazeFrame And fast. They always want it fast. "If I wanted it tomorrow I wouldn't be telling you about it already today!"
@@JimFortune But being fast is just another way of being cheap, as it's less hours to account for (or more "productivity" for those who are salaried).
Yes, pick two and put the other in the "backlog"!
it's not only for those errors caused by edge cases, tho. it's also about people whose devouted enough to abuse it and sometimes people are lazy or don't have enough time to do such thorough debugging.
And sometimes such weaknesses came inherently from the platform that the code stood upon.
Or maybe it's deliberate so that 'you're getting redirected' does not automatically equal 'might as well off yourself'
EDIT:
Certain websites do it for their passwords. Once in a while they'll reject your good one just to make sure.
or sometimes it's like with Microsoft firing their QE staff
It don't have info and send you to Haman so It kind of work.
Roses are red
Robots are silly
You should be much more careful
About where you stick your willie
Remove "much" and "about" and it flows much better
Sebastian Dyson
Roses are red
Robots are silly
You should be more careful
Where you stick your willy
Roses: red; robots: silly --.
Be more careful with your willie!
This one wins
Roses are red
Robots are silly
You ought to be more careful
In whomst'd've you stick your willie
My friend just casually mentioned they just had that test months ago; I asked if they ever got results back. They said they never got contacted so they assumed it was negative... I helped them sort it out but that did not mean negative.
I love in the screenshot it says "Oh for"
Oh for what Tom?
"Oh for fuck's sake", perhaps?
@@Goldy01 fucks sakè
I used to work with a developer named Charlie. "Charlie's Law" was if it takes 1 unit of time to develop code for "me", it takes 3× time to develop code for "us" (the team, a group of coworkers) and 3× that amount of time to make it work well enough for "everybody." I think this is reasonably accurate.
I love Tom Scott, especially as I think I want to go into computing since I love coding. Once syntax is out the way, by far the most important area of programming is ethics.
I'm mildly dissapointed to know as a fact that Tom is not a virgin
Just mildly?
Why tho?
@@aliveslice they feel attacked about the fact that a nerd is actually getting some and living a life outside the internet :P
@@zen608 yup
There's still Scott the Woz
Excellent video, and I agree 100%! As a user experience designer in healthcare, we say similar things all the time to our coworkers. But even we need to be more vigilant, to make sure our “easier” designs don’t have unintended consequences. Thank you for this video.
Thank you for posting this! I love hearing someone smarter than me say the same things I do to my co workers :)
Next week on the Parkbench : “Get some goddamn f*cking protection !”
You're right that developers don't have a crystal ball to tell them of future problems with their code.
The developers working on the crystal ball app keep having problems with edge cases. They have to consider *all possible* edge cases because they don't have a crystal ball.
Crystal balls don't have edges - they are spherical.
@@rafaelribas1027 The problem is that they are trying to build the crystal ball out of code blocks. They haven't figure out how to get rid of the edges to make it spherical... had they figured it out, they had a crystal ball by now.
@@rafaelribas1027 But what if they did? So the extra check for that edge case where the crystal ball has an edge stays in.
@@Theraot was that 'code blocks' pun intended?
I admit, that my inner child laughed deeply that you were trolled by the STI automated service. There is a certain irony to it.
...where's the irony in that?
Tom being worried about having chlamydia is adorable
As a professional test monkey I can tell you this much, sometimes those problems come up well in advance, but management wants it out rather than fixed.
Get some latex, or get the "I'm late" text
Roses are red
Violets are blue
That is their colour
That is their hue
And here I thought Violets were violet.
@@WildBluntHickok gay
of all of the poems of this type I've seen, I feel this one the most. sounds like something coldplay would sing
Was anyone else feeling tense while waiting to hear tom's test results? and then got a relief when they turned out negative.
Guess that was his plan in this talk :)
I'm happy to see these type small but informative videos. They are like life advices 👍🏻
hey tom i want to thank you for filtering the high pitched noise to an unnoticeable level
YES
Roses are red
Violets are blue
Your videos are good
Keep making new
Thank you for this video. Now I will write "This is an experimental Project" under every fun project.
It seems to me that "automated response if good news, personal response if bad news" is semantically identical to "automated response."
Tom having an ex is like seeing your teacher at the supermarket
The mental concept of “Tom Scott had sex” is very interesting to me.
“I will always bet on incompetence rather than malice” is such a great way of looking at the world.
"Oh for christ's sake, not again Karen"
Milerski Karen with a K I see
That’s nothing Tom. Once in the mid nineties I had a phone call from a lab, “would you please come back tomorrow for another blood sample, because your hiv test is positive, ans also other tests, so we’d rather repeat them”. It turned out I only had had mononucleosis and that interfered with the hiv reagents. But someone more anxious than me, probably would not have slept that night 😄
If it happened to me, I'd completely shutdown inside.
I work for a company making games for kids and every time we go down I just feel like we've made a system with the power to make 10k kids unhappy in an instant. Instability is no joke
"So my ex texted me saying I might have the clap *NO WAIT DON'T LEAVE* "