Senior Software Engineer
CME Group is the world's leading and most diverse derivatives marketplace. But who we are goes deeper than that. Here, you can impact markets worldwide. Transform industries. And build a career shaping tomorrow. We invest in your success and you own it, all while working alongside a team of leading experts who inspire you in ways big and small. Joining our company gives you the opportunity to make a difference in global financial markets every day, whether you work on our industry-leading technology and risk management services, our benchmark products or in a corporate services area that helps us serve our customers better. We're small enough for you and your contributions to be known. But big enough for your ideas to make an impact. The pace is dynamic, the work is unlike any other firm in the business, and the possibilities are endless. Problem solvers, difference makers, trailblazers. Those are our people. And we're looking for more.
To learn more about what a career at CME Group can offer you, visit us at www.wherefuturesaremade.com .
Help CME Group build our new next-generation quote driven matching system! As a financial exchange, we are responsible for providing the best technology possible to match buy and seller in some of the world's largest marketplaces. This exciting project involves building out a new platform for quote driven matching, a particular type of trading with some interesting challenges. Not only do we solve problems that are typical in software development, we have some unique problems faced in few other industries around response time and regulations.
We use a lot of commonly used tools to build our software: Java 11, Dagger, Gradle, jUnit, Serenity BDD, Docker, Kafka, and Jenkins. But we also use some less frequently utilized technologies and techniques, like JMH, Simple Binary Encoding, UDP multicast, and garbage free java programming. But don't worry if you haven't heard of all those before, we are prepared to train qualified candidates on all the tools and techniques required to be successful.
- Conducts system-wide testing and some integration testing. (Junit and cucumber)
- Helps with debugging/designing the automated test frameworks
- Demonstrates skill in language proficiency; Writes application modules and unit tests with minimal guidance. Designs with guidance and codes independently.
- Identifies potential opportunities for code optimization. Provides input for code reviews and helps with environment build deployments, release notes and build notices; Reviews code to proactively identify and mitigate potential issues and defects and helps to identify sources of defects as well as troubleshoots various forms of code.
- Uses design tools to frequently share and communicate design ideas on larger systems.
- Uses patterns frequently, contributing to best practice and process enhancements
Skill set Requirement:
- Industry experience in Core Java:
- Java basics:
- Primitive types and the String object
- Java's memory model
- Java's Collections framework
- Functions, objects, fields, etc.
- Java's keywords
- Java, advanced topics:
- Concurrency in Java and managing shared mutable state
- Problem solving:
- Ability to translate business problems into working code
- Ability to use tests to your advantage while implementing software
- Ability to ask questions of peers when there are gaps in understanding
- Required Tools: Git, bash/ksh(basics)
- Equivalent tool experience required: Jira, Confluence, Gradle, IntelliJ
- Preferred tool experience: Docker, Jenkins, ansible
- Preferred low latency programming experience