As a Lead Software Engineer - Java / AWS / Kafka at JPMorgan Chase within the Asset and Wealth Management Technology Line of Business, you will play a crucial role in an agile team dedicated to enhancing, building, and delivering market-leading technology products that are secure, stable, and scalable. Your responsibilities as a core technical contributor include implementing critical technology solutions across various technical domains to support the firm's business objectives. We are looking for a motivated and skilled Lead Software Engineer to contribute to the development of our innovative multi-asset trading platform on AWS. This position requires expertise in streaming, non-blocking, reactive Java programming, along with a solid understanding of microservices architecture and cloud technologies.
Job responsibilities
- Executes creative software solutions, design, development, and technical troubleshooting with ability to think beyond routine or conventional approaches to build solutions or break down technical problems
- Develops secure high-quality production code, and reviews and debugs code written by others
- Identifies opportunities to eliminate or automate remediation of recurring issues to improve overall operational stability of software applications and systems
- Leads evaluation sessions with external vendors, startups, and internal teams to drive outcomes-oriented probing of architectural designs, technical credentials, and applicability for use within existing systems and information architecture
- Designs and implements microservices in Java, utilizing streaming, non-blocking, and reactive programming techniques, while contributing directly to the codebase.
- Work with technologies such as Kafka, IBM MQ, Kubernetes (K8s), Redis cache, MSK, and AWS to build scalable and efficient systems, providing hands-on support.
- Support the adoption of domain-driven design principles and contribute to architectural discussions.
- Contribute to the development of technical documentation, including service APIs using Swagger, ensuring robust logging, auditability, security, and monitoring features.
- Participate in API design sessions and contribute to the selection of design patterns for the team.
- Engage in code review sessions, ensuring high maintainability through TDD/BDD approaches.
- Demonstrate scalability of services using mock testing frameworks and other tools, actively engaging in testing and validation processes.
Required qualifications, capabilities, and skills
- Formal training or certification on software engineering concepts and 5+ years applied experience
- Hands-on practical experience delivering system design, application development, testing, and operational stability
- Understanding of CI/CD, DevOps tool chains, and a test-driven approach to agile delivery, with hands-on experience in these areas
- Experience with middle-tier data caching solutions (e.g., Redis, Apache Ignite) and messaging-based solutions (e.g., Kafka, IBM MQ)
- Demonstrated expertise in Java programming, a willingness to engage in hands-on coding, a track record in building distributed architecture systems, especially those involving large data volumes and real-time distribution, knowledge of modern architectures based on microservices, REST APIs, databases, SQL, non-SQL stores, and event-based architecture
- Proficiency in automation and continuous delivery methods
- Advanced understanding of agile methodologies such as CI/CD, Application Resiliency, and Security
- Demonstrated proficiency in software applications and technical processes within a technical discipline (e.g., cloud, artificial intelligence, machine learning, mobile, etc.)
- In-depth knowledge of the financial services industry and their IT systems
- Practical cloud native experience
Preferred qualifications, capabilities, and skills
- Experience with Spring framework and AWS cloud services, actively applying these skills in development tasks
- Familiarity with trading systems and FIX protocol
- Reactive Java