Software Development Life Cycle (SDLC)Importance
Solid Logic Technology’s foundershave experience across the financial industry and specifically in the development of quantative trading and investment systems. Many of the things we’ve learned along the way impact the way we develop software for clients across other industries. Most notably we’ve learned that software quality is extremely important and ‘software bugs’ cost lots of money. The study below shows how important in-depth software development, testing and launch management is for a company.
As early as August 1st, 2012 reports came out that Knight Capital Group, a prominent electronic market-making firm specializing in NYSE equities, lost an estimated $440 million dollars due to a ‘software bug’. The news spread across financial news networks like Bloomberg, NY Times, CNBC and The Wall Street Journal. Knight and other similar firms, trade US equities electronically using sophisticated computer algorithms with little to no human involvement in the process. While we will probably never hear the full story behind the ‘software bug’, it is suspected that a software coding error that was not quickly identified caused the loss. The loss is approximately 4 times their 2011 net income of $115m. It appears to have pretty much decimated the firm and at this point it looks like the firm will be bought or end up in bankruptcy.
While unfortunate, this example has some implications across any software project.
So what can we learn and take away from this incident?
- Software is not perfect, especially right after it is released
- A more comprehensive Software Development Life Cycle (SDLC) process and launch plan probably would have reduced the loss to a more reasonable amount.
- Always have a contingency plan for a new launch
- If new software is ‘acting funny’ then it probably has a problem and needs to be pulled from production and fixed
- When possible, conduct a series of small ‘pilots’ or ‘beta’ test along the way in a lower impact way
- If you cannot fully test the changes, then implement them slowly to minimize the potential errors in the beginning
- Have a ‘kill switch’ and know how to use it
- Have a formal SDLC process and follow it for all revisions
- Use source control for all software changes
- Have a defined launch process
- Have a way to quickly revert the changes implemented back to the previous version.
These are basic best practices that all software development firms should follow in order to consistently develop high quality software. Its unfortunate that there is a case study like this but these type of incidents are more common (but not to this scale) than most people imagine. I’m sure the group at Knight completed many of the above items, but something got away from them.
We put a huge amount of thought and effort into the process of software development and the consistent high level of quality that a solid process brings. We’re currently working on publishing a set of Software Development best practices – please contact us for a pre-release version.