Are you familiar with compiler and runtime internals? Maybe you have worked on garbage collection in managed runtimes such as HotSpot, the .NET CLR, V8, or Chakra. Maybe you have acquired your knowledge by tuning the performance of running services for performance and resilience. Whatever your path, the JDK team at Amazon would love to talk with you. We are looking for engineers with experience in one or more of: garbage collection, performance, language internals, or similar areas to help us shape the JDK we run at Amazon. We care about optimization for high scalability, availability, and efficiency, and also about going above and beyond to provide our customers (hint: almost every single engineer at Amazon) with the best possible Java experience.
On our team, you will be working on enhancing and evolving OpenJDK. You will identify areas for improvement using data from real running services, develop patches to the OpenJDK runtime and libraries, and make them available for all Amazon developers to use. You will also be sharing your findings with the rest of the engineering community and contributing improvements back to OpenJDK.
Knowledge of language, compiler and/or runtime internals. Java and JDK ideal, but other managed runtimes (such as .NET CLR) are also ok.
Bachelor’s Degree in Computer Science or related field or equivalent experience to a Bachelor's degree based on 3 years of work experience for every 1-year of education.
5+ years professional experience in software development
Computer Science fundamentals in object-oriented design, data structures, and performance analysis.
Proficiency in, at least, two modern programming languages such as C, C++, C#, Java, Python, or Ruby.
Masters degree or higher in Computer Science or related field.
Experience contributing to open source projects, preferably contributing to a runtime or widely used library.
Experience taking a leading role in building complex software systems that have been successfully delivered to customers.
Practice of modern software engineering, including coding standards, code reviews, source control management, build processes, testing, and releasing.
Experience with distributed computing and enterprise-wide system operations.
Experience in communicating with users, other technical teams, and senior management to collect requirements, describe software product features, technical designs, and product strategy.
Experience mentoring junior software engineers and make them more effective.
Experience influencing software engineers' best practices in your organization.
Hands-on expertise in many disparate technologies, typically ranging from front-end user interfaces through to back-end systems and all points in between.
Excited about this position, but think you might lack some of the qualifications? Give it a shot, we love helping talented engineers grow!