Summary:
The Embedded Software Engineer will develop and support our industry-leading traffic products. The successful candidate will help create innovative products that enhance pedestrian and traffic safety.
JOB DUTIES:
Include but are not limited to the following:
· Designing, developing, coding, testing, and debugging embedded software.
· Integrating, verifying, and validating new product designs and design changes.
· Performing design and code reviews.
· Collaborating with cross-functional teams to design and develop embedded software solutions for IoT projects.
· Implementing, testing, and maintaining embedded software applications, drivers, and firmware components.
· Working with real-time operating systems (RTOS) or embedded Linux environments to ensure optimal system performance.
· Developing and integrating network stacks to facilitate seamless communication within embedded systems.
· Applying your expertise in communication protocols (e.g., TCP/IP, MQTT, CoAP) for efficient data exchange in IoT applications.
· Troubleshooting and debugging software and hardware issues to enhance system performance and resolve issues.
· Participating in code reviews and contributing to the improvement of development processes and best practices.
· Staying updated with the latest advancements in embedded software development, RTOS, and IoT technologies.
· Maintaining and enhancing embedded software for existing product lines.
· Supporting the Product Support team with intimate product knowledge.
· Contributing to a fun and innovative work environment.
Experience:
- Degree in Computer Science, Electrical Engineering, or related field, or 8+ years equivalent experience in embedded systems development without a degree.
- Minimum 5+ years of embedded systems development experience, including 2+ years of hands-on experience in connected/IoT projects; college projects are not considered as IoT experience
Skills:
- Familiarity with various ARM architectures, including microcontrollers and application processors (e.g. Cortex M4, M7, A7, A53).
- Proficiency in programming languages such as C and C++ for embedded systems.
- Familiarity with OOP design principles.
- Real time development experience with and without an RTOS, in resource-constrained environments, Zephyr RTOS and embedded Linux preferred.
- In-depth understanding of network protocols and communication stacks (e.g. Ethernet) in embedded environments.
- Hands-on experience with IoT communication protocols (e.g., MQTT, CoAP, HTTP, WebSocket).
- Familiarity with security considerations in embedded systems, including knowledge of secure coding practices and protocols (e.g., TLS/SSL, x509 certificates).
- Expertise in cloud connectivity for IoT solutions, with experience integrating devices with cloud platforms (e.g., AWS IoT, Google Cloud IoT, Azure IoT).
- Ability to implement secure authentication and authorization mechanisms for embedded devices in a cloud environment.
- Knowledge of version control systems (e.g., Git) and collaborative development workflows.
- Experience with wireless communication technologies like Wi-Fi, Bluetooth LE, LoRa (preferred).
- Understanding of secure coding practices and cybersecurity considerations in embedded systems (preferred).
- Ability to read schematics to troubleshoot, debug and bring up new hardware using oscilloscopes, logic analyzers, protocol analyzers and in-circuit emulators (preferred).
Soft Skills:
- Strong problem-solving skills. Highly technical, quickly grasping how things work.
- Effective verbal and written communication skills.
- Flexibility and adaptability to evolving project requirements and technological landscapes.
- Ability to work both independently with minimal supervision, and collaboratively with a cross functional team.
- Ability to thrive in a fast-paced, collaborative team environment with high visibility, accountability, and development velocity.
- Differentiates value added activities from waste.
- Enthusiasm for innovation and a proactive attitude toward learning and adopting new technologies.