Job Description Summary
Responsible for designing, developing and testing embedded software (firmware) platforms and systems that runs on devices with in-house/adapted hardware.
As part of a multi-developer firmware team the major responsibilities will include analysis, design, implementation and testing of firmware for the Distribution and Industrial product lines. The Software Developer will report to the Senior Embedded Software Manager.
Job Description Essential Responsibilities
- Designs and develops a small module or a larger feature according to requirements, under guidance of a senior developer
- Identifies scope of assigned work and provides a factual initial estimate
- Executes in a fast-paced delivery mode and focuses in delivering tasks to meet the product release goal
- Fundamental knowledge of version control systems, particularly Git, for basic code management and collaboration
- Basic understanding of developing and executing Unit Tests using Google Tests to support software quality and reliability
- Interest in learning DevOps principles and tools to support software development and operational processes
- Introductory experience with pipeline automation tools, including Jenkins and GitHub Actions, to aid in streamlining CI/CD processes
- Familiarity with static analysis tools such as Coverity and Aqua for initial exposure to code security assessment and vulnerability detection
- Performs root cause analysis of assigned software defects and implements solution
- Works closely with peers, engages with team to learn, contribute, brainstorm, converge on technical designs and discussions
- Follows SDLC process, maintains code quality through best practices, code reviews and unit testing
- Documents to capture all stages of work as per guidelines
- Bachelor’s Degree in Electrical Engineering, Computer Engineering or Computer Science
- Minimum 2 years of embedded development with C/C++ in a professional setting- C++ programming skills and understanding of object-oriented design and development
- Python programming skills and understanding
- Understanding of microcontrollers and peripherals
- Exposure to Real-Time Operating Systems (e.g. VxWorks, TI-RTOS, Thread-X) and/or embedded Linux
- Hands-on experience debugging firmware, including using emulators (ICE/JTAG), oscilloscope and logic analyzer
- Exposure to TCP/IP networking protocols is an asset
- Strong problem solving and analytical abilities
- Strong initiative and communication skills
Additional Information
Relocation Assistance Provided:No