As an oldish (40+) programmer who's only recently got into robotics (the simple stuff - arduino, sparkfun, xbee, khr3-hv), coding the control software to make a robot actually do stuff is way more challenging than the supposedly complex projects I work at on my day job. Programming a robot kit to walk or pull poses is simple enough, but coding 'any form of 'intelligent' decision making ends up with lines and lines of code and as many sensors you can sensibly add to the hardware.
I thought it would be pretty simple to build and code a robot cleaner - like a basic remote control car that just drives around the house with a duster underneath which heads back home when the batteries are running low and recharges. Clearly the challenge of climbing the stairs can move to the version 2 release, but if I stick it on the first floor, just stopping it falling down the stairs needs around five sensors and over 500 lines of code.
Two cameras for 3D spatial awareness? Try coding it to tell the difference between and apple and an orange. Built in GPS to get an absolute position reference? Even if you get a signal, 5 meter accuracy doesn't help much when you are driving it towards a lift shaft.
That's why I love this stuff.