At Intercontinental Exchange (ICE), we engineer technology, exchanges and clearing houses that connect companies around the world to global capital and derivative markets. With a leading-edge approach to developing technology platforms, we have built market infrastructure in all major trading centers, offering customers the ability to manage risk and make informed decisions globally. By leveraging our core strengths in technology, we continue to identify new ways to serve our customers and transform global markets.
We are looking for performance engineers to join our development team. Our goal is to push the limits of what can be achieved with latency, capacity, and determinism. This is not a testing or QA position. This is a position for experienced software engineers who want to focus on performance. The right candidate will have a passion for figuring out how to make software run faster and more efficiently. All layers of the system will be examined, not just software. Understanding how to effectively use operating system and hardware resources is key to achieving optimal performance.
Responsibilities
Observe and understand the runtime behavior of system components while under load, including the usage of low-level hardware and operating system resources
Identify hotspots or bottlenecks in code execution
Determine the root cause of hotspots or bottlenecks whether they be inefficient use of a programming language, operating system resources, the system memory allocator, etc.
Think of solutions to hotspots or bottlenecks, then test them by modifying the existing codebase and running performance tests to measure potential improvement
Improve test harnesses used for performance measurement and profiling
Take responsibility for the performance of one or more system components
Solve performance-related problems
Knowledge And Experience
Undergraduate degree in Computer Science, Mathematics, Physics, or related field
7+ years of programming experience, C++ and Java preferred
Experience profiling all layers of the technology stack (software, OS, hardware, network) and optimizing complex applications
Experience with tracing and profiling tools such as eBPF, DTrace, VTune, perf, flamegraphs
Knowledge of low-level CPU details such as cache usage and branch prediction, as well as their impact on software performance
Knowledge of low-level kernel events such as context switching, interrupts, and thread scheduling
Knowledge of compiler and linker optimizations (e.g., PGO)
Experience tracing user-level and kernel events for debugging and profiling
Experience using benchmarking tools and building custom test harnesses
Precise thinking and a scientific approach to solving problems
Professional written and spoken English with excellent presentation skills
Excellent interpersonal skills, curiosity, flexibility, and accountability
Result-oriented with a personal drive to meet commitments
Intercontinental Exchange, Inc. is an Equal Opportunity Employer. All qualified applicants will receive consideration for employment without regard to legally protected characteristics.
How strong is your resume?
Upload your resume and get feedback from our expert to help land this job
How strong is your resume?
Upload your resume and get feedback from our expert to help land this job