Job Description
Job Description
Job Title: Software Engineer
Job Description
This role leads the design, implementation, and testing of innovative software solutions that exceed customer needs, with a strong focus on Linux-based embedded systems and modern C++ development. You will act as a technical leader, championing continuous improvement and agile practices, and modeling best practices in software design, architecture, and code quality. The position requires a deep understanding of software engineering principles, automated testing, and development tooling, as well as the ability to collaborate across teams and clearly communicate technical concepts to stakeholders.
Responsibilities
- Lead the design, implementation, and testing of robust software solutions that meet and exceed customer requirements.
- Working on display and touchscreen systems
- Writing test cases and test procedures
- Mentor and guide less experienced team members, providing technical assistance, constructive feedback, and ongoing support across teams.
- Serve as a technical leader in discussions and initiatives to improve software solutions, development processes, and engineering practices.
- Champion continuous improvement, agile practices, and change initiatives by identifying issues and resolving them using root cause analysis or similar methods.
- Model best practices in code quality and actively lead code reviews to foster a culture of clean, maintainable, and well-documented code.
- Facilitate cross-team collaboration, including organizing and leading meetings, aligning priorities, and helping resolve conflicts to maintain progress.
- Create, update, and maintain technical documentation, development processes, and coding standards to ensure clarity and consistency.
- Deliver high-quality, working code and effectively demonstrate product features to stakeholders and broader internal audiences.
- Actively participate in retrospectives, showing openness to feedback and a commitment to continuous team and personal growth.
- Develop and maintain a comprehensive understanding of the products and their impact in the field to inform design and implementation decisions.
- Apply software design and architecture principles, including SOLID and clean architecture concepts, to build scalable and maintainable systems.
- Use automated testing frameworks and test-driven development practices to ensure reliability and stability of software components.
- Employ debugging and profiling tools to diagnose complex issues and drive them to resolution.
- Utilize continuous integration tools and workflows to maintain a high level of build and release quality.
Essential Skills
- Bachelor’s degree or higher in Computer Science, Software Engineering, or a related engineering discipline.
- 2+ years of product development experience focused on software products.
- 2+ years of professional experience and strong understanding of C++.
- Minimum 2 years of DO-178 experience
- Proficiency in C and C++ for systems and application-level development.
- Hands-on experience with embedded C in real-time and embedded environments.
- Solid understanding of real-time operating systems (RTOS) concepts.
- Strong software engineering fundamentals, including requirements analysis, design, implementation, testing, and maintenance.
- Experience with software design and architecture, including applying design principles such as SOLID and clean or pragmatic architecture.
- Proficiency with test-driven development and design, continuous integration, and Scrum or Agile development methods.
Additional Skills & Qualifications
- Experience with Qt Designer and QML for user interface development.
- Understanding of UI/UX design fundamentals, including visual design, interaction design, prototyping, and usability testing.
- Exposure to or experience with vision processing and machine learning concepts or applications.
- Experience with robotics and robotic path planning.
- Familiarity with geospatial functions and concepts.
- Ability to read and interpret electrical schematics and pinouts.
- Strong foundations in mathematical concepts relevant to software engineering, algorithms, and problem solving.
- Experience with Perforce as an additional version control system.
- Comfort working in cross-functional, collaborative teams and presenting technical topics to varied audiences.
Work Environment
This is an office-based role supporting software development activities. You will work in a collaborative engineering environment that emphasizes agile practices, continuous integration, and aut