Senior Embedded Software Engineer
San Francisco, CA, USA
Posted on Saturday, March 11, 2023
Headquartered in San Francisco, California, with offices in Stuttgart, Germany, Shaper was founded in 2012 with a mission of making precision cutting easy and accessible to craftspeople everywhere. In pursuit of that goal, Shaper developed Origin, the world's first handheld CNC router. Today, Shaper supports thousands of woodworkers and craftspeople around the globe with an expanding range of hardware and software tools that are designed to intuitively meet users' creative needs.
We’re looking for a Senior Embedded Software Engineer to join our engineering team. This role is focused on microcontroller firmware development and linux kernel/driver development.
About this role:
In this role you will serve as the technical lead for the design, development, and maintenance of the low-level software that makes Shaper’s hardware products tick. Shaper’s firmware is a sophisticated codebase with a focus on reliability, operator safety, and real-time execution of tasks for precision, closed-loop motion control. It is compiled against multiple targets and leverages custom drivers to communicate with a Linux host system running on an application processor. As such, this role will be expected to work on both embedded C/C++ microcontroller code (ARM M cores) and on Linux kernel and driver code running on ARM A cores. You will be expected to build code that is well documented, capable of utilizing hardware-in-the-loop continuous integration and unit testing, and highly maintainable and extensible across multiple platforms. A successful applicant to this role should be extremely comfortable dealing with ambiguity and does not shy away from proposing and owning product architectures to meet high-level product goals. This role will report to the SVP of Engineering, but you will work closely with manufacturing engineers, electrical engineers, mechanical engineers, program managers, and system architects.
Depending on the applicant, this role may manage one or more other embedded software engineers. At a minimum this role will serve as a technical leader and mentor to other embedded software engineers at Shaper.
Where You'll Work:
This role is being offered as in-person (flexible). You’ll work alongside your peers in our new workspace in San Francisco's SoMa district. You’ll have access to our 5000 square foot workshop which is fully kitted out with all the woodworking machinery you could ever wish for (including Origin). There is an expectation that you will spend time in the office (as you will be working on hardware platforms that may only exist at Shaper HQ). The exact in-office/at-home schedule is flexible. You’ll work with your manager on identifying when you are required on-site.
- Write well documented C and C++ code for both microcontrollers and application processors.
- Maintain and extend a modern Linux kernel for multiple hardware platforms.
- Build and extend maintainable build scripts for microcontroller firmware as part of our full embedded system image
- Leverage both on-site and cloud-based CI/CD systems to test and verify your code
- Work closely with mechanical and electrical engineers to make architectural design decisions and to implement sophisticated electromechanical control systems
- Work directly with our silicon vendor partners to debug issues with controllers, sensors, and more
- Manage less senior embedded software developers by leveraging their strengths while helping them grow technically and professionally
- Own the software design for products that leverage your software, including contributing to product definition, helping to define electromechanical requirements, identifying key qualification and testing needs, and more
- Have a Bachelor or Masters degree in an applicable engineering or technical field (Computer Science, Computer Engineering, Electrical Engineering, etc.)
- Have 5+ years of industry experience working on building software for embedded systems, and have shipped at least one product with your production code to customers
- Are a hands-on engineer with a passion for tackling complex problems
- Are a solution-oriented go-getter with a strong bias toward action
- Live and breathe Linux and are comfortable configuring and compiling a kernel from scratch
- Have extensive experience writing firmware for ARM M-class microcontrollers (M0, M4, M7, M33, etc) in C, C++, and even assembly when the situation arises
- Have experience writing state machine and control loop algorithms
- Have written drivers for communicating with devices over I2C, UART, SPI, USB, MIPI, and/or CAN from an MCU
- Have experience writing unit tests and integrating them with a CI/CD system to automatically test and validate your software
- Have experience working with a QA team to validate customer-facing software
- Understand security best practices for deploying hardware with proprietary software to the world
- Have at least intermediate-level Python experience
- Are skilled at using Git version control, and are comfortable with branching, tagging, and tracking upstream repos
- Are experienced in multiple programming and scripting languages and do not shy away from learning new ones on the job
- Have excellent written and verbal communication skills, and love writing good documentation as much as you love building software
- Enjoy sharing your knowledge and working in a collaborative environment
- Thrive when working with ambiguous or vague product definitions early in the concepting and prototyping phase of new technology
- Are excited about contributing to product definition and requirements, not simply ingesting requirements that are given to you
Bonus Points if You:
- Have built Linux distros using Yocto and are comfortable reading and writing Bitbake recipes
- Are familiar with U-Boot or similar bootloaders
- Are skilled in modern Python development
- Have upstreamed changes to the Linux Kernel and/or are active on developer mailing lists
- Understand how to read electrical component datasheets, and have an intimate knowledge of computer processor microarchitectures
- Understand how motors (Steppers, DC, Servo, etc) function
- Are familiar with computational geometry and computer vision algorithms
- Have operated a CNC machine, or have built a hobby CNC machine or 3D printer
- Are a woodworker or a maker
What we Offer:
- Take-what-you-need vacation and sick leave policy
- Generous medical, dental, and vision benefits
- Generous parental leave
- 401k plan with matching
- Commuter benefits
- Employee discounts Shaper’s products and from our partner brands
- Access to a full woodshop at our San Francisco HQ, with support from experienced staff to help realize your projects
Although we do our best to list everything we are looking for in a candidate, we are very likely missing skills and/or attributes that could make you a great fit for the role. Research has shown that women and other marginalized groups are less likely to apply if they don’t clearly meet every requirement. This means we both might miss out on a great opportunity—it never hurts to take a chance and apply.