Senior Software Engineer
Company: Atomic Machines Inc.
Location: Santa Clara
Posted on: March 17, 2023
Job Description:
Atomic Machines is developing an entirely new digital
manufacturing platform ("AMP") that will enable the creation of
micro-scale machines that existing technologies are unable to
produce. Our zero-tooling platform will have a profound impact on
the rate of industry-wide innovation while enabling mass scale
production of transformational devices. We are also designing and
building devices ourselves utilizing our platform, and our first
products have exceptional product/market fit.
This is the starting point for us in pursuit of a massive
world-changing mission that promises to radically enhance
humanity's command of matter. Joining forces with us means becoming
part of an incredibly talented, inventive and passionate
multi-disciplinary team running hard to make our platform, products
and vision a reality. You will have the opportunity to help define
the company from its earliest days. You'll be challenged to learn
and grow as a builder and a leader as the company itself grows
rapidly. And you will receive significant equity compensation -
you'll truly be a company owner and benefit financially from our
overall success.
Our engineering offices are in Berkeley and Santa Clara,
California.
About The Role:
We are seeking a seasoned software engineer who will architect,
design, and build any and all code above the embedded level in the
software stack, i.e. from the operating system up.
What You'll Do:
- Design and build AMPOS, the distributed software system that
controls the AMP manufacturing platform, a truly novel fabrication
system for micro-devices and components. Your software will
orchestrate all of the activities of the fab, from high-level
workflow planning to the code that operates individual robotic
nodes and automated material transport.
- Work at multiple levels of the software stack, and must be
"fluent" at all levels: operating system (including real-time OS),
device drivers, and otherwise communicating with low-level code
controlling hardware, network (building distributed systems with
complex communication patterns), structured APIs, databases and
associated architectures and algorithms.
- Architect and design complex systems that must scale to very
large numbers (e.g. production quantities per unit time), be highly
robust (meaning fault tolerant, designed to uptime requirements),
high performance and both monitorable and controllable.
- Code in a variety of languages, as needed for the situation.
This role will involve a prolific amount of coding - we're not
looking for an ivory-tower architect type, but a real builder.
- Thrive within the Scrum methodology (which means we're looking
for at least excitement from the candidate about the principles,
but ideally significant experience building complex software
systems in Scrum and an understanding of its benefits).
- Partner productively with other peer software engineers in team
projects. What You'll Need:
- Ability to code fluently in multiple languages, at multiple
levels of the stack. Should understand code compilation and
optimization and the "at the metal" interface to hardware. Should
have strong ability in: a low level language like C, C++, or Rust;
a compiled language like Go, C++, or Java; a scripting language
like Python or JavaScript.
- A strong understanding of: Computer hardware architecture. How
operating systems work. How networking works from the protocol
level up.
- Experience building complex distributed software systems.
Should understand principles of API design and software interfaces.
Should have experience working as part of a team, designing &
architecting major system components, and writing production
code.
- Experience building complex systems that control hardware.
Should have experience communicating with low-level protocols &
working with hardware-oriented teams during the development
process. Should have experience deploying & validating new software
running on novel hardware.
- Ability to identify and structure ambiguous problems. Broad
understanding of classic computer science problems & relevant
algorithms. Some examples we've encountered: TSP - for optimizing
toolpaths. State Machines - for structuring manufacturing work. Job
Shop & Queueing Theory - for scheduling manufacturing work.
Computer Vision - for inspecting & locating work materials.
- Experience instrumenting software systems for monitoring and
debugging. Should know the tools used for debugging and
observability and how to design systems for reliability.
- Understanding of and proclivity for agile development
methodologies.
- Bachelor of Science in Computer Science (bonus points for an
advanced degree).
The compensation range for this position is $150-200K, plus equity
and benefits.
Keywords: Atomic Machines Inc., Santa Clara , Senior Software Engineer, IT / Software / Systems , Santa Clara, California
Didn't find what you're looking for? Search again!
Loading more jobs...