Not sure what types of jobs you are interested in?
Based on Your Education
Job Category: Software Engineering: Development
Location: Redmond, WA, US
Job ID: 849090-121617
Division: Server & Tools Business
We are looking for an exceptional candidate with only a few years of experience and/or an advanced degree for the C++ optimizer team at Microsoft. This is a great opportunity for a software engineer who is passionate about the compiler space and really wants to learn. We want to invest in growing a new C++ optimizer developer and this process takes several years of apprenticeship while shipping compilers that build all the software at Microsoft.
The successful candidate must (1) want to develop the skills to design innovations for code generation that targets both native and managed code, (2) bang out elegant code that can correctly compile Windows, (3) work hand-in-hand with some of the best compiler architects in the business, and (4) demonstrate a strong desire to learn.
This is a rare chance to grow your career and help us shape the future of managed code, native code and high performance computing for many platforms. This is important as our team must exploit the ever wider vectors and the higher number of cores in each new generation of microprocessor (while delivering on code size and security constraints).
Microsoft has made great strides in code size and more secure code generation. Microsoft has an ambitious agenda to take those technologies to the next level. We want to expand that technology for both C++ and C# and we would like to invest in the right person to help us!
The candidate will work on improving the optimization, vectorization and parallelization phases of the Microsoft C++ compiler. This includes both significant research and/or simultaneous product development activities. As Microsoft continues to advance the state of the art with automatic vectorization and automatic parallelization across dissimilar architectures and different runtimes, the need to grow the core optimizer team is a priority for the company.
Specifically this work will include:
Delivering well engineered code that provides solutions across all the components in the new compiler paths we are developing for the next release.
design and implementation of new managed code "like" optimizations such as range checks or null checks
performance analysis for key parts of the Microsoft software stack
engineering and co-designing the ability to emit a new object file format that will support binary analysis tools
fixing all existing phases of the compiler so that many more C++ source level constructs can be correctly and efficiently compiled with the new auot-vectorizing/auto-parallelizing compiler
A strong desire to learn how to work effectively across teams like Windows, SQL and Office
Since the compiler is used to compile all the C/C++ software in the company the candidate must respect mission critical correctness in any code the compiler generates. We'll help you learn many things and grow your career - we just ask you not to break anything :-)
Want to rapidly grow your technical expertise and have a very real impact in a fast-moving, technology-focused team? Join us!
An ideal candidate would be someone with a strong academic focus in computer science, electrical engineering or computer engineering with some emphasis in compilers and/or computer architecture.
At least one prior industry internship or full time position (shipping code). However, if you feel you are a strong creative software engineer with great systems experience, OS internals, or knowledge of managed runtimes, and you are passionate about the compiler space, please do apply.
Specifically we are looking for a candidate with the following:
- MS in Computer Science, EE, Computer Engineering or equivalent experience (PhD preferred)
- 2+ years of experience with C, C++
- 2+ years of system programming experience
- Understanding of compiler and or JIT or other related code generation
- Knowledge of some compiler backend technologies such as optimization and register allocation, code layout
- Relevant compiler, computer architecture and/or algorithm work
- Knowledge of processor architecture, ISA's
- Basic knowledge of exception handling and runtime support
- Basic knowledge of garbage collection in a working system
- Knowledge of managed runtimes and/or OS internals
- Understanding of microarchitectures
About Microsoft Corporation
Microsoft Corporation develops, manufactures, licenses and supports a range of software products for computing devices. The Company's software products include operating systems for servers, personal computers and intelligent devices, server applications for distributed computing environments, information worker productivity applications, business solution applications, high-performance computing applications and software development tools and video games. It provides consulting and product support services, and trains and certifies computer system integrators and developers. Microsoft Corporation sells the Xbox 360 video game console and games, the Zune digital music and entertainment device, PC games, and peripherals. The Company has five segments: Client, Server and Tools, the Online Services Business, the Microsoft Business Division, and the Entertainment and Devices Division.In June 2008, the Company acquired Navic Networks. In September 2008, it acquired DATAllegro Inc.