UPDATE (17 Apr 2014): If you maintain a spaghetti mess of a legacy codebase, my new book based on this talk will give you step-by-step instructions on how to modernize it. You can buy the book today with free updates and a money-back guarantee.
The underlying problem here is that most software is not very good. Writing good software is hard. There are thousands of opportunities to make mistakes. More importantly, it’s difficult if not impossible to anticipate all the situations that a software program will be faced with, especially when–as was the case for both UBS and Knight–it is interacting with other software programs that are not under your control. It’s difficult to test software properly if you don’t know all the use cases that it’s going to have to support.
There are solutions to these problems, but they are neither easy nor cheap. You need to start with very good, very motivated developers. You need to have development processes that are oriented toward quality, not some arbitrary measure of output. You need to have a culture where people can review each other’s work often and honestly. You need to have comprehensive testing processes — with a large dose of automation — to make sure that the thousands of pieces of code that make up a complex application are all working properly, all the time, on all the hardware you need to support. You need to have management that understands that it’s better to ship a good product late than to ship a bad product on time. Few software companies do this well, and even fewer of the large companies that write much of their software.
This is why there is so much bad software out there. In most cases we learn to live with it. Remember the blue screen of death? Ever stood at an airline counter waiting interminably for the agent to make what should be a simple switch from one flight to another? Ever been on the phone with a customer service representative who says his computer is slow or not working? That’s what living with bad software looks like.
But in our increasingly complex and interconnected financial system, it’s not clear we can live with it.
Read the whole thing. Via Software Runs the World: How Scared Should We Be That So Much of It Is So Bad? – James Kwak – The Atlantic.
Why is management a craft?
It’s a craft for the same reasons engineering is a craft. You can read all the books you want on something but crafts are learned by getting your hands in it and getting them dirty. Crafts have rough edges, and shortcuts, and rules of thumb, and things that are held together with duct tape. The product of craft is something useful and pleasing.