Associate Software Engineer, Embedded Development
Job description
About the role
This role develops software for physical economy devices as part of Relay's embedded systems team. The position suits an early career engineer who will own work end to end on hardware and software.
Software engineers turn product ideas into working code. Engineers work in small teams, review each other's work, and ship in small batches. Most teams follow agile practices such as sprints and daily standups. Engineers also write tests, fix bugs, and improve performance. The field values clear communication as much as technical skill. Engineers spend part of every week on planning, code review, and debugging, not just writing new code. The ability to explain a technical decision in plain words separates strong engineers from the rest.
Key facts
What you'll do
Common application issues are isolated and reproduced using in-house embedded test harnesses that drive products programmatically, with test and verification as a core focus.
New embedded products are brought up across hardware platforms through coordinated team effort.
Test and development processes across the organization are improved for greater efficiency.
Requirements
A B.S. in Computer Science, Mathematics, Physics, or a related field is required.
Linux comfort includes navigating the filesystem, managing processes, reading logs, and debugging system behavior at the command line.
A self-starter mindset demonstrates genuine curiosity about how hardware and software systems work and fail.
Strong organizational skills manage workload with minimal oversight.
Clear communication translates complex technical concepts for non-technical stakeholders and collaborates across teams.
Nice to have
Experience with Android development or familiarity with AOSP, including custom ROMs, the Android build system, or working with AOSP source.
Hands-on experience with embedded platforms such as STM32, nRF52/53, or ESP32 through professional or personal projects.
Linux experience in any context, such as running Linux as a daily driver, self-hosting servers, personal embedded projects, or tinkering with hardware like a Raspberry Pi.
Exposure to cellular technologies or mobile network protocols.
Familiarity with scripting languages like Python or Bash for test automation.
Experience writing or executing test cases for embedded or hardware systems.
Prior work with version control or CI/CD tools such as Git or Jenkins.
Practical notes
Typical interview steps
Hiring for engineering roles usually starts with a recruiter screen, followed by one or two technical rounds. Candidates often solve a coding problem, discuss past projects, and answer system design questions. Some loops include a take-home task. Final rounds typically cover team fit and give candidates a chance to ask questions. Interviewers look for how you break down an unfamiliar problem, not just whether you reach the answer. Practicing a few problems aloud and reviewing your own past projects are the best preparation.
Good to know
Embedded development at this role spans Linux, Android, and microcontroller ecosystems. The position emphasizes test-driven workflows and rapid iteration on physical devices used by frontline workers.
Questions to ask
Useful questions for the interview: what a typical week looks like, how work is assigned, what tools the team uses, and how feedback works. Asking how the role has changed recently and what the team wishes it had known when joining is also reasonable. Questions about the manager's priorities are especially valued.
Career growth
Engineering careers usually progress from individual contributor to senior, staff, and principal levels. Some engineers move into management and lead teams of five to twenty people. Others stay on the technical track. Growth follows demonstrated impact, not tenure alone. A typical engineering ladder has clear levels with defined expectations for scope, quality, and mentorship. Moving up usually requires owning outcomes end to end rather than completing assigned tickets.