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 of 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 proposal 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
- Bachelor of Science degree in computer science, electrical engineering, or related field or equivalent professional experience or combination of both.
- Master’s Degree in computer science or related discipline or equivalent qualification/experience.
- Certification in a relevant programming language or framework.
- Certified Scrum Master.
Skills, Knowledge and Experience
- Experience in Software Engineering with a proven track record of specification, design and development.
- Demonstrable experience of 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 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 and VSTest), Continuous Integration, Test Driven Development, SOLID and Clean Code principles.
- Scrum or Kanban experience. GIT and Jenkins experience.
- Desirable to have BitBucket and Conan experience.
- Experience using DOORS, Test Rail and JIRA
- Experience working with test teams to optimise application performance.
- Experience working in a similar industry.
Java Back Office development experience requirements:
- Proven track record of working in an environment with a high volume of transactions.
- Proficient Java/J2EE experience.
- Experience using:
- Spring framework
- RESTful APIs
- Apache Tomcat
- Oracle RDBMS experience (table design, stored procedures, query optimisation etc.)
- Proficient server-side development experience (not just GUIs or Web).
- Experience in developing multi-threaded applications (more than just async calls from a GUI).
- Apache Kafka, Camel.
- Knowledge of encryption technologies.
- Experience in developing performance critical transaction processing applications.
- Asynchronous messaging experience.
- EJBs, Servlets.
- Java Certification.
- Experience in developing in other high-level languages, such as C++ or C#.
- 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.
- Strong organisation and planning skills with the ability to handle multiple projects and undertake new tasks quickly.
- 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.