What are the responsibilities and job description for the Principal Software Engineer - High Performance Computing position at JPMorgan Chase?
If you are looking for a game-changing career, working for one of the world's leading financial institutions, you’ve come to the right place.
As a Principal Software Engineer at JPMorganChase within the Core Foundational Platforms team, you, you provide expertise and engineering excellence as an integral part of an agile team to enhance, build, and deliver trusted market-leading technology products in a secure, stable, and scalable way. Leverage your advanced technical capabilities and collaborate with colleagues across the organization to drive best-in-class outcomes across various technologies to support one or more of the firm’s portfolios. You will lead virtual and direct teams of developers, teaching them best practices in high-performance computing (HPC) practices that intersect with AI/ML. Thus, you are collaborative—especially since you will work closely with cross-functional teams comprised of data scientists, business analysts and other engineers. You will infuse the JPMorgan developer community with an appreciation of the impact that HPC can have by delivering software that consistently outperforms other platforms. You will deliver a variety of options to serve our various business needs--sometimes driven by low-latency; other times driven by throughput or low power.
Job responsibilities
- Creates complex and scalable coding frameworks using appropriate software design frameworks
- Develops secure and high-quality production code, and reviews and debugs code written by others
- Advises cross-functional teams on technological matters within your domain of expertise
- Serves as the function’s go-to subject matter expert
- Contributes to the development of technical methods in specialized fields in line with the latest product development methodologies
- Creates durable, reusable software frameworks that are leveraged across teams and functions
- Influences leaders and senior stakeholders across business, product, and technology teams
- Champions the firm’s culture of diversity, opportunity, inclusion, and respect
- Using telemetry, create measurable frameworks for deciding amongst hardware and software options
- Publish and support re-usable patterns to optimize training and inference of ML models on various architectures
- Support developer community in learning lessons from high-performance computing (HPC) domain
Required qualifications, capabilities, and skills
- Formal training or certification on software engineering concepts and 7 years applied experience
- Hands-on practical experience delivering system design, application development, testing, and operational stability
- Expert in one or more programming language(s)
- Advanced knowledge of software application development and technical processes with considerable in-depth knowledge in one or more technical disciplines (e.g., cloud, artificial intelligence, machine learning, mobile, etc.)
- Experience applying expertise and new methods to determine solutions for complex technology problems in one or more technical disciplines
- Experience leading a product as a Product Owner or Product Manager
- Ability to present and effectively communicate with Senior Leaders and Executives
- Understanding of the business
- Practical cloud native experience
- Experience in Computer Science, Computer Engineering, Mathematics, or a related technical field
- Familiarity with HPC software (e.g., NCCL, MPI) and resource schedulers (e.g., Kubernetes, SLURM)
- Strong programming skills in Python, scripting, C, C with experience in AI/ML frameworks like PyTorch and LangChain
- Master’s Degree in Computer Science (required)
- 8 years of experience in high-performance computing software
- 5 years of experience with accelerators and deep learning, particularly large language models
- Experience in large organizations and regulated industries is a plus
- Excellent communication skills and the ability to work collaboratively in a dynamic team environment
- Publish and support re-usable patterns to optimize training and inference of ML models on various architectures