Although it is easily overlooked, being a software engineer comes with a great responsibility. According to Robert C Martin, a regular new car comes with 100 million lines of code, where he jokingly adds ‘written by a 22-year-old at 3 o’clock in the morning’. It scares him, and if you are tech savvy I am sure you share that opinion. Although funny – this is NOT a joke—being a software engineer does put you in situations where you write code at 3 in the morning for a piece of software that affect the lives or at least the livelihood of people.
Bad software has killed people, and bad software will undoubtedly kill more people in the future. The purpose of software is to make the lives of human beings easier—and it is generally very successful. People interact with software hundreds of times a day, and according to some predictions, there will be 10 trillion devices serving 9 billion people by 2025, all containing thousands of lines of code. Some of them written by 22-year-olds at 3 am in the morning.
Your responsibility as a software engineer should be taken seriously. Granted, not every one of you works on software where a bug may potentially take lives, but all of you work on software that can greatly affect lives and the livelihood of people. Knights Capital Group nearly bankrupted in 30 minutes when a bad trading algorithm was launched—they lost 450 million dollars!
The software industry is young—we have only been doing this for about 50 years, and we are still finding out how to improve. CPU’s now contain more cores, we utilize the cloud to leverage parallelism—new exciting tools let us create software faster than ever before. Agile processes are lean and increase productivity. I’d love to read up on research on this, but the number of lines of software written in the world probably double every couple of years. Continuous Integration and virtualization help us release faster than ever before! More lines of code are released to production so more bugs are released than ever before.
So what can we do?
Good development practices are a good start. There are plenty of developers out there that still see tests as a nuisance, or even worse – refuse to write them altogether. Businesses that push developers to go fast, and not giving them the time to refactor code, write tests, alter their design, or otherwise maintaining high-quality standards. As a developer you have a voice—Don’t ever let someone make the decision to push something to production when you are not comfortable releasing it. Raise your voice!
In most development projects you work on it is easy to hypothesize a multi-million dollar mistake. If your software works in the financial industry misrepresenting the truth can lead to poor investment decisions. Software serving the healthcare industry can lead to claims and worst case scenario death. A bug in an accounting package could lead to bankruptcy and a bug in any commercial product could lead to reduced revenue, no sales at all—or even worse claims for not delivering what was promised. All these scenarios greatly affect the lives of the people that work for the business.
Even when you practice your craft superseding industry standards—bugs can occur. When you wrote the code that eventually was responsible for killing someone, you better make sure that you developed the software maintaining professional industry standards. Management is not going to be responsible as they may have no professional software engineering background and are not aware of them – They like to move fast and tick boxes. It is your responsibility to educate them and raise the awareness.
At You_Source, we try to raise awareness about this amongst our teams in little workshops, and we have all signed a code of conduct.