• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Why banks need C++ developers more than ever

As banks everywhere look to build up their systematic trading teams as a matter of strategic urgency in the face of competition from electronic market makers like Jane Street and Citadel Securities, a new wave of demand for C++ developers has been unleashed.

Justifiably known as one of the most difficult coding languages to master, banks need engineers proficient in C++ to work on the low latency trading systems that are key to winning business from quantitative hedge funds.

Earlier this month, Goldman Sachs' CEO Stephen Scherr said the bank had boosted its entire equities franchise by building a "tech stack" that was "aimed at the systematic clients in prime." Now, Goldman is hiring C++ coders to work on systematic market making systems across the firm. The bank currently has around 25 technology jobs in systematic market making globally, many of them specifying C++ as a prerequisite. It's also looking for a C++ software engineer to work in the franchise data strategies group that feeds real time data to the Marquee risk and pricing platform - even though most Marquee jobs are in Python.

As other banks also focus on the imperative to improve trading infrastructure and upgrade data capabilities, they too are looking for C++ expertise. JPMorgan has been looking for a London-based global head of electronic market technology who's conversant in C++ since January. Morgan Stanley wants multiple "strong software developers" coding in C++ to join its algorithmic trading team in Montreal, Canada.
Last edited:

Daniel Duffy

C++ author, trainer
C++ is one of the few serious programming languages that helps you develop into a competent developer. The various skills that you learn cannot readily be developed in other languages because many of them treat you like a child, or hide important details that you will never get access to or even reach an impasse because they are too inflexible.

My top 8+1 reasons for learning C++

1. Multiparadigm (no other language comes near), Objects, modular, templates/generics, functional programming models

2. It is non-trivial, you learn something.

3. Good way to learn various aspects of computer science

4. It is nice for engineering applications

5. It will be with us forever

6. Learn C++ and after that all others are easy to learn. Believe me.

7. Interfaces with Python, C# etc. (many Python libraries are C++).

8. Yuge installed base

9. Impress people at cocktail parties with statements like "I have just written a parallel Monte Carlo option pricer in C++17/C++20, with lambdas,futures and variadics".

Daniel Duffy

C++ author, trainer
Some useful do and don't when designing applications in C++.

1. Multiple inheritance was not a good idea. C++ does not support interface keyword. The
AI community used MI a lot in the 90s.
2. Not evertyhing is an object. Behavioural commonality is not structural commonality.This
messes up class hierarchies.
3. Deep class hierarchies are usually incorrect and not maintainable, especially with MI. For
CAD, all you need is depth 1 and make sure each class has 1 major responsibility. Combine
with composition and Visitor pattern. Separation of Concerns is key!
4. "Tiny classes" are not classes; they are not even objects. Just think of many many
Command classes. Just use lambda functions.
5. Virtual functions and multiple classes are not needed; instead, use a single class with one
or more std::function instances.
6. (Sapir-Whorf) At the time. some developers used GOF patterns left, right and centre.
What happened in many cases is life started with the (GOF) solution and work back to the
problem. Like Newton-Raphson, convergence is not a given.
7. Classes are context-sensitive (aka unstable). Many classes live in the head of their creator
who may have incomplete information about the problem domain.
8. Our group had 1-7 on our radar screens for some time. Especially for fixed-priced
projects. For developers on an hourly rate things can be slightly different. Parkinson's Law
and gold-plating might kick in.
9. Class hierarchies are neither sufficient nor necessary.

Daniel Duffy

C++ author, trainer

Python has become a necessary language to learn if you want a job in finance. However, while students everywhere are becoming minor Python coders, the fact that C++ is harder to master can be a differentiator when it comes to getting a job. At the same time, more recent versions of C++ are easier to use than those that came before. C++ 20 has improved support for large-scale dependable software, says Bilokon. "The light-weight abstractions promised by C++ are now easier to attain. These changes are driving a renaissance of C++ on Wall Street and in the City, and in high-frequency trading centres such as Chicago."