Who and How Much Pays For the Errors of Programmers?
Modern programmers live in an interesting time when the software penetrates literally into all spheres of human life and begins to exist in countless devices that are densely included in our everyday life. Now no one is surprised by the programs in refrigerators, watches and coffee machines. However, along with the triumph of convenience, people’s dependence on intelligent technology is also growing. The inevitable consequence: the reliability of software comes to the fore. It’s hard to scare someone with an enraged coffee maker, although it can do a lot of mischiefs (liters of boiling coffee flow down your snow-white marble countertop. But the idea of growing requirements for software quality is important, so let’s talk about errors in the code, which entailed a significant expenditure of time and money.
The purpose of the narrative is to fight against the idea that defects in programs can be treated as negligently as before. Now, errors in programs are not only an incorrectly drawn unit in the game, now the code depends on the safety of the property and the health of people. In this article, I want to give some new examples of the need for a tremulous attitude to the code.
It can not be denied that sophisticated programs are becoming increasingly active in our lives: smartphones controlled by a smartphone, gadgets equipped with such functionality, which 10 years ago did not have to dream and, of course, more complicated software in factories, cars, D. Any program is created by a person and the smarter it is, the more dangerous it is.
Let’s talk about the money lost due to errors in the software, and the growth of our dependence on the code.
The satellite Mariner 1 in 1962 was to go to Venus. Starting from Cape Canaveral, the missile almost immediately deviated from the course, which created a serious threat of falling to the ground. To prevent a possible NASA disaster, it was decided to launch a missile self-destruction system.
- The Audit Commission conducted an investigation, during which it was revealed: the cause of the accident was a software error that caused incorrect control signals.
- The programmer incorrectly translated the written formula into computer code, skipping the macron or underscore (which means “n-th smoothing the derivative of the radius R by the time”).
- The program even perceived minor changes in speed as very significant and conducted a course correction (source).
The price of the “missed hyphen” is $ 18 million (at that time).
Russian GPS, sinking to the bottom
A vivid example of how millions of dollars can be lost due to a program error is a relatively recent occurrence. It would seem that in the 21st century there is everything necessary to write reliable programs, especially if it comes to the space industry. Experienced professionals with excellent education, good funding, the ability to use the best tools for software verification. All this did not help. On December 5, 2010, the Proton-M rocket with three Glonass-M satellites, a Russian analog of GPS, fell into the Pacific Ocean.
- The cause of the accident, after completion of the investigation, was voiced by the official representative of the Prosecutor General’s Office of the Russian Federation Alexander Kurennoy: “It is established that the cause of the accident was the use of an incorrect formula, as a result of which the mass of the oxidizer of the booster block of liquid oxygen charged to the tank exceeded by 1582 kg the maximum permissible value, Carrier to an unclosed orbit and its fall into the water area of the Pacific Ocean “(source).
- An interesting moment in this story is a document about the need to adjust the formula was, but it was written off as executed. The leadership did not bother to check the implementation of their instructions. All persons involved in the accident were brought to criminal liability and large fines.
But this does not compensate for the loss, which amounted to 138 million dollars.
Automobiles & Motorcycles
Back in 2009, Professor of Informatics at the Technical University of Munich, an expert in software in cars Manfred Bra, said: “The premium car software contains about 100 million lines of code” (source). It’s been eight years since that, and it’s not necessary to be a fan of the Top Gear transmission, to notice: modern cars are real intelligent machines.
- According to the same expert, the cost of software and electronics in the car is about 40% of its price on the market. And this applies to gasoline engines, what about hybrids and electric cars, where this value is approximately 70%!
- When the electronic filing becomes more complicated than the mechanical one, the responsibility of software developers increases. A bug in one of the key systems, for example, braking, presents a much greater danger than a broken brake hose.
Get behind the wheel of modern comfortable and “smart” cars or drive on old school, but understandable machines? To solve to you, I offer a small selection of bugs in the software of cars.
And again Toyota
Japanese Toyota cars have a positive reputation, but periodically the media receives information about the recall of a number of cars. In our blog there is already an article about a program error in Toyota – “Toyota: 81 514 violations in the code”, but this case, unfortunately, is not an isolated one.
- In 2005, 160 thousand Toyota Prius hybrids of 2004 and the beginning of 2005 were recalled. The problem was that the car could stop and stop at any moment. The elimination of the bug was spent about 90 minutes per vehicle or about 240 thousand man-hours.
Chrysler and Volkswagen
In May 2008, Chrysler recalled 24535 cars Jeep Commanders 2006 release. The reason is a software error in the automatic transmission control module. The failure led to an uncontrolled stop of the engine.
In June of the same year, Volkswagen recalls about 4,000 Passat and 2,500 Tiguans. Here the error in the software affected the increase in engine speed. The tachometer readings started to creep up with the air conditioner turned on.
- Needless to say, the process of recalling cars is associated with huge financial costs. But for such large manufacturing companies, it is much more terrible not for monetary losses, but for the decline of consumer confidence. With huge competition in the car market, one such oversight can result in very, very negative consequences. Restoring the reputation of a reliable manufacturer is not an easy task.
Above it was about ordinary cars, not the most recent years of production. As you can see, even in them, software errors are possible, what can we say about actively popularized environmentally safe electric cars.
Let’s talk, of course, about Tesla Model S. May 7, 2016, Joshua Brown, famous for his videos on YouTube, dedicated to the eulogy of an electric car, got into a car accident. He was behind the wheel of the Tesla Model S. Being 100% confident in the intelligence of the machine, he trusted the autopilot. The result of trust is tragic – from the injuries, Joshua died on the spot.
- The catastrophe was widely publicized. The investigation began. It was possible to establish that, apparently, Brown himself did not follow the road, and the autopilot encountered a situation that was not reflected in its program code. Before Tesla Joshua, a truck with a trailer was moving. The car planned to perform the maneuver – the left turn, accordingly, it was required to slow down. But Tesla, riding behind, did not begin to break because The autopilot systems did not recognize the object ahead.
- It happened, most likely, because of the bright sun. The rays were reflected from the trailer and the autopilot perceived the truck as one with the sky. In an official report, this was explained as follows: “Tesla’s automatic braking systems are a collision avoidance technology in rare cases and are not designed to perform reliably in all crash modes, including collisions resulting from track intersections.” (Source). A full report of the accident is freely available.
- In other words, the autopilot is designed to help the driver (a perfect cruise control, roughly speaking), and not replace its functions. Of course, such an excuse did not save Tesla’s reputation. Work on improving the software continued, but the Tesla Model S was not withdrawn from the roads.
- Representatives of the company gave the following road statistics: “For every 90 million miles of the road passed, one person dies.” In contrast, people drove 130 million miles on Tesla’s autopilot before the first death was confirmed, now this figure has risen to 200 million. ” (a source)
On the one hand, such statistics show that the electric car is safer, but are you ready to entrust your life, the lives of passengers and other road users to the program?
- And this is not a rhetorical question. Judging by the news of the exchange, despite the sensational accident, Tesla shares rose 50% since the beginning of 2017. Two important factors contribute to this: the popularity of movements advocating for the improvement of the world’s ecology, and the high personal rating of the head of Tesla – Ilona Mask.
Perhaps the examples given in the article will seem too epic. Of course, only tragic cases are widely publicized. But I’m sure that every software development company has a story about how just one mistake caused a lot of problems, albeit on a local scale.
- Is it possible to find the culprit? Sometimes yes, sometimes no. But the point is not to find the last one and somehow punish him. The idea is different – the programs are becoming more complex, they are increasingly entering our life, and hence the requirements for code reliability are growing. The price of standard errors increases, the responsibility for the quality of code of a heavy burden falls on the shoulders of developers.
- What is the solution? Upgrade the development process. Give programmers helpers – special programs for detecting and eliminating errors. Complex use of modern techniques significantly reduces the likelihood that a bug in the code will not be detected at the development stage.
We wish you to avoid mistakes, and your projects will never get into a collection similar to the one given in this article.