About the Role
Who we are:
We're a US-Serbian tech company building Autofocals: glasses that give people over 50 clear vision at every distance, automatically. Eye tracking works out where you're looking; a variable-power lens system follows. Launching 2027. See more about what we're making at autofocals.ai.
The job:
The frame of our glasses is a self-contained computer. Image capture, eye tracking and lens control all run on the device, inside a fixed latency and power budget, and they run offline. Connectivity is occasional and deliberate: configuration, diagnostics, and updates. Behind that sit the backend services that follow a frame through its life: order, design, manufacturing, configuration, and monitoring once it is with the wearer.
That last stage is key. Every unit we ship will have to be configured, diagnosed and updated across those brief connected windows for years. This means compatibility, update safety and rollback are immediate and inherent design constraints which we’re addressing right now as we set the architecture.
We're hiring more software engineers; each will cover part of this. We expect candidates to be proficient in either embedded development or the design of distributed systems.
What you'd work on:
- On-device software and embedded Linux: image capture, integrating the eye tracker, lens actuation and telemetry, within the device's latency and power budget.
- The device side of configuration, diagnostics and firmware update: verifying an update, applying it safely, and rolling back when it fails.
- The wire protocol and schema between the frame and everything outside it.
- Cross-compilation, video pipelines, serial and I2C, and the habit of expecting a hardware revision.
- Backend, distributed systems and networking: the services that carry a frame from order through design and manufacturing to configuration: their APIs, persistence, deployment, and the operational side of running them.
- Maintaining the fleet of frames: device identity, staged rollout and rollback, health telemetry, and diagnosing faults that reproduce only on a single wearer's frame.
What we're looking for:
- A demonstrated record of production software: systems you built, shipped, and then maintained over years through protocol changes, hardware revisions, degraded networks and your own earlier design decisions. Expect to go deep on one of them in the interview: what failed and what you changed, not which technologies were on the list.
- Senior: you own your part of the system end to end, set its architecture, and reject unnecessary complexity. You pick up unfamiliar technology when the problem needs it.
- Rust is our primary language, device to server, for everything that ships. The lowest-level embedded work is C and C++, and Python carries tooling, analysis and prototyping, where speed of development matters more than runtime guarantees. Not knowing Rust isn't a blocker, since we are looking for engineering ability, not knowledge of frameworks.
- Use of Claude to move faster, while knowing where it stops being trustworthy.
Location:
On-site in our Belgrade office, where the hardware is. Up to 2 days remote per week.
Compensation and benefits:
- Net monthly salary of EUR 3,000 – 4,500 on an employment contract, depending on experience.
- Employee stock options, vesting over 4 years.
- 25 vacation days.
- Private health insurance.
- A chance at glory and greatness through building the biggest thing in vision tech since Ben Franklin invented bifocals in 1785.
Requirements
Embedded development
Proficiency in developing software for embedded systems is essential.
Distributed systems
Experience in designing and implementing distributed systems is required.
Rust programming
Strong skills in Rust programming language are necessary for this role.
Production software experience
A proven track record of building and maintaining production software is important.
Nice to Have
Familiarity with C and C++ for low-level embedded work is a plus.
Experience with Python for tooling and prototyping is beneficial.
Benefits
Competitive salary
Net monthly salary of EUR 3,000 – 4,500 based on experience.
Employee stock options
Stock options vesting over 4 years are offered.
Vacation days
Enjoy 25 vacation days per year.
Health insurance
Private health insurance is provided.