Technology is at the heart of everything we do at IMC. Our innovative proprietary software makes millions of trading decisions every day. But that is only part of what makes IMC tick. Behind every trade, behind every technological breakthrough, are our people. They include our talented team of engineers. Here we look at C++ software engineers and their key role at IMC.
C++ software engineers and IMC
With a focus on supporting trade execution, C++ software engineers play a hands-on role in the operational side of IMC’s day-to-day trading activities.
Forming part of our execution development teams, they work on software that sits directly in the latency-critical loop of our technology stack and touches every part of our organization. Whether that’s ensuring IMC’s connectivity to the market and handling large volumes of data, or implementing complex trading algorithms and integrating advanced hardware solutions.
The C++ software engineer role is highly collaborative, and involves working closely with other engineers – as well as traders, researchers, and quants – as part of multidisciplinary teams. Together, teams oversee end-to-end product development – from requirements gathering to production.
IMC’s engineers contribute to this dynamic by writing reliable, high-performance software. They also keep things moving. In the fast-paced world of financial markets, engineers must deliver to production quickly while ensuring the quality and testability of all code. And daily deployments are the norm.
A broad technology stack
IMC's C++ software engineers work with an ever-evolving range of systems and technologies, including C++ 20, Linux, Docker, Kubernetes, Apache Kafka, Apache Spark, Impala, Hadoop, Python, FPGAs, and beyond.
Each solution offers something different, and engineers have the freedom to choose the best possible option. We also encourage people to explore the possibilities of the particular programming language we're using to build products that are elegant and highly functional.
And new tools are always on our radar. If an emerging technology has the potential to add significant value, IMC will actively invest in researching, adopting, and developing it.
The typical career path as a C++ engineer
As our technology needs grow and evolve, the role of the C++ software engineer changes from month to month. For those with the agility to adapt to a rapidly changing environment, the sky is the limit - with opportunities to help bring new trading strategies and approaches to fruition.
But while there is plenty of room for growth, we ask our C++ engineers to be proactive and keep a close eye on their professional development. This includes investing time in brushing up on their existing skills as well as learning new ones that will help IMC consistently deliver quality solutions.
Engineers with an interest and aptitude for management are encouraged to become People Leaders – a broad-ranging remit that can mean anything from mentoring new hires to managing a team of several direct reports. Other engineers prefer to remain more hands-on, taking responsibility for complex assignments as more senior C++ software engineers.
Whichever path they take, collaboration remains a critical part of an engineer's role. IMC's technology teams emphasize openness and the desire to participate in innovation. For example, code reviews are required for every change to existing and new code we implement.
Take the next step with IMC
While this should give you a feel for what to expect as a C++ software engineer at IMC, in reality no two roles are the same. What you can expect is a dynamic, fast-moving environment that delivers a steady stream of challenges.