Software Engineer

Chicago, IL 60606

Post Date: 09/27/2016 Job ID: 8015 Category: Java, Opportunistic

Are you someone who is passionate about challenging the status quo?  Do you enjoy the process of problem solving, a process where you recognize areas of improvement and iterate and innovate to improve? Does your curiosity and desire to learn drive you?


  • We trade in the most competitive markets across the globe.  Our software makes millions of trading decisions daily.  We win by  making better and faster decisions than our competition. As a software developer you’ ll be working alongside traders to implement  strategies which will challenge you to be creative  with your implementation. You’ ll need to produce solutions which compete in the extremely latency sensitive environment, whilst managing complexity.
  • You’ ll be working in a  highly motivated team, controlling end-to-end product development.  We work in an environment where slight oversights can be extremely costly, while  new features can be extremely profitable.  As a team we aim to balance the race to production with software quality and testability.  You’ ll be placed in an environment consisting primarily of C++ and Java.  We have a build chain which has been designed around the concept of  daily production releases.  A variety of systems and technologies keeps life interesting.
  • Upon joining you will be expected to manage your own time and tasks.  We rely on our developers to drive change by taking feedback from traders, and shaping that into an  implementation.   Your ownership of the task continues until a working production release.  Our most successful developers comfortably work in any part of our stack


  • One of the most fun aspects of the job is that we have a  very quick feedback loop.  We release early and often to get incremental benefits as they are developed
  • We operate at the bleeding edge of technology.  If something new can potentially bring an advantage we will actively invest in developing and utilizing the solution
  • We really believe  in sharing knowledge and technology  between the different offices. Much of our technology stack is shared between all 3 regions, and we provide  opportunities to travel  between the regions both for personal growth and to assist where it has the biggest impact.
  • To get the best results we encourage everybody to  gain understanding of both the trading strategy and how exchanges work  on a technological level.
  • Working at IMC is also an  opportunity to learn about financial markets. We know from experience that a lot of people really enjoy learning about a field beyond their immediate area of expertise, it’ s one of the things that makes this job more interesting than others.
  • We employ a broad range of people with varying backgrounds.  What they have in common is their  superior technical expertise, their extraordinary smarts and their collaborative approach.  We will not accept less.


  • Excellent Java or C++ programming skills
  • Development experience in a Linux/UNIX environment
  • Extensive experience with OOP/OOD
  • Strong knowledge of algorithms, data structures, and threading
  • Proficiency in design patterns
  • Scripting knowledge
  • Non-relational, distributed database experience is a plus (not a requirement)
  • Strong analytical skills and desire to solve complicated problems programmatically
  • Must be self-directed, and able to work productively under minimal supervision
  • Willingness to work closely with traders in a constantly changing environment
  • Interest in the Financial Markets; previous knowledge is NOT required
Java, C++, OOP/OOD, Linux/UNIX, algorithms, data structures, threading

Jordan Zmick

Not ready to apply?

Send an email reminder to:

Share This Job:

Related Jobs: