If you want a programming job in finance right now, you probably need to learn Python: Goldman Sachs is currently advertising around 320 jobs which mention Python, J.P. Morgan is advertising 809. But if you want a programming job in finance in future, you might want to familiarize yourself with a language that's far more niche: Rust. Rust's advocates suggest it will become the next big thing, in time.
Expertise in Rust isn't going to get you a job tomorrow, but it is making small incursions into big banks. J.P. Morgan has one tiny Rust job, working on its interesting Roar big data project. Goldman Sachs has no Rust jobs at all, but its advocates insist that it will soon because Rust has several important things going for it.
"I mainly program Python and I know about all its dirty and unpleasant corners," says one quantitative developer who programs in Rust in his spare time. "By comparison, Rust feels refreshingly new."
A self-described open source, 'systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety,' Rust is likely to replace C and C++ rather than Python. "Rust is a systems programming language that can be used to build large, efficient, stable systems," says the developer. "It might be something as fundamental as an operating system, or something as fast as a trading system in a hedge fund." Right now, C++ is frequently used in high-frequency trading because it's fast, but Rust is faster still, and it comes with special extra advantages.
"What makes Rust outstanding is its safety," says the quant developer. "The language is designed in such a way that it checks during compile time that there are no circumstances where the program will be left hanging in uncertain memory conditions." While C++ purports to offer similar features, they can be circumvented by 'developer arrogance' from programmers convinced their code is fine. "In Rust, the program is designed so that if it actually starts, you can be very sure that it will not corrupt the system memory because it ends up doing things that you simply didn't anticipate," says the quant.
This means that Rust is a much safer language to use than its predecessors. "Rust is applicable where runtime efficiency and safety are core needs," says another developer. For the moment, the language is mostly used by Mozilla to power its Firefox browser, but advocates say it will surely be taken up by banks in time.
"Technically, Rust can do everything," says the Python programming quant. "I'm currently exploring its capabilities in numerical and analytical coding for financial applications - PDE solving, option pricing, etc. With Rust, I've felt for the first time that you "can have the cake and eat it too."
Unlike C++, Python, and Java, which are object-oriented programming languages (OOP), Rust is a 'trait-based' programming language. This means that 'rather than building a structure and giving it abilities like in the OOP world, you need to define the behavior on an abstract level," says the quant. "You then define this behavior for particular data structures, therefore separating the data from the behavior." He says this takes some "relearning" - especially if you're used to thinking in OOP terms.
The extra effort is deemed to be worth it. Supporters say Rust is the first real programming language for the 21st century. "Modern software must be able to scale to multiple threads and processes, and to communicate with external traffic much more," says the quant. "I have had much more success in writing parallel and asynchronous programs in Rust than I ever had in C++ or C, plus the safety-first principles bring the language into one of the best positions to write stable, extendable parallel code."
Of course, there are downsides. The main one is that Rust isn't much used yet and won't get you a job for the foreseeable future. The security features also come with a cost, although some would argue that it's one worth paying. "As a developer, you have to think more actively about what can go wrong with your program," says the quant. "Because if there's something that can go wrong, then Rust will not let you build the binary until you can guarantee that nothing bad can happen. - By comparison, in C you can just build an 'unsafe' binary and try not to use it in an unsafe way. This is why there's so much faulty code out there."
"Rust is a pleasure to work with. It has many advantages, and given time to mature its ecosystem it will become a real treasure in the future," says one developer. You might want to start learning it now.