Agility Robotics · Software Engineer
Updated · 2026-10-02

Agility Robotics Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Agility Robotics builds robots meant to work alongside people. Candidates describe the Software Engineer role as touching object perception, locomotion and human-robot collaboration, and the reported projects include Cassie and Digit. The reported day-to-day is designing, coding and testing software components for robotic systems, working with hardware engineers and product managers so the software fits the physical machine, debugging and tuning existing code for speed and reliability, taking part in code reviews, and exploring new methods in robotics.

This guide is for software engineers interviewing at Agility Robotics, especially those with a few years of experience in robotics or automation. It covers the four reported rounds, the technical questions candidates report (algorithms, debugging, SLAM, navigation, modular architecture, communication protocols, perception troubleshooting, pathfinding), the behavioral questions, and a plan for the coding exercise and the final presentation.

Candidates report four rounds over roughly three to five weeks: a Recruiter Call, a Coding Exercise (sometimes a take-home), a set of Multiple Interviews, and a Final Interview built around presenting your work or your coding solution.

Coding Exercises / Coding AssessmentsPerception / Machine Vision (Robotics)Take-Home Technical Assignment

34 min read

Browse Software Engineer questions

See the practice prompts

17Practice promptsAcross five skill areas

The reported questions mix general software engineering with robotics-specific topics. The general ones are explaining an algorithm you built, debugging, optimizing a codebase and working with real-time systems. The robotics ones are SLAM, navigating a dynamic environment, a modular architecture for a robotic application, communication-protocol trade-offs, troubleshooting a robot that fails to recognize an object, and improving perception accuracy. Two coding questions are reported as well: detecting and classifying objects in an image, and pathfinding for a robot in a maze. Preparing means being able to write that code and also reason about the physical system it runs on.

Candidates describe a required toolkit of Python, C++ or Java, plus experience in robotics or a related field, with machine learning frameworks, agile practice and ROS listed as extras. Candidates also mention kinematics, perception and control theory as topics that can come up in discussion. You do not need to master all of them, but pick the language you will code in and be ready to name where you used it, and know enough ROS-style publish/subscribe and sensor-pipeline vocabulary to hold a design conversation.

The topics candidates associate with this loop are coding exercises, perception and machine vision, a take-home technical assignment, a technical presentation and open-ended problem solving. That shapes how to spend time: work the pathfinding and image-classification code until it is clean, rehearse a troubleshooting sequence for a failing perception system, and prepare one project you can present with its design choices, measurements and mistakes. Your behavioral stories should draw on the same material, so a performance story or a real-time story can double as presentation content.

01

Recruiter Call

reported

Candidates describe the first stage as a screening call with a recruiter about your background and why you want the role. No technical questions are reported for it by name, so treat it as the place to establish your fit and learn the shape of the rest of the loop, including whether the coding exercise is live or a take-home. Be concrete about your robotics or automation experience, since that is what the role requirements emphasise.

What to demonstrate

  • How your background lines up with the role as candidates describe it: software development in Python, C++ or Java, with robotics or automation experience
  • Your interest in the role and in robotics specifically
  • Basic communication, since it is a conversation rather than a technical exercise

How to prepare

  • Write a two-minute walkthrough of your career that ends on a robotics, perception, controls or embedded project, and the part you personally owned.
  • Prepare the answer to the motivation question (what draws you to robotics and where you want to go) so it is specific rather than generic.
  • Decide which language you will code in (Python, C++ or Java are the ones listed) and be ready to say where you have used it.
  • Ask what the Coding Exercise looks like (live or take-home) and what the Final Interview presentation should cover.
Agility Robotics Software Engineer candidate reports ↗
02

Coding Exercise

reported

Candidates report a coding exercise, and some describe it as a take-home assignment. The topics associated with this loop include coding assessments and a take-home technical assignment, and two reported coding questions are detecting and classifying objects in an image and pathfinding for a robot in a maze. Because the Final Interview is reported to involve presenting your solution, write the code as something you will have to explain: clear structure, tests, a short README stating assumptions, and notes on what you would improve.

What to demonstrate

  • Working, readable code in a language you chose
  • Choice of algorithm and data structure for problems such as grid pathfinding and image processing
  • How well you can later explain and defend the solution, since presentation is reported at the final stage

How to prepare

  • Implement breadth-first search and A* on a grid with obstacles, then handle a start or goal that is blocked, no path, and weighted cells.
  • Sketch a detect-and-classify pipeline (preprocess, propose regions or run a model, filter by confidence, classify) and decide which parts you would write by hand and which you would call from a library.
  • Write unit tests for your own solution and state the time and space complexity in comments or a README.
  • Keep a log of decisions and trade-offs as you code so the presentation material already exists.
Agility Robotics Software Engineer candidate reports ↗
03

Multiple Interviews

reported

The third stage is reported as Multiple Interviews that include behavioral assessments, technical problem-solving and discussions about past projects. The reported question types for this stage's themes include explaining an algorithm, debugging a robotic system, real-time systems, optimization, SLAM, navigating a dynamic environment, modular architecture and communication protocols, plus the leadership, conflict and motivation prompts. Because the sessions span several formats, prepare both technical frameworks and rehearsed stories.

What to demonstrate

  • Technical problem-solving across algorithms, debugging and robotics design topics
  • How you describe past projects: your role, decisions and results
  • Behavioral skills such as leading under pressure and resolving technical disagreements
  • Communication and collaboration with hardware and product colleagues, which the role description mentions

How to prepare

  • Rehearse a structured answer for SLAM: what it estimates, the sensors involved, the front end and back end, loop closure and drift.
  • Prepare a design outline for navigation in a dynamic environment covering perception, a map, global and local planning, replanning and safety stops.
  • Write a modular architecture sketch with message boundaries, plus a short comparison of communication options (latency, reliability, ordering, discovery).
  • Prepare two or three STAR stories covering real-time work, a performance optimization, a deadline you led and a technical disagreement.
Agility Robotics Software Engineer candidate reports ↗
04

Final Interview

reported

Candidates report that the Final Interview centres on presenting your work, or your solution to the coding challenge. That makes it a communication exercise as much as a technical one: explain the problem, your design, the results and what you would change, to an audience that may include people outside your specialty. Prepare slides or a walkthrough that you can cut short or expand, and be ready to defend each choice.

What to demonstrate

  • Clarity when presenting your own technical work
  • Depth of understanding of the decisions behind your solution or project
  • How you handle questions and alternatives to your approach

How to prepare

  • Choose between presenting your coding-challenge solution or a past robotics project, and structure it as problem, constraints, design, results, limitations.
  • Prepare one slide or section on a failure, a debugging story or a trade-off that you rejected and why.
  • Practise a version that fits in a short window and one that opens up for deeper questions on algorithms, perception accuracy or architecture.
  • Run the presentation aloud for someone outside your area and fix every place they ask for a definition.
Agility Robotics Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Treating the maze pathfinding question as a memorized algorithm

State the grid or graph model, the move set and how obstacles are represented before coding. Choose BFS for unweighted shortest paths or A* with an admissible heuristic such as Manhattan distance, handle no-path and blocked-start cases, and say how the answer changes when obstacles move and the plan must be recomputed.

02

Answering the failed object recognition scenario with 'retrain the model'

Walk the pipeline in order: sensor and calibration, lighting and exposure, preprocessing, model input and thresholds, then the output consumers. Compare frames that fail against frames that pass, check what changed, and only then decide whether data, model or configuration is the cause.

03

Giving performance or real-time stories with no measurements

Bring a baseline, a profile or trace, the specific change and the after numbers on the same workload, including worst-case or tail latency. If you cannot state those, choose a different story or prepare the figures first.

04

Giving design answers that name SLAM, ROS or a protocol but never state a trade-off

For navigation, architecture and communication questions, give requirements first, then at least two options with the reason you pick one: latency against reliability, coupling against flexibility, accuracy against compute. Say what fails when a sensor drops out or a node crashes.

05

Arriving at the final presentation unable to defend decisions in the coding solution

While solving the exercise, record why you chose each data structure, library and test, and what you would do with more time. Rehearse the presentation aloud and expect to justify the alternatives you did not choose.

Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.

12 technical prompts0 include a worked solution

Explain a complex algorithm you have implemented in a past project.

medium
Technical / Domain Questions

Explain a complex algorithm you have implemented in a past project.

Approach
  1. Pick an algorithm you personally designed or tuned, such as an A* planner, an extended Kalman filter, ICP scan matching or a scheduler, and open with the problem it solved and the constraint that made a library call insufficient (latency budget, memory, accuracy).
  2. Explain the core idea through its invariant or update step, for example 'the open set is a min-heap keyed on g + h, and with a consistent heuristic a popped node is never reopened', then state the time and space complexity in terms of the real input sizes.
  3. Name the alternatives you rejected and the deciding property: optimality versus speed, numerical stability, worst-case versus average behaviour, or ease of testing.
  4. Show how you verified it: comparison against a brute-force or reference implementation on small cases, edge-case unit tests, and a measured before/after number on real data.
  5. Close with what broke in production or on hardware and what you changed, so the answer shows ownership beyond the textbook version.
Follow-up
  • What input makes it hit its worst case, and how often did that happen on real data?
  • If you rewrote it today, what would you change first and why?
  • How did you test it for numerical or timing problems, not just logical correctness?

Write a function to detect and classify objects in an image.

medium
Coding / Algorithms

Write a function to detect and classify objects in an image.

Approach
  1. Clarify the scope before coding: classical computer vision or a pretrained detector, the input format (for example an H x W x 3 uint8 array and its channel order), the set of classes, and the output, such as a list of (bounding box, label, score).
  2. For a classical version: segment by colour or intensity threshold, find connected components with BFS or union-find in O(H x W), compute a bounding box and features (area, aspect ratio, mean colour) per component, then classify with simple rules or a small classifier. Discard components below a minimum area to remove noise.
  3. For a model-based version: preprocess to match training (resize, normalise, channel order), run the detector, decode boxes, filter by score, then apply non-maximum suppression. Sort by score, keep the top box, drop the rest whose IoU with it exceeds a threshold, and repeat (O(n^2) worst case for n boxes, usually per class).
  4. Write IoU correctly: intersection width and height are clamped at zero, and IoU = intersection / (area A + area B - intersection). Be explicit about whether box coordinates are inclusive or exclusive.
  5. Cover the edge cases: an empty image or no detections, touching objects that merge into one component, boxes clipped at the image border, and overlapping objects of the same class that NMS might wrongly suppress.
Follow-up
  • Implement IoU and NMS from scratch and test them on overlapping and non-overlapping boxes.
  • How would you make this run within a real-time frame budget on embedded hardware?
  • Two objects of the same class overlap heavily, and NMS removes one of them. How do you handle that?

How would you implement a pathfinding algorithm for a robot navigating through a maze?

medium
Coding / Algorithms

How would you implement a pathfinding algorithm for a robot navigating through a maze?

Approach
  1. Model the maze as a graph: grid cells are nodes and free neighbours are edges. Clarify 4- or 8-connectivity, whether moves have different costs, and the robot's footprint (inflate obstacles so a point-robot path is valid for the real robot).
  2. For uniform costs, BFS gives the shortest path in O(R x C) time and space. For weighted costs, use Dijkstra with a binary heap, O(E log V). A* adds a heuristic: Manhattan distance is admissible on a 4-connected unit grid, octile distance on an 8-connected grid with diagonal cost sqrt(2), and with a consistent heuristic no node needs reopening.
  3. Implementation details: a visited or closed set, a parent map to rebuild the path by walking back from the goal, and a tie-break on the priority queue. On 8-connected grids, prevent diagonal moves that cut a blocked corner.
  4. Edge cases: start equals goal, start or goal is blocked, the goal is unreachable (return an empty result rather than looping), and very large maps where memory for the open set matters.
  5. Connect it to a real robot: smooth the grid path, replan incrementally with D* Lite when new obstacles appear, and use hybrid A* or a state lattice when the robot has a turning radius or heading constraints.
Follow-up
  • A new obstacle appears on the path halfway through. How do you replan without starting from scratch?
  • The map is too large for full A* in memory or time. What do you change?
  • The robot cannot turn in place. How does the search change?

The plan follows the reported loop: coding exercise first, then the technical and behavioral topics from the multiple interviews, and the final presentation last. Each day ends with something you can produce or say aloud.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Map the loop and pick your stack
  • List the four reported rounds and mark what you still have to ask the recruiter, in particular whether the coding exercise is live or a take-home.
  • Choose your coding language from Python, C++ or Java, and write a short list of robotics projects, sensors, middleware (ROS if you know it) and real-time work you can speak about.
  • Write your two-minute career walkthrough and the motivation answer for working in robotics.

Deliverable: A one-page loop map, a language decision, a project inventory and written drafts of the walkthrough and motivation answer.

Practice prompt ↗
02Grid pathfinding in code
  • Implement BFS and A* on a grid with obstacles, in your chosen language, with tests for blocked start, blocked goal and no path.
  • Add weighted cells and a replanning step for when an obstacle appears mid-route.
  • Write down the complexity of each version and when you would pick one over the other.

Deliverable: Working, tested pathfinding code with a short note on complexity and replanning.

Practice prompt ↗
03Perception: build a detector and debug a failure
  • Write a function that takes an image, finds objects and returns labelled boxes, using a library for the model but your own code for preprocessing, thresholding and non-maximum suppression.
  • Write a troubleshooting checklist for a robot that fails to recognize an object, ordered from sensor and calibration through to the model.
  • Outline how you would measure and improve perception accuracy: a labelled validation set, per-class error analysis, targeted data and a regression test.

Deliverable: A detect-and-classify function with tests, plus a written troubleshooting order and an accuracy-improvement plan.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
04SLAM, navigation and architecture
  • Explain SLAM aloud in three levels: one sentence, a two-minute version and a diagram of the front end, back end and loop closure.
  • Sketch a navigation system for a dynamic environment, covering perception, mapping, global and local planning, replanning and a safe stop.
  • Draw a modular architecture for a robotic application, then compare two communication options on latency, reliability and coupling.

Deliverable: Three diagrams (SLAM, navigation, modular architecture) and a one-page protocol trade-off table.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
05Past work and debugging stories
  • Pick the complex algorithm you will explain and write its problem, alternatives considered, complexity and the result.
  • Write your debugging sequence for a robotic system: reproduce, isolate hardware from software, check logs and timestamps, bisect, then confirm the fix.
  • Collect the numbers for one real-time story and one performance optimization story.

Deliverable: An algorithm explanation, a debugging checklist and two metric-backed story outlines.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Leadership and conflict stories
  • Write the deadline-leadership story in STAR form, including what you cut and how you communicated risk.
  • Write the technical-disagreement story with the criteria, the evidence and the outcome.
  • Say both aloud to another person and trim each until the decision, not the background, takes most of the time.

Deliverable: Two rehearsed STAR stories with the decision points highlighted.

Practice prompt ↗Practice prompt ↗
07Build and rehearse the final presentation
  • Assemble a presentation of your coding solution or a past project: problem, constraints, design, results, limitations.
  • Run it aloud for someone outside your specialty and fix every point where they ask for a definition.
  • Do one full mock pass: motivation answer, a design question and the presentation, noting weak spots to patch.

Deliverable: A finished presentation plus a list of the weakest answers from the mock pass.

Expand any day for tasks and deliverables. Your progress is saved on this device.

The behavioral parts of the loop are reported to sit within the Multiple Interviews stage, alongside technical problem-solving and discussions of past projects. For this role they come down to real-time and performance experience, leading work against a deadline, handling technical disagreements, and why robotics. Prepare stories where you made the decision and can give numbers, because the same stories will feed the project discussion.

Discuss your experience with real-time systems and the challenges they present.

medium
Technical / Domain Questions

Discuss your experience with real-time systems and the challenges they present.

Approach
  1. Use a project where you owned a timing constraint, such as a control loop, sensor-processing pipeline or message handler that had to finish within a fixed period. State the period and the consequence of missing it, and separate hard deadlines (a miss is a failure) from soft ones (a miss degrades quality).
  2. Name the real challenges you handled: jitter, priority inversion, allocation or locking inside the critical loop, blocking I/O, and interrupts or other threads competing for the same core. Say which you actually hit, rather than listing all of them.
  3. Describe how you measured: worst-case and tail latency from timestamps or tracing, not the average, and under realistic load. A story that shows a missed deadline you found with measurement is stronger than one claiming it never happened.
  4. Give your fix and its cost, for example moving work out of the loop, preallocating buffers, replacing a mutex with a lock-free queue or a bounded handoff, raising thread priority or pinning cores, with the trade-off in complexity or throughput. End with the result and what you would redo.
  5. If you lack hard real-time experience, use the closest case honestly (a latency-sensitive service, an audio or video pipeline) and say how the constraints differ.
Follow-up
  • What was your worst-case latency versus the average, and how did you find it?
  • How do you avoid priority inversion when a high-priority task needs a resource held by a low-priority one?
  • What would you do if the deadline is occasionally missed and the robot cannot simply stop?

Can you describe a time you optimized a codebase for performance?

medium
Technical / Domain Questions

Can you describe a time you optimized a codebase for performance?

Approach
  1. Open with the problem in one or two sentences: what was slow, for whom, and the target (a latency, throughput, memory or startup figure). If you cannot put a number on it, pick another story.
  2. Show measure-first discipline: you profiled (sampling profiler, flame graph, benchmark harness, tracing) and found the hot spot rather than guessing. State the baseline you recorded before changing anything.
  3. Explain the change by category and why it applied: a better algorithm or data structure, removing repeated work, cutting allocations or copies, improving cache locality, batching, or parallelism. Say what you rejected.
  4. Prove it: before and after numbers on the same workload, a correctness check (tests or output comparison), and a guard such as a benchmark in CI so the gain is not lost.
  5. Mention the cost: added complexity, a readability trade-off or a risk you contained, and how you reviewed it with teammates.
Follow-up
  • How did you know that function was the bottleneck and not just the most visible one?
  • Did the optimization change any behavior, and how did you verify it did not?
  • When did you decide the code was fast enough to stop?

Describe a situation where you had to lead a project under tight deadlines.

medium
Behavioral / Leadership

Describe a situation where you had to lead a project under tight deadlines.

Approach
  1. Choose a project where you were the person responsible for the outcome, with a fixed external deadline and real constraints. Say in one sentence what was at stake and what your role was.
  2. Show how you planned: breaking the work into milestones, identifying the riskiest piece first, and agreeing with stakeholders what was in and out of scope. Cutting scope deliberately is a better story than working harder.
  3. Show how you led other people: assigning work to strengths, unblocking, short check-ins, and how you communicated bad news early. Use I for your actions and name what teammates did.
  4. Describe one hard decision made under pressure (a shortcut taken, a feature dropped, a risk accepted) and how you limited the damage, for example with tests or a rollback plan.
  5. Close with the result against the deadline and what you changed afterward. The mistake that sinks this story is a hero narrative of long hours with no decisions or planning in it.
Follow-up
  • What did you decide not to do, and who agreed to that?
  • How did you find out the schedule was at risk, and when did you tell people?
  • What technical debt did you leave behind, and did you pay it down?

How do you handle conflict within a team, especially when it involves technical disagreements?

medium
Behavioral / Leadership

How do you handle conflict within a team, especially when it involves technical disagreements?

Approach
  1. Pick a real technical disagreement, such as architecture, a library or protocol choice, or a testing approach, where both positions were reasonable. Present the other person's view fairly and in its strongest form.
  2. Explain how you moved from opinion to evidence: agreeing on the criteria first (latency, maintainability, safety, schedule), then a prototype, benchmark, spike or review of failure cases to compare options.
  3. Show your communication: you listened and asked questions, kept the discussion on the problem rather than the person, and involved a third person or lead only when the two of you were stuck.
  4. State the outcome, including cases where you lost. Committing to a decision you disagreed with and helping it succeed is a good answer; so is changing your mind and saying why.
  5. Finish with the relationship afterward and what you do differently now. The mistake that sinks it is a story where the other person was simply wrong.
Follow-up
  • What evidence would have changed your mind?
  • What if the disagreement was with your manager or with a hardware engineer who owned the constraint?
  • How did you make sure the decision was recorded and not reopened?

What motivates you to work in robotics, and how do you see your career evolving in this field?

medium
Behavioral / Leadership

What motivates you to work in robotics, and how do you see your career evolving in this field?

Approach
  1. Answer the first half with specifics: the project, experience or problem that pulled you toward robotics, and what about it holds your interest, such as software that meets physical sensors and actuators, where bugs show up as real motion.
  2. Link it to the areas candidates report for this role (perception, locomotion, human-robot collaboration) and to work you have done or built on your own. Show that you know what you would be doing day to day, rather than that you admire the field.
  3. For career direction, describe a realistic path: skills you want to deepen (for example perception, controls, real-time software or systems architecture), and whether you see yourself growing as an individual contributor or leading people. Tie each to something you would learn in this role.
  4. Be honest about gaps. If you come from non-robotics software, say what you are doing to close the gap, such as projects in ROS or a simulator.
  5. Keep it short and forward-looking; the mistake that sinks it is a generic passion statement that could be said for any company.
Follow-up
  • What robotics project have you built or studied closely, and what did you learn from it?
  • Which part of the stack do you want to grow into, and what is your first step?
  • What would make you decide this was not the right role?
  • 01

    Discuss your experience with real-time systems and the challenges they present.

  • 02

    Can you describe a time you optimized a codebase for performance?

  • 03

    Describe a situation where you had to lead a project under tight deadlines.

  • 04

    How do you handle conflict within a team, especially when it involves technical disagreements?

  • 05

    What motivates you to work in robotics, and how do you see your career evolving in this field?

PracHub preparation framework ↗
How many rounds are there and how long does the process take?

Candidates report four rounds: a Recruiter Call, a Coding Exercise, Multiple Interviews and a Final Interview, over roughly three to five weeks. Treat that as reported experience, and ask your recruiter for the exact format of your loop.

Agility Robotics Software Engineer candidate reports ↗
Is the coding exercise a take-home or a live session?

Candidates describe it as a coding exercise or a take-home assignment, so both are reported. Ask the recruiter which applies. Prepare for both by practising grid pathfinding and an image detect-and-classify function, and by writing tests and a short README for anything you submit.

Agility Robotics Software Engineer candidate reports ↗
Which programming languages should I prepare in?

Candidates describe Python, C++ or Java as the required languages, with machine learning frameworks, agile practice and ROS as nice-to-have. Choose the one you are fastest and cleanest in and ask whether you can use it, rather than switching languages right before the loop.

Agility Robotics Software Engineer candidate reports ↗
What does the final interview involve?

Candidates report a presentation of your work or of your solution to the coding challenge. Prepare a structure (problem, constraints, design, results, limitations), rehearse it for an audience outside your specialty, and be ready for questions on the alternatives you rejected.

Agility Robotics Software Engineer candidate reports ↗
Do I need robotics experience and domain knowledge like SLAM?

Candidates describe the role as requiring experience in robotics or a related field, and SLAM, navigation and perception questions are reported. If your experience is elsewhere, build a small project in a simulator or with ROS, and be able to explain SLAM, path planning and a perception pipeline clearly.

Agility Robotics Software Engineer candidate reports ↗
How should I prepare for the behavioral questions?

Prepare STAR stories for real-time work, a performance optimization, leading under a deadline and a technical disagreement, plus a specific answer for why robotics. Bring numbers and your own decisions, and use the same projects for your presentation so the material is consistent.

PracHub Software Engineer practice ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.