Embedded Software Engineer
Based in our Everett, WA facility, we are looking for a C++ developer responsible for building applications that run on an embedded Linux system. Your primary responsibility will be to develop existing and future world beating measurement and signal generation instrumentation, interfacing with other global hardware and software development teams on a range of metrology products. In addition to C++ programming skills, we expect the ability to design using UML and the ability to debug embedded systems.
The team is focused on developing a scalable, crossplatform architecture for use on a wide range of Fluke Calibration instruments.
- Design, build, and maintain efficient, reusable, and reliable C++ code
- Design, implement, test and maintain firmware for Fluke instrumentation based on Embedded (Angstrom) Linux, and Altera SoC technology.
- Implement performance and quality modules, identify bottlenecks and bugs, and devise solutions to these problems
- Help maintain code quality, organization, and automatization
- Follow department standards for software development, including project planning, documentation, design reviews, software testing, project status reporting, and software configuration management.
- Work with engineering team members and other departments as necessary to deliver a superior product. This includes communicating with teams overseas.
- Bachelor's degree in Computer Science, Computer Engineering, or Electrical Engineering with computer and software emphasis.
- Strong proficiency in C++, with fair knowledge of the language specification
- Thorough knowledge of the standard library, STL containers, and algorithms
- Good understanding of memory management in non-garbage collected environments
- Understanding of dynamic polymorphism and C++ specific notions, such as friend classes
- Knowledge of the latest C++11 standard is appreciated
- Ability to understand and design using UML.
- Familiarity with embedded systems design, low-level hardware interactions Knowledge of low-level threading primitives and real-time environments
- Proficient understanding of code versioning tools such as Git
- Experience developing multi-process applications using Linux/Unix sockets and RPC.
Preferred Skills Include:
- Experience with scripting languages such as Python and Perl.
- Knowledge of the automated build systems.
- GUI development using Qt.