The Embedded Software Engineer will be responsible for the development of embedded software applications and the modification/maintenance of existing embedded software.
- Bachelor's degree in Electrical Engineering, Computer Engineering or Computer Science
- 5+ years of experience in embedded systems
- Experience with FPGA logic design, synthesis and layout
- Experience with VHDL or Verilog coding and programming
- Experience with C and/or C++ program design, development, and troubleshooting
- Experience in the development of scientific software preferred
- Experience with digital image processing and digital signal processing preferred
- Experience leading a team preferred
Knowledge, Skills & Abilities:
- Experience with Nvidia CUDA a plus
- Experience with OpenCV a plus
- Experience with Nvidia CUDA optimization and OpenCV is a plus.
- Linux development experience
Principal (Essential Duties):
- Evaluates and creates specifications, architecture and design of software products independently and in collaboration with the Software team
- Participate in the development, debugging, testing, deployment, maintenance and all phases of the Software Development Lifecycle (SDLC)
- Provides technical guidance and support to all software development team members
- Provides guidance in developing solutions to complex software programming problems, which requires the knowledge from past software experiences and creativity.
- Participate in all facets of agile software development initiatives including iteration/sprint planning, scheduling, retrospect's, troubleshooting, paired programming, debugging, unit testing, code reviews and support software process improvements
- Accurately scopes project time and resources required to complete programming projects
- Plays a core role in team based creation of requirements, specifications, architecture and design of software products
- Produce high-quality, documented, reusable and testable code both independently and in a team environment
- Investigates components of new tools and techniques
- Maintains current knowledge on the latest technologies relevant to the role regarding algorithms, language, design methodology, third-party development tools, application platforms, hardware compatibility and operating systems.