Software Engineer, Platform
Role details
Job location
Tech stack
Job description
We're looking for a software engineer who wants to build software that can touch the physical world, not another SaaS product. You'll develop and deploy software that controls fleets of autonomous construction robots. Our software stack is very broad, covering everything from microcontroller firmware up to the UI that operators use to control the robots. We've built CAD tools for designing masonry structures, path planning and motion control, telemetry and inspection tools, and distributed data storage and sync.
The technical challenges we're solving combine hardware, software, and infrastructure at scale - while maintaining high availability on construction sites. Atrium, our operating system for construction, is built with TypeScript and Rust. Much of our Rust code is compiled to WebAssembly, allowing our UI to interface directly with the same control code that we deploy to our robots. This gives us a shared stack between real-world deployments and simulated runs in the front-end.
Help us bring our robots to life and join our mission to bring automation to the construction industry to create affordable, beautiful, high-quality housing for everyone. If you're new to robotics, you might enjoy reading Bouke's blog post on his experience joining Monumental as a software engineer. You might also enjoy seeing this video by Andreas Klinger of what our office environment looks like.
What you'll be responsible for
- Designing the core architecture of our platform, and choosing the right abstractions to map the messy world of construction into elegant software
- Working collaboratively with our team of hardware engineers, control engineers, and robot operators to improve the reliability and performance of our platform
- Building tools and dashboards to manage and monitor a growing, distributed fleet of robots across multiple construction sites
- Debugging complex issues that cut across the stack, from WiFi connection issues with robot systems to race conditions in concurrent Rust code
Requirements
Do you have experience in TypeScript?, * Industry experience building and deploying production systems in multiple languages (Rust experience is valuable but not required)
- Strong CS or mathematics foundation- you are a strong geometric thinker, understand basic linear algebra and 3D transformations
- Basic familiarity with Linux systems and conventions. E.g., you're comfortable SSH'ing into other machines to figure out why something isn't working
- Knowledge of common communication protocols, e.g. UDP, TCP/IP and WebSockets
- A strong sense of ownership and motivation. You're able to drive problems and projects start-to-finish without someone project managing you, and can thrive in a chaotic environment.
- A high percentage of our software team have been a technical founder, CTO, or founding engineer before. If that's your background, you'll likely fit in. But we also get excited by people with a demonstrated background of shipping impressive work at any type of company.