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.
rush.webp
 
Last edited:
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.
 


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."
 
Open question. How do I transition from Java to C++?
What is the best path / route to take ?

With such trends in the market for C++ with financial firms going wild to hire C++ developers, it is a golden opportunity.
For my self, I have some C++ experience, but none in any industry.
So how would I make one interested in me? (Reading your book Financial Instrument Pricing Using C++, 2n Endition,
great book, enjoying the read so far. But thats not going to be enough to become an expert in C++ and land a job)
 
I am based in London, so any suggestions can be related to the area.
In fact, what are the thoughts on bootcamps for re-specialization ? Can I land a C++job afterwards?
That is not go down in compensation due to change of fields.
 
I am not able to say if C++ will get you a job in London, Maybe, it depends.
Do you know finance?

some C++ experience
Can you quantify that? My 2nd edition may or may not be too advanced.

A C++ programmer has no problems learning Java. The other way around is trickier (Java protects you from raw memory).

The best way to learn C++ skills is to do the QN C++ course. It is an investment but ==> skill.
 
financial firms going wild to hire C++ developers
yes?

edit: If I were in your role/position in general, I would have C++ and Python in my toolbox.
 
Last edited:
Knowing finance not the extent of front office. But I have been working in banks on various areas. Not a stranger, but defiantly were not aware of many financial terms I have encountered in your book.

As for my C++ knowledge. I don’t have any professional experience, not in writing any applications. It comes from uni, and self studies, which all came before smart pointers where a thing.
For now I feel that I am at the right place with the book. Some concepts were more advanced, but I think I needed that to progress.

The said, I did some Rust in past and that was for a company.

Now I am not against QN course. It is perhaps a worthy investment. Does it provide with help getting a job afterwards?
 
BTW do you know that I provide C++ code for purchasers of the book? BTW I have an upcoming PDE/FDM book laying the foundations for the maths part of the C++ book?





On jobs: I am only the originator of the course :) taking it means you learn the real stiff and don't get bad programming habits.
You could inquire around.
 
Last edited:
It comes from uni, and self studies, which all came before smart pointers where a thing.
In general, I am not at all impressed with how in general many universities do C++ training. Self-study is not always optimal e.g. plucking silly examples from internet.
The QN course has 10 well-defined modules. It's a bit like getting judo belts white-> yellow-> ...
 
A bit like the videotape format war.




The main determining factor between Betamax and VHS was the cost of the recorders and recording time. Betamax is, in theory, a superior recording format over VHS due to resolution (250 lines vs. 240 lines), slightly superior sound, and a more stable image; Betamax recorders were also of higher-quality construction. However, these differences were negligible to consumers, and thus did not justify either the extra cost of a Betamax VCR (which was often significantly more expensive than a VHS equivalent) or Betamax's shorter recording time.

JVC, which designed the VHS technology, licensed it to any manufacturer that was interested. The manufacturers then competed against each other for sales, resulting in lower prices to the consumer. Sony was the only manufacturer of Betamax initially, and so was not pressured to reduce prices. Only in the early 1980s did Sony decide to license Betamax to other manufacturers, such as Toshiba and Sanyo.
Hey @Daniel Duffy , could you help me understand why it is like a "videotape format" war , would deeply appreciate your thoughts on Python as well as a programming language. Thanks!
 
Citadel Securities is training its developers on a coding language that hasn’t even been released yet
"One of the things I’m especially excited about is C++’s async framework that’s coming in the next standard (C+26) that will ship about a year from now. Async use of C++is a big deal because we are all increasingly needing todo things concurrently and in parallel."
 

Attachments

C++ already has functionality for parallel and asynchronous programming. The QN Advanced C++ course discusses it.

The issues going forward.

1. Meeting the deadline and how useful.
2. Learning all this stuff. "Thinking parallel".
3. Applying in real life. Multi-threading is for "experts";
4. Other languages (e.g. C#) have this functionality for years now..
5. Some Boost C++ libraries will be in C++26 standard I suspect.

Rome wasn't built in a day.
 
Last edited:
Back
Top Bottom