Finance world in the dark as Bloomberg terminals go offline
telegraph.co.uk
telegraph.co.uk
Worldwide???
99% of what Bloomberg terminals are useful for can easily be replicated in multiple data centers. Why not, at a minimum, three separate regions, e.g. Asia, Europe, America?
These terminals lease for $24,000 a year. No discount for multiple terminals. I wouldn't be surprised if a single big investment bank pays $50 million a year to Bloomberg for its terminals. Michael Bloomberg is a billionaire. Surely the company can throw a few crumbs into some redundant data centers and availability zones.
And if it's down because of a botched worldwide software update, the people responsible should be immediately walked out the door and told "you're too f*ing stupid to work here any more".
IMO.
Sorry to be so dramatic. But the financial world depends on these terminals (for better or for worse). They have a right to expect unrealistic reliability.
There will also be Reuters, Datastream and various other terminals with not quite substitutable functionality kicking around the office, so they're not totally 'in the dark' its just a bit less convenient and some trades could be missed.
Walking them out the door would be a fantastic waste of money.
Disclosure: I start at BBG in June.
The most memorable part was:
GJ: Name three examples of defensive programming.
Me: I'm sorry, I'm not familiar with the term; could you define it?
GJ: You know, defensive programming.
Me: I've not heard the term, but maybe I know it by a different name; could you describe it?
GJ: No, let's move on.
Later, I looked it up. He just meant things like `if (p == NULL) return False;`. I knew the concept well, and could've spoken about it intelligently and effortlessly, except I had never heard that particular name for it.
Oh, I just remembered another exchange between us:
GJ: What's the difference between a segmentation fault and a bus error?
Me: [perfect explanation]
GJ, seeming disappointed that he hadn't stumped me: Oh, someone already asked you this, huh?
Me: No, I know this, because once when I was in college--
GJ: Come on, you looked this up before, didn't you?
I wasn't sure how to respond -- I mean, yes, technically I did look it up, once upon a time. How the hell else would I know, derivation from basic axioms?
Anyway, I got the job, but I wouldn't be surprised if this other person was interviewed by the same guy and it left a bad taste in their mouth, too. As a senior manager, he probably interviewed 500 candidates a year.
I have friends still working at BBG, so I get to hear the current interview stories, and it seems things have not really improved.
When I asked why, the manager told me it was because the candidate wrote "xml" on his resume and not "XML" and that any knowledgable programmer would know to capitalize it correctly so he clearly didn't know his stuff.
</seriously>
The onsite interviews were 10% system design, 10% more "shitty C++" questions, 20% actual coding, 20% analytical puzzles ("you have two eggs and a skyscraper...") and 40% grilling on networks, such as enumerating all the error codes that socket system calls can return. While I've written tons of low level networking code, I didn't have the depth of networking experience they sought. (And I didn't do well on the analytical puzzles.) It was an interesting challenge though, and my only complaint was the job description didn't indicate what they really wanted.
One of the "fond" memories was during our training where the guy basically said that when you compile your function (or app) the first time, you run the command and then get a cup of coffee cause it gonna take at least 20 mins, due to cyclic dependencies in the codebase.
What I remember from my time there (2003-2007) was how quickly everyone was able to ship code despite (or perhaps because of) no global style guide, unit test mandates, or even rules about copy-pasting code. Each team was able to do things the way they thought best, thanks to an incredibly resilient, flexible production infrastructure that could tolerate, isolate, route around, and quickly repair any newly-introduced bug.
The code path (Bloomberg four-letter function, to those familiar with the service) running through the bug could nearly instantly, and if I'm not mistaken, in a totally automated way, be flipped over to a hot backup instance running the previous week's code, and a patch or rollback could be released to the live code almost as soon as it was written.
Most tech companies see the problems caused by coding too fast and respond by doing things to slow people down. Bloomberg cured the ills of excess programming velocity by turning the speed up even further. Like Facebook's "Move fast and break things", but with an extra, "...and then move even faster to fix them", and in a way that (mostly) insulated customers from being exposed to the breakage.
The fact that it's front-page news when there's a hiccup shows that it's a man-bites-dog event. You'd be in trouble if it wasn't major news when there was a service incident.
I'm wondering, however, not how problems were handled, but how were they detected - code throwing exceptions is the easy case, the real problem is code running almost correctly, but with slightly wrong outputs. I imagine there could be many different "sensibility" checks implemented, (e.g. no negative prices, no huge jumps price jumps), but in general it appears to be a very interesting and complex problem.
However, since then I've interviewed many candidates from Bloomberg, and while they were all very smart, their description of the work they did indicated systems that were at varying levels of WTF. In their defense this was most likely due to legacy reasons.
Also, it's funny how Bloomberg candidates inevitably use multicast in their system design interviews, which throws most "web company" interviewers off balance :-)
There was some press quite recently about an industry-backed initiative to develop an alternative IM platform (which is a necessary first step to displacing terminals), but nothing much has been said since.
Just happy everything was up for me before getting to work.