Compiler Optimization Developer
Markham (Markham) IT development
Job description
Introduction
At IBM, work is more than a job - it's a calling: To build. To design. To code. To consult. To think along with clients and sell. To make markets. To invent. To collaborate. Not just to do something better, but to attempt things you've never thought possible. Are you ready to lead in this new era of technology and solve some of the world's most challenging problems? If so, lets talk.
Your Role and Responsibilities
As an IBM Runtimes Open-Source Compiler Developer, you will join the hundreds of developers actively contributing to our public GitHub projects, using industry standard tools like Git, ZenHub, Jenkins, and Slack. Our development lifecycle and activities, from concept to delivery, happen openly in collaboration with community developers and researchers and we support building your own developer identity and influence in the various programming languages and runtimes communities. As an IBM developer, you of course have access to the full range of IBM teams and technologies, so you are able to influence the whole stack optimization efforts in IBM, from hardware design to OS to language runtime to middleware to cloud and cloud native applications.
We are looking to hire a developer who will join the JIT (Just-In-Time) Compiler team in Toronto. You will collaborate with team to identify performance improvement opportunities through benchmarking and analysis, implement new or tune existing features and optimizations in the JIT compiler, and collaborate with IBM and open community developers of other Java runtime components, hardware, OS, up-stack products, and frameworks to drive changes and new features to achieve optimal performance of the whole stack. You will also collaborate to ensure functional and performant implementation of new Java language features, new hardware/OS features and capabilities into our open-source Java runtime and compiler.
You should be comfortable developing in an environment that is mostly C and C++ based. You should have interest in building a thorough understanding of processor architecture, whole-stack performance analysis and problem determination. Prior experience working on open-source projects and demonstrated influence in the open communities, academic research and industry standards is very desirable. We follow Agile practices where work and design is open and collaborative, but also where individuals are expected to operate with a level of autonomy and responsibility.
Required Technical and Professional Expertise
· 2+ year of experience with C and C++ programming, runtime, data structures and algorithms
· Linux / UNIX development experience
· Good knowledge of Operating System and one or more processor architectures, e.g. x86, ARM, POWER, and Z
· Strong interest in whole-stack performance analysis and problem determination, quick prototyping, and iterative experimentation
· Excellent communication skills and proven ability in influencing open-source community developers, academic and industry partners
Preferred Technical and Professional Expertise
· Experience with Open-source development tools and projects
· Experience working in an open source, transparent, and agile development team
· Prior experience in whole stack performance analysis
· Prior experience in Compilers, Runtimes, Operating Systems, or related areas