Been there, done that.
I've been doing the software on everything from automated test equipment (take some piece of electronic gear, connect it to a rack of test equipment, push a button, and let it run all kinds of automated tests), to embedded s/w inside shipping room freight scales, to controls on hydraulic equipment (user interface, machine vision/measurement systems, analog and digital i/o) - for comparison, if you walked into a factory and saw some automated piece of equipment manufacturing something it will either have a PLC or an embedded PC of some sort and somebody had to write the o/s and control systems for it.
It's never boring, but it is a whole lot of work. A lot of times it feels good to step back and watch it all work when you finish. The frustrating part is explaining to the guy looking over your shoulder why it is so (*&#$ hard just to turn on a light! Is it burned out? Is there a short somewhere? Is it connected? Power? Fuse? Switch not working? Sending a bit to the wrong address? Sending a bit to the right address but the memory map is wrong? ...