HORUS/blog

Sep 5, 2026 · robotics-career · learning-robotics · ros2 · beginners

How to Get Into Robotics as a Software Engineer: A 2026 Roadmap

Learn ROS 2 on one cheap physical robot before anything else, treat lean stacks as a later decision, and here is the order that actually gets you hired.

Start with ROS 2 and one cheap physical robot, not a lean stack or a from-scratch build, because that is where the vocabulary lives. Your existing skills transfer further than you expect, and the new material is smaller than it looks: timing, coordinate frames, and hardware that lies. That flips if you already have a product, one machine and a deadline, where a leaner middleware such as HORUS is the shorter road. The rest of this roadmap is for a working software engineer who wants a route into robotics without quitting a job or starting a degree.

You can build a service that survives a traffic spike and you cannot make a small wheeled thing drive in a straight line, and that gap is oddly hard to explain to colleagues. Maybe a kit is still in its box because the setup guide assumed a version of Linux you do not run. Maybe you got through a tutorial, watched a simulated robot move, and could not tell whether you had learned something an employer would pay for or simply followed instructions well. Job adverts are not helping: they ask for ROS 2, C++, mapping, kinematics and sensor fusion, with five years of each, which reads like a wall rather than a door. And every time you ask where to begin, somebody answers with a different framework and a strong opinion about it. The question underneath all of that is simpler than the adverts make it look. What do I build, in what order, so that in six months I have something that proves I can do this?

Where should a software engineer actually start in robotics?

Buy one cheap machine with wheels, a camera and a computer you can log into, and make it drive to a place and stop without you touching it. That single sentence is the whole first milestone, and it is deliberately unglamorous. Do it with ROS 2, because the tutorials, the packages and the words in the job adverts all assume ROS 2, and starting anywhere else means translating every answer you find. Do it with hardware rather than only a simulator, because the physical version teaches the lessons that matter and the simulator hides them: the connector that works until the robot turns, the camera that returns a frame from a moment ago, the battery that sags and changes the robot's behaviour without changing your code. The two ways people lose their first three months are reading about four frameworks before touching one, and choosing something leaner because a blog post said the popular option was heavy. Both feel productive. Neither produces a robot, and a robot is the only thing that changes what you can claim.

What does robotics software work actually consist of?

Four layers and a great deal of glue. At the bottom are drivers, the code that turns a sensor or a motor into something the rest of the system can read or command. Above that is perception, which converts raw readings into statements like "there is a person two steps ahead". Above that is decision-making: what the robot should do next, which looks like the state machines and business logic you already write. And running alongside all of it is control, the part that repeatedly compares where the machine is with where it should be and corrects, on a schedule it cannot miss. Most software engineers land in the third layer first, then get pulled into integration, which is where the real work lives. The honest description of a robotics day is this: something is wrong by a small amount, and finding out which layer is lying takes longer than fixing it. Calibration, timestamps and coordinate frames account for a startling share of that time, which is why they appear so early in this roadmap.

What are my actual routes into robotics from software?

Seven routes exist and they suit different starting points, so the wrong question is which is best and the right one is which matches what you already have. Learning ROS 2 with a simulator is the default and the safest. Buying a small robot kit adds the failure modes simulation cannot teach. A controls course helps engineers who keep hitting oscillation and cannot name why. Contributing to an open robotics project builds a public record faster than any personal project. For someone who already has a specific machine and a timing problem rather than a career problem, a lean middleware is the route instead: HORUS, for example, is an open-source Apache-2.0 layer for Rust, Python and C++ where all three share the same shared-memory ring buffers, so a Python behaviour script and a compiled control loop exchange data on one machine without a conversion step, which is a narrow benefit and a real one. A vendor SDK suits people with a purchased robot on the desk. Firmware suits people drawn to the metal.

How do those routes compare?

Read this table by starting position rather than by ambition, because every route here works and only some of them work for you now. The middle column is the tax each route charges, not a syllabus, and the last two columns are the ones that decide it. Two warnings before the rows. None of these are exclusive, and the common professional sequence is the ecosystem first, then a lean transport later when a specific robot demands it, which is far easier than the reverse. And nothing here is a substitute for finishing something: a route is only good if it ends with a machine that moved.

OptionWho it is forWhat it assumes you knowWhen to pick itWhen not to
ROS 2 with a simulatorAlmost every newcomerLinux, Python, patience with build toolingYou want the field's vocabulary and other people's packagesYou already have a product and a deadline
A small wheeled robot kitPeople who learn by touching thingsBasic Linux and a willingness to break thingsYou need hardware failure modes earlyYour budget this year is zero
A controls courseEngineers who want to understand, not assembleMaths you have not used since schoolYour robot oscillates and you cannot name whyYou need a portfolio piece this quarter
Contributing to an open projectEngineers who already ship code dailyGit, code review, reading somebody else's stackYou want a public track record quicklyYou have not yet made anything move
HORUS or another lean middlewareEngineers with one machine and a loop that must not be lateOne of Rust, Python or C++, plus your own control codeYou are building a specific product, not a foundationYou need navigation, mapping and drivers given to you
A vendor SDKPeople with a bought machine already on the deskThat vendor's tools and termsYou want useful output in the first weekYou expect the knowledge to transfer elsewhere
Firmware and microcontrollersEngineers drawn to the metalC, datasheets, patience with wiringYou want to own the layer under everythingYour interest is autonomy and behaviour

Does the route change if I am a web developer, a backend engineer, or a student?

Yes, and mostly in which instinct you have to unlearn. A web developer brings the most transferable scarce skill in robotics, which is making an interface a human can understand under pressure; teams badly need people who can build a screen showing what the robot believes. The instinct to drop is that a slow response is merely annoying, because here a late answer is a machine that keeps moving. A backend engineer has the shortest distance to travel, since queues, backpressure, message ordering and clock skew are already daily vocabulary, and robotics is those problems with actuators attached and no retry. The habit to lose is treating a failed operation as something to repeat; an arm that missed does not simply try again from the same place. A student should optimise for access above everything: take the lab job, use the hardware the university already owns, and get your hands on machines you could never justify buying, because that access disappears the week you graduate.

What hardware should I buy to learn on?

Buy the cheapest complete machine that has wheels, a camera and a computer you can open a terminal on. That combination is the requirement, and the price is far less important than being unafraid to crash it. Avoid both extremes. A sealed consumer toy that only accepts commands from its own app teaches nothing, because you cannot get underneath it. An expensive arm teaches slowly, because you will move it cautiously and avoid the experiments that would actually teach you. A second-hand depth camera and a small single-board computer cover most of what a first year of learning needs. Later, add a microcontroller board, because eventually you will want to feel the layer where code meets a motor directly, and it is a cheap lesson. One piece of advice that saves months: pick hardware other people already use and write about. Debugging a robot is difficult on its own, and debugging a robot that nobody else owns removes the search results you would otherwise lean on.

How long does this take before someone will hire me?

Months of evenings, not years, provided you finish one machine rather than sampling five. A realistic shape looks like this: the first few weeks on Linux, the terminal and a simulator, because a large share of early suffering is operating-system suffering wearing a robotics costume. The following month on getting a real robot to do one task end to end. Then a month making that task work when you are not watching, which is where most of the learning actually happens and where most people quit. After that you have a video, a write-up, and answers to interview questions that come from experience rather than reading. What extends the timeline is predictable: switching frameworks partway, and choosing a hard robot type first. Drones and legged machines are magnificent and unforgiving, and a wheeled robot that reliably finds an object will teach you more per evening. Depth is the shortcut. One machine, taken all the way, beats a broad tour every time.

What do I need to know before I start?

Linux, one programming language, and enough patience to read a log properly. That is the entire entry requirement, and the mathematics people worry about arrives later and in the order your robot demands it. Be honest about the Linux part, because it is where beginners are quietly defeated: package installation, environment variables, file permissions, services that start at boot, and reading an error that describes a symptom several layers away from its cause. A week spent on the operating system alone makes everything afterwards feel dramatically easier. For the language, Python gets you further faster and covers most learning material, while a compiled language becomes necessary in exactly one place, the loop that cannot pause; the comparison of C and Python for a first robotics language covers where that line falls. What you do not need before starting is a controls textbook, a maths refresher, or a second framework. Those are things to reach for when a specific robot makes you want them.

What do I give up by moving into robotics?

You give up iteration speed, and often some salary. There is no hot reload on a physical machine: the loop between changing a line and knowing whether it worked is minutes, sometimes an afternoon, and occasionally it involves a screwdriver. Bugs have a physical cost, since a mistake can break a part and mean waiting for a delivery rather than reverting a commit. Remote work is scarcer, because the robot is in a building and somebody has to be near it. Compensation in robotics often trails the equivalent web or infrastructure role, particularly early. Those are the real trade-offs and they are worth stating plainly rather than discovering. What you get back is that the feedback is unambiguous. A robot either picked the thing up or did not, and there is no dashboard interpreting that for you. Engineers who thrive here are the ones who find that clarity worth the slower loop, and they usually know within a month which kind they are.

When is ROS 2 the better choice?

ROS 2 is the better choice for nearly every person reading a roadmap like this one, and pretending otherwise would waste your year. You are learning, which means you need other people's packages, other people's tutorials and other people's answers to the error you are staring at, and that is precisely what a large ecosystem provides. You need navigation and mapping handed to you so that your effort goes into the interesting part. You need the vocabulary that interviewers use as a filter. HORUS is not the answer to that problem and does not claim to be: it supplies no navigation, no mapping and no driver library, it is validated in simulation rather than across fleets of deployed machines, and a beginner who starts there spends the first month writing infrastructure instead of learning robotics. The case for a leaner layer arrives later, on a specific machine, with a specific timing problem you can describe. The honest assessment of learning ROS 2 goes deeper on that trade.

Do I need a robotics degree to get hired?

No, and here is why: robotics teams are chronically short of people who can write software that survives contact with hardware, and that skill is demonstrated rather than certified. A degree helps in two narrow places — research positions, and the specific companies that filter graduate applications by it — and outside those, hiring managers look at what you made. A video of a machine doing something useful, plus a clear explanation of what went wrong on the way there, outperforms a transcript in almost every interview. What a degree genuinely provides is the mathematics, and you can acquire the necessary parts in the order your robot demands: rotations and coordinate frames immediately, control theory when something oscillates, probability when a position estimate drifts. Learning it that way is slower in theory and faster in practice, because each idea arrives attached to a problem you already have. If you want the degree for its own sake, that is a good reason. Do not take it because you believe the door is closed otherwise.

Is my backend experience useless in robotics?

Partly, but not the way you think. The parts that transfer are larger than most people expect: a robot is a distributed system on wheels, and message ordering, backpressure, clock disagreement between machines, graceful degradation and observability are the daily material of both jobs. Your instinct to ask what happens when a component stops responding is exactly the right instinct here. What does not transfer is the assumption of a retry. A request that fails can be reissued; an arm that has already begun moving cannot be asked to reconsider, so the discipline shifts from recovering after a failure to refusing to start an action whose preconditions are not met. The second thing that does not transfer is average-case thinking. In a service, an occasional slow response is a statistic; on a robot, the slow one is the run where the machine hit something, so you design around the worst case rather than the typical one. Bring the architecture instincts and leave the tolerance for occasional lateness.

What does it look like when a self-taught robotics project stalls?

It stalls with a robot that works when you are watching it and fails when you are not, and with an engineer who cannot say which part is wrong. The usual sequence: everything runs fine on the desk, then the machine goes on the floor and clips a doorframe roughly once a day. Nothing crashes, no log shows an error, so there is nothing to search for. Underneath, it is almost always a freshness problem rather than a bug — a sensor reading older than assumed, two sources of position quietly disagreeing, or a queue dropping the oldest message under load while everything keeps returning plausible values. The habit that prevents it is not a package: always know how old the data in your hand is, and never treat two measurements as simultaneous merely because they arrived together. That habit is also why so many projects stall right after the prototype works, and it transfers to every stack you will ever touch.

How do I decide what to do this month?

Pick the smallest machine-shaped goal you can finish in four weeks and refuse every other robotics activity until it is done. Concretely: a robot that drives to a marked spot and stops, or an arm that picks up one specific object from one specific place. Write down what "done" means before starting, including the part where nobody is touching it. Then apply one filter that saves more time than any tool choice: do not learn a second framework until the first has moved something physical. Framework-hopping feels like progress because every new tool is easier at the start, and it produces engineers who have installed a lot and finished nothing. If you find yourself curious about language models directing robots, that is worth reading about rather than building this month; the honest answer on chat models controlling robots explains why the skills underneath have to exist first anyway. Finish the small thing. It changes what you can claim and what you can ask for.

Take the line that matches your situation:

The HORUS Fit Framework is the checklist behind those lines, and not one of its five axes is a number: ecosystem size, setup effort, team size fit, deployment target, and licence. Score any route you are weighing on all five, and the axis you cannot compromise on decides it.

Learn the ecosystem first and get one machine moving. When you later meet the robot that needs a leaner layer underneath, HORUS is open source under Apache-2.0 at github.com/softmata/horus. Star it so it is in your list when you start building.

Found this useful? Share it:Discuss on HNShare on X