Principal Application Architecture Java logo
Job TitlePrincipal Application Architecture Java
Business Stream:CAE

Role and Responsibilities                                                                                      

CAE is a high-technology company, at the leading edge of digital immersion, providing solutions to make the world a safer place. Our flight services business delivers software solutions to more than 150 airline customers.   Join the engine that is changing CAE, pointing towards the next horizon of growth through digital innovations to support our customers in their success. 

Here are a few reasons why folks love working at CAE!   

  • Meaningful work that drives professional development  
  • Ability to enter and grow within the technology industry  
  • Work in a collaborative environment  
  • Be part of a high-performance team 
  • Support airline customers around the world 

Team & Product Overview 

The Airline Master  Data team at CAE is looking for a Senior Software Engineer to help us with building the best data hub in the industry. Airline Master Data is a modern solution for exchanging standardized airline operational data in real time. It provides industry data consistency across a variety of airline operations products. The software is designed as a set of multitenant microservices deployed in Kubernetes with a NoSQL persistence layer and Kafka messaging.

Main responsibilities:

  • Be a visible and hands-on leader to drive and own the solution, and design of the most advanced and complex software systems
  • Be responsible for leading and growing the team of engineers
  • Be responsible for delivering results
  • Estimate, design and develop new components and sub-systems
  • Be accountable for the quality of the systems, performance, scaling, and availability characteristics
  • Refactor existing code, use TDD techniques, and apply rules of SOLID design principles
  • Maintain a complex code base
  • Deliver high quality solutions, even in cases where a “quick fix” may be sufficient
  • Contribute to feature/function and system test automation
  • Troubleshoot system failures and problems in production, profile system performance
  • Participate in code, design, and architecture reviews
  • Write documentation for bug fixes and implemented features
  • Demo software to stakeholders
  • Deliver technical training within the engineering organization
  • Demonstrate broad knowledge of technical solutions
  • Participate in a fully agile development life cycle

Necessary skills & requirements:

  • Very good knowledge of Java (6+ years of experience)
  • Designing micro-services
  • Solid experience in NoSQL stores (Mongo DB) and RDBMS systems
  • Deep understanding of cloud architectures (AWS, GCP)
  • Knowledge of containerization (Docker, Kubernetes)
  • Deep exposure to Service-Oriented Architecture (REST, JSON)
  • Experience in web development (JavaScript, ReactJS)
  • Knowledge of object-oriented programming principles and design patterns
  • Able to understand complex application workflows
  • Good analytical and algorithmic problem-solving skills
  • Expertise in multi-threading and performance-oriented programming
  • Debugging and performance profiling
  • Strong design and development experience in building large-scale distributed systems
  • Good English communication skills, written and verbal

The following will be considered as a plus:

  • Experience in Bash or another scripting language
  • Knowledge of Jenkins