| « There Will Be Some Benefit | On a Scale of 1052 to 1057 » |
It was the calm before the storm. Brokers were sitting at their desks in silence, watching the clock. The market was going to open in minutes, and huge volume orders would start pouring in. The developers working for the firm – a mid-size proprietary trading outfit on Wall Street – were already busy; an order from the previous day should’ve expired automatically, but didn’t. It was manually fixed moments after it was discovered.
“Huh,” Daniil shrugged, “I wonder if this has anything to do with the latest release.” They’d just rolled out a minor update to their proprietary trading system. Daniil had overheard his boss barking at a junior developer that they needed the feature in two days – testing, review, standard processes be damned. “Done” had a higher priority than “working.” Any objections raised by the developers were met with the same reaction you’d get from a dog after explaining the Pythagorean Theorem – blank, drooling faces.
DING DING DING DING – the market was open. All eyes turned to the board that’d soon populate with dozens of orders. Brokers glanced at the clock and then quickly back to the board. Any second now the avalanche would begin. Any second now…
Nothing happened. Brokers’ heads started poking up above cubicle walls like gophers, each one looking more panicked and confused than the last. The panic was contagious – developers were in a panic trying to figure out why there weren’t any orders. Developers clicked, typed, and swore like crazy to locate the source of the issue, and it only took a few minutes. It was a bug from the latest release.
They couldn’t roll back since the market had already opened. The only option was to fast-track some changes, putting the system at even more risk. Brokers egged them on – “there’s no time to test! Just get it working,” they urged.
The attitude among the devs was a strange sort of frenzied optimism. “We might even have this fixed before any clients even notic-“ The phone started ringing. It was the CEO.
“What the hell is happening up there? Our orders are getting rejected. Why?”
Daniil did all he could to reassure him that it was being addressed, cut short by the CEO being screamed at in the background, then yelling a hurried “I’ll call you back.” Daniil feared that a bunch of angry brokers had gone vigilante and killed the CEO.
The panicked optimism gave way to plain old panic. Daniil looked up orders caught by the web service but not processed – in the span of two minutes, seven orders had been placed, each around $15,000. In 120 seconds they’d lost over $100,000 of the orders. Other developers shouted that they were discovering errors on other systems.
What’s worse, sell orders were failing as well. One dev, using language that would make a sailor cry, told Daniil that he’d discovered a failed sell order that was now worth $5,000 less than it would have been just a few minutes ago.
Meanwhile, another dev had found and fixed the problem – a stored procedure had changed, and error conditions were never checked. The updated procedure was called by about a dozen other procedures in the system, and since there was no error checking, it’d cancel the call and continue right along as though nothing had happened. The error message would be displayed only after the order was already recorded, but not completed.
After running some numbers, Daniil discovered that the amount of lost commissions, sales, and trades outweighed the cost of testing and fixing the change over ten-fold. Mentioning this to his boss, it was promptly ignored. “Is the fix in production yet? What are you waiting for?! Deploy! DEPLOY!”
|
Goddamn stupid captcha. I want my comment posted now! get posted ! GET POSTED !!!!
|
Re: Deploy! Deploy! Deploy!
2008-06-03 09:16
•
by
Archibald Buttocks
(unregistered)
|
|
And this is why I stopped developing trading software - it's a fast-track to an early stress-induced death, and the pay is nothing short of dire. And the software is always crap because there's a constant push to have it all done yesterday, sod quality.
|
|
History repeats itself…
The Nasdaq OMX in Sweden has had problems both yesterday (40 minutes) and today (5.5 hours), after an update of the SAXESS software. According to the news the problem is that no one can login. Carl Norell, responsible for media contacts at Nasdaq OMX in Sweden: "We understand that this has caused problems for our customers. But despite everything, many have been sympathetic. They know that something like this has not happened for a long time.” (This is the longest stop since March 1999 when it was closed for a whole day. Reason? Deployment of SAXESS) |
Re: Deploy! Deploy! Deploy!
2008-06-03 09:41
•
by
Outlaw Programmer
|
This mirrors my (limited) Wall St. experience, too. Everyone in management hated the idea of testing. Most clients just could not grasp the concept of testing. Yes, you're buying extra hardware for the QA layer but you will save thousands (millions?) in the long run, dammit! Clients that actually did buy servers for QA would often neglect them so that they became wildly out of sync with their production systems. Eventually, the company motto became, "We'll test it in production!" |
|
I'm a long-time (25+ years) systems developer. I've seen this attitude too. However, in this case, I would blame the IT manager, not management. He failed for the following reasons.
(a) No recovery plan (b) No audit plan Any software, no matter how well tested, might fail. So there must be a recovery plan. Also, because software might fail, there must be a method in place to audit it to assure that it functioned properly. The recovery plans and procedures, and the audit systems, must be be in place first, before any development of any production software is in place. IT will always be under extreme pressure. That is part of the job. And yes, no testing is a mistake. But not planning for failure was a bigger mistake. |
Re: Deploy! Deploy! Deploy!
2008-06-03 10:41
•
by
Biff
(unregistered)
|
Well, I imagine that works if you're writing 50 line Basic utilites. Unfortunately in the real world life isn't so simple. Presumably you're also one of those people who doesn't believe testing is necessary as your code is invariably flawless... |
| « There Will Be Some Benefit | On a Scale of 1052 to 1057 » |