TL;DR: Small coding errors can cause big problems for developers, yet they are spending less of their time and resources on testing. Even the most sophisticated systems are vulnerable to simple software coding errors. A layered approach to app development that includes cloud-based services such as the OohLaLog log-management system reduces the chances of a little mistake having catastrophic consequences.
Buggy code can cost lives. In 2000, a radiation-therapy machine delivered higher-than-expected dosages, killing eight patients and injuring 20 others. The cause: a race-condition bug in the control software allowed technicians to miscalculate the doses.
A race condition -- where processes execute out of sequence -- was also blamed for the 2003 power outage that affected 50 million people in the Northeast U.S. and Canada. A bug in a software upgrade sent conflicting inputs in status messages that shut down AT&T's switching centers back in 1990. The outage resulted in the loss of 75 million calls and 200,000 airline reservations. Rounding errors, failed format conversions, and other all-too-human mistakes have caused the loss of rockets and satellites dating back to the 1962 crash of Mariner 1 less than 5 minutes after launch.
Even if you're not programming a life-or-death application, a careless coding error can have catastrophic consequences for your organization. Take, for instance, the $25 million fine levied by the Securities and Exchange Commission against investment-services firm AXA Rosenberg. The company's quantitative investment model contained a programming error that disabled an important risk-management component. AXA Rosenberg executives learned of the error but failed to disclose it or patch it in a timely manner, causing investors to lose $217 million, according to the SEC.
Last June bad coding was blamed for a 35-point drop in the Dow Jones Industrial Average. As Forbes' Leo King explains, the Institute for Supply Management's monthly manufacturing purchasing managers’ index inadvertently used the seasonal adjustment from the earlier month. Analysts interpreted the erroneous report as indicating a slow-down in manufacturing growth. (The stock market's negative reaction to the report was quickly corrected.)
The 'terrible' state of modern software code
In a subsequent Forbes article, King describes the "terrible state of software code" in the financial industry. One financial services analyst points out that as trading systems become more sophisticated, greater demands are placed on developers. At the same time, organizations are looking for ways to speed up development, which often translates into less testing rather than more.
The solution is to integrate testing and quality assurance at each stage of an "agile" development process. Cloud services such as OohLaLog automate code testing and offer fast troubleshooting from a single dashboard.
Cloud services complement and integrate seamlessly into an agile-development philosophy. A key component of agile development frameworks is continuous testing. For example, in the Scaled Agile Framework (SAFe), code quality is one of four core values, along with alignment, program execution, and transparency.
"Test-First" is one of the six practices in SAFE's code-quality component. It encourages development teams to envision the system's behavior before writing any code, and to base their test strategy on the team's understanding of the system requirements. Test-driven development creates the tests first, observes failed tests, and then writes the minimum code necessary to pass the test.
Similarly, acceptance-test-driven development determines acceptable system behavior based on the client's specifications, and then converts the behavior into an acceptance test that is modified to match changes in the system during development and after delivery.
The buddy system translates into fewer coding errors
Another of the code-quality practices is "Pair Work," which stations two developers at each workstation. While one codes, the other checks and enhances the code. The two switch roles regularly. In practice, pair work takes many forms and doesn't necessarily entail two coders joined at the hip throughout a project. The key is to ensure as many pairs of eyeballs as possible examine the code.
On the Insurance & Technology site, Sanjay Kaniyar, Amit Rahul, and Philip (Travis) Wiltshire cite the results of a recent survey by McKinsey that demonstrate the benefits of pair programming: time to completion was cut by 20 percent, and software defects were reduced by 40 percent. By creating the tests first, less unnecessary code is written, which avoids what the authors call "gold-plating." Developers spend more time working on the functions that are most important to users.
OohLaLog's Cloud log management services reduce troubleshooting time for databases and systems by up to 75 percent. OohLaLog incorporates stack tracing, pattern recognition, and dynamic metrics for simple and efficient interactions with log files.
Developers can view Syslogs, app logs, and DB logs in a single OohLaLog dashboard they can set up in just a few minutes. Specific events can be tagged and counted over a particular period. Individuals and teams can be notified when thresholds are met