Embedded software engineer
Try Notion
Embedded software engineer
About Terraform
Terraform is automating on-site construction with robotics and software. Our mission is to make construction primarily software-defined and work towards a future where beautiful, bespoke buildings are built within a single day with minimal labor.
We're in the first days of building the company and we are recruiting for the early engineering team. This is a unique opportunity to be one of the first ten employees at a startup be immersed in a high-growth, high ambition startup environment, and to work with an experienced founding team surrounded by top-tier investors from day 1.
You can read a bit more on working at Terraform, why we believe you should spend your time working on construction, learn more about our vision and about the company.
About this role
You’ll help us write software for the various microcontrollers and subsystems that we use to drive our robotics. Example things you’ll be working on:
Define the software and communication architecture in a distributed system with multiple robots while reasoning through various trade-offs.
Write embedded software that takes commands from our planning and control systems and drives actuators to actually move in the right way.
Write code that collects high-frequency, real-time sensor data from multiple microcontrollers and stores them on a centralized machine for later analysis and debugging.
Eliminate or minimize all the friction around dealing with lots of small distributed subsystems. Writing scripts to automate common and repeated tasks should come to you naturally.
What you'll be responsible for
Writing code to enable quick prototyping and evaluation of new hardware and designs for the rest of the team.
Writing, debugging and owning the code running on our microcontrollers such as ESP32s, Arduino’s and uSteppers.
Developing low-level drivers for interfaces like CAN, LIN, I2C, SPI, Ethernet, and Bluetooth.
Troubleshooting and performing root cause analysis of system crashes and other failures.
What we’re looking for
Experience in embedded/real-time software engineering in software systems that interface with hardware systems. You should be comfortable with embedded systems development, microcontrollers, or firmware programming.
Software engineering skills and best practices. You use git for version control, know how to do unit tests or how to automate deployment of your code.
Expertise in embedded C or C++ programming and preferably in Rust.
A solid understanding of embedded computer systems architecture. You’re familiar with RTOS, embedded Linux distro’s and going beyond user space when necessary.
Strong familiarity with Linux systems engineering and conventions. E.g., you’re comfortable around the /sys and /dev directories and know how to get stuff done there.
Knowledge of both high- and low-level communication protocols, from I2C and SPI to CAN and TCP/IP Protocols.
Experience developing comprehensive testing - from unit tests to hardware-in-the-loop tests.
Basic knowledge of electrical engineering fundamentals to support low-level debugging. Ability to read electrical engineering schematics and component datasheets.
B.Sc. in Computer Science or equivalent.
Interested? Apply for this job or get in touch with us: iwanttojoin@terraform.ai, and tell us a bit about the most interesting or difficult project you’ve worked on to date.
If you don’t meet all the qualifications here but are excited about Terraform and feel you’d still be able to help us solve difficult problems, do get in touch. We are open to generalists with a demonstrated ability to focus on outcomes and get things done and are comfortable with you learning things as you go along.