Sr. Embedded Software Developer
*Willing to relocate candidate to the Seattle, WA area
We’re looking for the next talented senior-level software developer to help develop next-generation embedded software that will be utilized in several key product-lines at the company. Our navigation solutions, both software and hardware, solve real-world problems in the Horizontal Drilling Industry and are used by real customers. Join our enthusiastic, extremely talented team as we build software-hardware products on a modern, modular, highly customizable C++ embedded Linux and C ST Microcontroller codebase.
DCI offers a highly collaborative work environment with a very challenging domain problem. Our Software Engineering organization prides itself in writing clean, quality, reusable source code; further, we also strongly believe in creative freedom for the developer, place trust in him or her, and don’t micromanage.
As a successful developer on this project, you will be given ownership of developing on and debugging embedded devices. Your core focus will be developing software on embedded Linux and periodically ST microcontrollers. As an added bonus, you will be able to take pride in your work as you see your code go to market and be leveraged by real customers solving real problems. It will be viewed favorably if you have experience to help write diagnostic and/or provisioning tools for our manufacturing line, which is co-located at our office.
• 5+ years of industry experience
• Self-driven, results oriented developer who strives to write clean, modular and well commented code without taking short-cuts and drives their software through the ‘final 10%’ to take a product to market
• Have successfully taken products to market that were written in modern C++ code.
• Comprehensive understanding of data structures and algorithm topics
• Experience with concurrency topics (i.e. threading and inter-process communication)
• Developing on Linux Operating Systems is required
• Strong proficiency with modern C++ is required, including the ability to communicate and implement object-oriented class designs.
• Strong experience with embedded software development is required, including the usage of lab tools such as oscilloscopes or serial analyzers to debug software, and the ability read electrical schematics.
• Experience with Qt stack or willingness to learn
• B.S. degree in Computer Science or Computer Engineering from an accredited university
• Candidate must demonstrate a passion for writing software, innovating and building stuff
• Developing automated unit tests and working with SDETs/QA to ensure product quality is a plus
• Experience interfacing application code with device drivers on Linux
• Linux kernel development, device trees, driver modification or backporting, and/or bootloader customization
• Experience with network programming topics (e.g. TCP, UDP, sockets, REST, etc.)
• Experience with Standard and BLE Bluetooth, Wi-Fi
• C# and/or Golang will be viewed favorably; preferably C#
• Experience with Jenkins Continuous Integration, Make and Google Test is a plus
• Ability to properly estimate tasks in an Agile setting is strongly desired