Job description
People: - Manage and mentor software developers - Work with the Software Technical Manager to ensure the developers work effectively - Work with the Software Delivery Manager to ensure requirements are understood and implemented efficiently Software Design and Development: - Design, code, test, and debug software solutions for both embedded systems and application software. - Collaborate with the development team to create efficient and maintainable code that meets project requirements. - Utilize agile techniques, software architecture principles, and wider business knowledge, to plan and champion the development of (sub)projects within the business. Embedded Systems Development: - Develop software for embedded systems, understanding hardware-software interactions and real-time constraints. - Work with microcontrollers, sensors, actuators, motor control, comms and other embedded components. - STM based controllers and Linux experience with building bespoke C/C++ solutions. Application Software Development: - Contribute to the development of user interfaces, application logic, and backend systems for desktop, mobile, or web applications. - Ensure application software aligns with user requirements and provides a positive user experience. - Desktop and CLI solutions for internal and customer use as well as automation to interface and test product. Integration and Problem Solving: - Optimize code for performance, memory usage, and efficiency in both embedded and application software. - Identify and resolve software bottlenecks. - Diagnose and create solutions for issues around design requirements. Collaboration with Cross-Functional Teams: - Work closely with business analysts, product managers, and quality assurance teams to understand requirements and deliver software that meets stakeholder expectations. - Lead code reviews and provide constructive feedback to team members. Testing and Quality Assurance: - Develop and execute unit tests, integration tests, and system tests to ensure the reliability and functionality of both embedded and application software. - Provide input on creating and maintaining testable and auditable solutions. - Collaborate with QA teams to identify and address software defects. Documentation: - Create and maintain technical documentation, including design specifications, API documentation, and code documentation. - Ensure documentation is comprehensive and accessible to other team members.
Skills emphasised
- debugging
- Develop software
- microcontrollers
- communications
- Linux experience
- c programming language
- user experience
- problem solving skills
