Software Engineer, Product/UX
Role details
Job location
Tech stack
Job description
At Monumental, we're building an operating system to make on-site construction possible with robotics. Atrium, our operating system for construction, allows us to do everything from 3D reconstruction of a construction site (through photogrammetry), design 3D structures that will be built, up to the supply chain, path planning, and motion control of our robots. You can read about how we control robots with TypeScript in this post by our CTO, Sebaastian.
We believe our software stack is state-of-the-art and pushing the boundaries in multiple ways, but we have so far not spent sufficient time on making it actually usable for our robot operators on the field. You will help to own the product and user experience, working directly alongside our CTO. Because of the technical nature of our product, we believe this person should be a software engineer with a strong affinity for product, UX and design.
If you enjoy building software products from start to finish on your own-from sketching a prototype, doing a bit of UX design work, and actually implementing the code-this role might be a perfect fit for you. You'll get a high level of autonomy and an opportunity to build software that will move real hardware around.
Some of the types of challenges you might be working on:
- Building an in-browser, 3D design environment for various construction structures (e.g. walls, windows, door frames, etc.)
- Designing the optimal frontend experience for multi-robot command & control
- Building ad-hoc visualizations to help us understand where we are in time, space or other relevant dimensions
- Writing clean, idiomatic and typed TypeScript/React code
- Designing and building tools to allow us to manage a growing fleet of robots, distributed across multiple sites
- Learning how to interface with our robotics backend and in-browser WASM runtime, entirely written in Rust
What you'll be responsible for:
- Taking a problem statement and converting it into a spec, mock design, or a quick and dirty prototype in code
- Prototyping and building interfaces for internal use to run and debug running hardware
- Writing and owning clean, idiomatic and typed production-level TypeScript/React code
- Debugging and performing root cause analysis of memory leaks, crashes and other problems
- Working collaboratively with our team of hardware engineers, control engineers, and robot operators to come up with the best product experience for complicated problems
- Taking full ownership of a project, going from idea to prototype to finished project
Requirements
- Proven experience in software engineering and building complex web applications in the browser in idiomatic TypeScript (React experience is a plus)
- Experience with 3D graphics, ideally in the browser (e.g., Three.js or WebGL) or otherwise in other programming environments (e.g. Unity)
- Experience with UX design. We don't expect you to be a superstar visual/UX designer or to spend time working on user stories or conducting interviews, but you are able to design frontends without a team providing you with designs and specs
- Proven experience in building prototypes or products in a zero-to-one environment, on your own or in a very small team (this can be a side-project, indie app, or other project you can show us)
- 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
- Comfortable picking up new languages and tools (experience with Rust is a strong bonus)
- 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)