Senior Software Engineer
Senior Software Engineer – Position Description
The Senior Software Engineer will contribute to development initiatives, assist other team members and develop software solutions. Software solutions integrate with hardware systems to enable our end-to-end automated Wire Additive Manufacturing process. The Senior Software Engineer will improve software development processes, follow best practices & architectural principles, while contributing to team culture and IP generation.
Key Accountabilities
* To develop software as part of the software engineering team, reporting to the VP of Software and Product.
* To contribute expertise and facilitate the upskilling and development of other software engineering team members.
* Design, develop, and implement software solutions in Rust, C++, Rapid Code and scripting languages as necessary. Software solutions integrate with our hardware systems, enabling end-to-end automated manufacturing processes.
* Collaborate with cross-functional teams, including robotics and mechatronics engineers, to optimise our manufacturing process through the development of innovative software applications and tools.
* Perform code reviews, testing, and debugging of software to ensure high-quality and reliable products.
* Assist with continuously improving software development processes, tools, and methodologies to ensure high levels of productivity and efficiency.
* To help ensure consistent use of shared platform components and technologies within the organisation.
* Design and develop reusable libraries and APIs for use across the organisation.
* To help contribute to best practice for code development across the organisation.
* Write unit and integration tests, within automated test environments to ensure code quality.
* Assist in defining the team’s technical strategy and advising on product roadmaps and migration plans to achieve strategic goals.
* Write concise yet comprehensive technical documentation.
* Assist in automating the deployment process on all environments.
* To help also ensure responsibility for work quality, ensuring it meets the technical standards for all online output.
* To help monitor work against the production schedule closely and provide progress updates and report any issues or technical difficulties as needed.
* Stay current with emerging trends and technologies in software development, robotics, and mechatronics, and proactively identify opportunities to leverage new tools and frameworks to improve our systems.
* To work to the organisation’s policy on Health and Safety.
Knowledge, Skills & Competencies
* Demonstrable experience of using Rust, C++ and other related technologies – e.g. scripting languages. Ideally experience with CGAL and other 3D or path planning concepts, Qt and UI frameworks.
* A high level of competence with Git, and source control systems.
* Competence and experience developing software using an Agile development methodology.
* Demonstrable experience developing software on Windows / Unix / Linux based Operating Systems including performing administrative tasks.
* Demonstrable experience of test-driven development alongside use of automated test frameworks, mocking/stubbing and unit test frameworks.
* Demonstrable experience of scripting languages.
* Proven experience of project working and commercial development processes – particularly Agile methodologies.
* Experience of working in an environment where products must be delivered to specific timescales.
* An ability to rapidly and effectively understand and translate product and business requirements into technical solutions.
* Experience of supporting, modifying and maintaining systems and code developed by teams other than your own.
* Experience of working with code repositories (e.g. GitLab), bug tracking tools (e.g. Jira, Bugzilla) and Wikis (e.g. Confluence).