Lead software application development from initial design to coding, ensuring requirements are defined and met. Oversee software application development stages, including concept creation, requirements definition, design, and coding. Collaborate with mechanical, electrical, and electronics engineers to drive successful project outcomes. Monitor and manage software requirements and related issues. Develop reliable software with focus on fault management, reporting, and application health monitoring. Create and maintain supporting documentation, such as interface control documents and user manual inputs. Assist customers with integration, commissioning, and troubleshooting. Understand and incorporate customer technical requirements into the project scope. Collaborate with the Project Manager, Technical Authority, and Quality team to identify risks, issues, and opportunities.
Essential Skills:
* Solid educational background in a relevant technical field
* Proficiency in embedded software design with strong knowledge of associated hardware
* Robust mathematical capabilities
* Track record of successful leadership in technical software projects
* Comprehensive understanding of software engineering principles
* Experience in embedded software design and broad familiarity with related hardware
* Competence in writing C/C++ code for embedded applications
* Expertise in designing and developing control systems, especially in the areas of motor control principles, theory, and interfaces
Desirable Skills:
* Experience utilising STM32 processors and the Keil uVision development environment and associated tools
* Proficiency in various communication protocols such as Ethernet, RS422/UART, CAN, SPI, etc.
* Skilled in hardware interfacing, including GPIO, ADCs, DACs, and related components
* Understanding of developing desktop applications and user-centric interface design
* Familiarity with the Qt and Qt Creator multiplatform development environment in C++
* Experience with Visual Studio for C++ and C# programming
* Knowledge of low-latency programming techniques
* Expertise in networking concepts (TCP/UDP)
* Proficient in the use of source control systems, particularly SVN and Git
* Experience with Jira and Confluence for software requirements and task management
* Familiarity with unit testing tools and technologies
* Competence in static code analysis