Python has become the most important programming language for financial services jobs. eFinancialCareers currently has 1,486 Python-related jobs open, versus 1,333 for Java and just 891 for C++. This wasn't always the case.
In a recent comment on HackerNews, Sean Hunter, a former vice president in Goldman's strats team said he introduced Python at Goldman Sachs when he worked there between 2002 and 2011. "I was the person who first deployed Python at Goldman Sachs. At the time it was an "unapproved technology" but the partner in charge of my division called me and said, "Err....hi Sean, It's Armen. Uhh.... So I heard you like Python.... well if someone was to uhh.... install Python on the train... they probably wouldn't be fired. Ok bye," claimed Hunter.
Following the partner's email, Hunter says Python was pushed out to every single Goldman Sachs computer engaged in risk and pricing in Goldman's securities division. It was 2002-2003. The revolution was underway.
Hunter - who now works as a consultant - tells us that Goldman started out by using Python solely for infrastructure computing. Before Python, he says Goldman used Perl, but that Perl was a pain to learn. "The thing about Perl is that it's incredibly powerful but also incredibly complicated and difficult to understand." Python requires a similar degree of conceptual sophistication to Perl, says Hunter: "It's just that turning it into code is much easier."
Having swapped from Perl to Python, Hunter says that one of the first things he was able to do was to make the code pushes on the "train" that distributed updates to Goldman's 20,000 computers asychnronous, something that had been much more difficult to achieve until that point.
Banks' strange Python programming world
Hunter left Goldman Sachs ten years ago and has since worked for a hedge fund, for Palantir and for a fintech. His time at Goldman was presumably, therefore, a good foundation for a career elsewhere. However, Cal Paterson, a former Python developer from Bank of America, Citi and JPMorgan, suggests that time spent as a Python programme in banking can actually damage your employability in other industries.
In a blog post last week, Paterson said bank Python exists in a weird and parallel universe. Bank Python evolved as a means of getting financial models out of Excel, said Paterson. It employs "brutally simple" value stores to minimize faults, involves proprietary libraries and tables, and always operates on a mandatory integrated development environment (IDE) peculiar to the bank you're working for.
For this reason, Paterson said that the use of Python in banks and outside of banks is very different, and that Python developers who join banks from other industries take a long time to get up to speed. Worse, and even though banks have their own GitHub pages, Paterson claimed the divergence between bank Python and open source Python is growing.
Every year that you spend in a bank, "the skills you need interact with normal software atrophy," he cautioned.
Python programming in a bank isn't really that bad
Does this matter? Clearly not if you want to spend your entire career in financial services. But if you want to work in another industry, Paterson says you'll find that yoy have slipped behind: "By the time I left, I had pretty much forgotten how to wrestle pip and virtualenv into shape (essential skills for normal Python)," he said.
Once again, though, the fact that Paterson too has managed to reinvent himself as a coder in other sectors suggests that escaping banking isn't entirely impossible.
Banks are secretly ahead of the curve
This brings us back to Hunter. Although banks have their own weird Python ecosystems, Hunter says they're undeserving of their reputation as technical laggards.
While he was at Goldman Sachs in the early 2000s, Hunter notes that the firm was already operating what would now be seen as a "pretty advanced DevOps environment in the form of the "train" that pushed its code out. "We were running a CICD pipeline written in Perl that would build and distribute all this code," he says. "At that time it was 20 million lines of C++ and 10 million lines of Java and we'd push it out to all our machines worldwide." Nothing similar existed elsewhere. "There’s a lot of out of the box tooling for doing this now but at the time it was completely novel."
Hunter says Goldman was also ahead of the curve in the move to the kind of distributed computing that would ultimately become the cloud. "We had an internal compute grid that was all innovative. You could take a computation, break it up int a bunch of different chunks, put it on different servers, have real time prices coming in and get your results out the other end."
Hunter hasn't worked in finance for a decade, and is therefore several steps removed from what banks are up to now. But just because you don't hear of new products that are being developed internally, he says that doesn't mean that banks aren't still innovating. "Everything we did was top secret and no one outside would ever know about it," he says of his time at Goldman. "Banks build huge amounts of things for specific use cases that don't exist yet and then the world catches up."
This likely applies particularly to bank Python and to machine learning. - Banks have access to some of the most enormous pools of data globally. If anyone's using Python innovatively now, it's therefore likely to be a finance firm. Sometimes, difference is no bad thing.
Have a confidential story, tip, or comment you’d like to share?
Contact: firstname.lastname@example.org in the first instance. Whatsapp/Signal/Telegram also available (Telegram: @SarahButcher)
Bear with us if you leave a comment at the bottom of this article: all our comments are moderated by human beings. Sometimes these humans might be asleep, or away from their desks, so it may take a while for your comment to appear. Eventually it will – unless it’s offensive or libelous (in which case it won’t.)