Now, if you’re just some random programmer making a crappy application for your final project, then this really is no big deal. No one cares except you and the worst possible thing that could happen is that you might crash your own computer. So obviously, the worst programming mistake ever made cannot be made by some scrub like you or me. The real contenders are those programming errors that were in major software applications or possibly in major government projects that possibly caused millions of dollars to be wasted or caused major hacks to be possible.
It is possible that we are not aware of the worst programming mistake ever made, as it may have not been discovered yet or it may have been kept quiet by the company/corporation that discovered it, in order to save their own skins or to hide the vulnerability before they have fixed it. But as far as known programming mistakes go, I’d say that the one that caused the deaths of several people from the Therac-25 should go down as the worst.
The Therac-25 was considered to be a “radiation therapy machine”. Radiation therapy is known to be an effective way to treat many different forms of cancer, however, it is not exactly great for your body. Essentially, radiation therapy kills off whatever cells it is targeted at‒cancer cells or not. Therefore, it is essential that the radiation is targeted effectively to parts of the human body that actually need to be treated, so as little harm is done as possible. Unfortunately, when the Therac-25 was released in 1982, it contained several fatal software bugs that caused the death of six patients in 1986 and 1987. There are quite a few things that can go wrong when giving radiation therapy, however, they are all known and in previous iterations of the Therac machines, there were hardware interlocks that prevented them from happening. However, with the Therac-25, the designers got rid of the hardware interlocks and instead favored software safety checks to ensure no faults occurred. Unfortunately for the six patients, the software contained bugs, causing the software safety checks to not operate properly, leading to all six being exposed to an overdose of radiation.
You might be wondering how bugs like this could remain within software designed to treat cancer patients with radiation. Any programmer knows to go through as much testing as possible to ensure that their applications work properly, and major companies even hire people full time to test their software for any issues. Well, the problem was that there was no outsider who independently reviewed the code. There were a plethora of things wrong with the software of the Therac-25, but they all probably could have been prevented if independent code reviewers were brought in to actually test the functionality of the machine. Some of the issues were caused by pure laziness. For example, when an error code appeared, the person monitoring the machine might see the error code...but the user manual did not explain the codes...so the operator just ignored the error. Obviously, these design flaws would have been exposed by independent quality testers, but alas, it was not done and six souls were taken away because of it.
While you may not be a developer of a radiation machine, I hope that this deadly example shows you why you should always test your code and put it up for review. Scientific journals and articles are subject to peer review before being published in reputable places like Scientific American. Code is not necessarily subject to the same kind of quality assurance as scientific articles. The company you work for may have some kind of quality assurance within the company, but they may not have a third party that also tests the quality of their software. It is extremely important that they do however, especially if they are in the business of taking care of humans. So in the end, just make sure that you learn from the mistakes of others as much as possible before having to learn from the mistakes of yourself.
Programming Languages and Resources for Web Developers
Discussed coding languages are well suited for those interested in pursuing a career in web design and development; however, other options are mobile App design and development, system admin and software engineering. It is advisable to consult with an IT counselor to understand what options best fits your skills. For instance, if you want to be a software engineer, learning HTML and CSS might not fit the bill. Here is an excellent article for learning more on coding and technology career roadmap. Once you know what career path you wish to pursue, you can make a plan on what, when, and how to learn. There are lots of online resources for learning coding and technology in general. For teenagers and high school students, High School Technology Services offers variety of hands-on training. For adults and professionals, Coding Bootcamps and DC Web Makers Companies offer basic to advance project-based programming and technology classes.