Senior Software Engineer (C++/Linux)

Cubic corporation

Job Summary

This Senior Software Engineer role involves conceptualizing, designing, coding, and debugging software in accordance with designated standards to meet project requirements. The individual will provide creative and practical solutions to technical problems, analyze system requirements, and develop and test applications following quality standards. Responsibilities also include completing detailed software design specifications, providing product support, preparing reports, and offering training and guidance to team members. The role emphasizes continuous improvement within engineering and compliance with company policies.

Must Have

  • Provide creative, thorough, and practical solutions to a wide range of technical problems.
  • Analyze and contribute to system and subsystem requirements specifications and design definitions.
  • Design, develop, and test applications and programs to support the company’s products.
  • Design, develop, and test software programs following established quality standards and internal engineering procedures.
  • 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 customer service support.
  • Prepare reports, manuals, procedures, and status reports.
  • Provide training and guidance to other team members.
  • Comply with Cubic’s values and adherence to all company policy and procedures.
  • Six (6)+ years of C++ experience (C++ 11 & 14 is mandatory).
  • Experience in developing multi-threaded applications.
  • Experience with REST, JSON & web services.
  • Experience in Software Engineering with a proven track record of specification, design, and development.
  • Demonstrable experience in defining test plans and test data requirements.
  • Experience of Object-Oriented Design (e.g., UML) and implementation, along with Design patterns.
  • Experience with software best practices such as Automated Testing (Google Test and VSTest), Continuous Integration, Test Driven Development, SOLID, and Clean Code principles.
  • Scrum or Kanban experience.
  • GIT and Jenkins experience.
  • Experience using DOORS, Test Rail, and JIRA.

Good to Have

  • Master’s Degree in computer science or related discipline or equivalent qualification/experience.
  • Certification in a relevant programming language or framework.
  • Experience working in a similar industry.
  • Experience in developing in other high-level languages, such as C#, Java, Python, JavaScript, PPP, and XML.
  • Efficient memory management experience.
  • Efficient usage of disk IO experience.
  • Experience writing simulators and test harnesses.

Job Description

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:

Job Summary:

Conceptualizes, designs, codes, debugs, and performs development activities in accordance with designated standards and procedures to meet specific project requirements. Shares technical expertise and provides training and guidance to other team members.

Essential Job Duties and Responsibilities:

  • Using the current programming language and technologies, provide creative, thorough, and practical solutions to a wide range of technical problems.
  • Share technical expertise within the department and other departments as requested.
  • Analyse and contribute to system and subsystem requirements specifications and design definitions.
  • Design, develop, and test applications and programs to support the company’s products.
  • Design, develop, and test software programs following established quality standards and in accordance with internal engineering procedures, including coding, unit testing, peer reviews, and software configuration control.
  • 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 (which may require out-of-hours support in certain circumstances).
  • Prepare reports, manuals, procedures, and status reports.
  • Provide training and guidance to other team members.
  • Supports the bids and proposals, and customer variation requests.
  • Keeps abreast of improvements and developments within software engineering, supporting continuous improvement within engineering.
  • 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.

Minimum Job Requirements:

Education and Qualifications Essential:

  • Bachelor of Science degree in computer science, electrical engineering, or related field, or equivalent professional experience, or combination of both.

Desirable:

  • Master’s Degree in computer science or related discipline or equivalent qualification/experience.
  • Certification in a relevant programming language or framework.

Skills, Knowledge, and Experience

C++ Embedded development experience requirements:

  • Six (6)+ years of C++ experience( C++ 11 & 14 is mandatory )
  • Delivered highly functional, performance-driven, user-friendly applications.
  • Proficient client-side development experience.
  • Experience in developing multi-threaded applications.
  • Experience with REST, JSON & web services.
  • Experience using a crash reporting solution.
  • Experience in debugging on target hardware.

Essential:

  • Experience in Software Engineering with a proven track record of specification, design, and development.
  • Demonstrable experience in defining test plans and test data requirements.
  • An effective problem solver with the ability to understand and resolve complex issues.
  • Experience in troubleshooting and debugging applications.
  • Organised with the ability to prepare reports, manuals, procedures, and status reports.
  • Experience of Object-Oriented Design (e.g., UML) and implementation, along with Design patterns.
  • Ability to contribute to the development of the architecture for applications.
  • Experience in maintaining and improving coding standards.
  • Able to build reusable code and libraries, ensuring thorough application documentation for future use.
  • Experience with software best practices such as Automated Testing (Google Test and VSTest), Continuous Integration, Test Driven Development, SOLID, and Clean Code principles.
  • Scrum or Kanban experience. GIT and Jenkins experience.
  • Experience using DOORS, Test Rail, and JIRA
  • Experience working with test teams to optimize application performance.

Desirable:

  • Experience working in a similar industry.
  • Experience in developing in other high-level languages, such as C#, Java, Python, JavaScript, PPP, and XML.
  • Efficient memory management experience.
  • Efficient usage of disk IO experience.
  • Experience writing simulators and test harnesses.

17 Skills Required For This Role

Problem Solving Design Patterns Github Cpp Game Texts Kanban Automated Testing C# Xml Linux Json Git Python Jira Javascript Jenkins Java

Similar Jobs