I once participated in a robotics workshop with the assignment to build and program a robot to perform a simple task. "Build a buggy that drives around in a confined space (white) in search of balls to bring back to its base (black)". We were given three motors, two light sensors, two pressure sensors and a programmable unit with a power supply. All of my rivals were better at programming than me and designed robots capable of fantastic tricks. I focused on hardware so that my robot would do as much it could do with hardware functionality, without relying on programming. The programming I used were just three operations to let it randomly cover as much ground as possible. Drive forward, hit a wall (turn left 140 degrees), drive over a nest (turn back 2s. and then turn left 110 degrees).
My robot got all the eggs in the nest within 2 min every time. None of my rival's robots managed to get any balls in the base.
Only ever use software for that which hardware can't do.