Business Unit: Cubic Transportation Systems Company Details: When you join Cubic, you become part of a company that creates and delivers technology solutions in transportation to make people’s lives easier by simplifying their daily journeys, and defense capabilities to help promote mission success and safety for those who serve their nation. Led by our talented teams around the world, Cubic is committed to solving global issues through innovation and service to our customers and partners. We have a top-tier portfolio of businesses, including Cubic Transportation Systems (CTS) and Cubic Defense (CD). Explore more on Cubic.com. Job Details: We’re seeking a Senior Software Engineer with strong C++ and Java development skills to work on device-level software and backend integration components. This role combines embedded device programming with enterprise-grade system development, contributing to products that move millions of passengers every day. Essential Job Duties and Responsibilities: Design, develop, and maintain C++ and Java components that power Cubic’s fare collection devices and supporting backend systems. Share technical expertise within the department and other departments as requested. Complete high- and low-level detailed software design specifications, storyboards, and interface specifications. Provide support of products through conception to product delivery including problem solving, defect maintenance and support to customer services. Provide training and guidance to other team members. Comply with Cubic’s values and adherence to all company policy and procedures. In particular, comply with the code of conduct, quality, security and occupational health, safety and environmental policies and procedures. In addition to the duties and responsibilities listed, the job holder is required to perform other duties assigned by their manager from time-to-time, as may be reasonably required of them. Education and Qualifications: Bachelor of Science degree in Computer Science, Electrical Engineering, or related field or equivalent professional experience or combination of both. Personal Qualities: Ability to work as part of a team towards individual and shared goals; a team player in a cross-functional environment. Excellent written and verbal communication skills with the ability to communicate effectively at all levels. Demonstrates excellent interpersonal skills with a willingness to share knowledge, coach and collaborate effectively with individuals and other departments. Diligent, with attention to detail. Able to problem solve and find effective and timely resolutions. Self-motivated with the ability to work on own initiatives and under pressure. Skills, Knowledge, and Experience Essential: Proficient in modern C++ (14 or later) Proficient modern Java development experience (Java 17 onwards). Experience in production-grade Software Engineering with a proven track record of specification, design, and development, emphasising the need for robust, secure, maintainable code. Delivered highly functional, performance-driven applications. Experience in developing multi-threaded applications. Experience of debugging on target hardware (Linux). Experience of networking and IPC messaging protocols. A solid understanding of the Linux platform and administration An effective problem solver with the ability to understand and resolve complex issues. Experience in troubleshooting and debugging applications. Experience of Object-Oriented Design and implementation, along with Software Design patterns. Ability to contribute to the development of the architecture for applications. Experience of maintaining and improving coding standards. Able to build reusable code and libraries, ensuring thorough application documentation for future use. Experience of software best practices such as Automated Testing (Google Test), Continuous Integration, Test Driven Development, SOLID and Clean Code principles. Scrum or Kanban experience. GIT and Jenkins experience. Experience using JIRA. Desirable: Experience writing simulators and test harnesses. Experience with protocols such as RS485 or CANopen. Experience with Linux on ARM platforms. Experience working in a similar industry. The description provided above is not intended to be an exhaustive list of all job duties, responsibilities, and requirements. Duties, responsibilities, and requirements may change over time and according to business need. Due to the nature of the work, this role is primarily office-based. Worker Type: Employee