Field robotics. Technically very challenging (involves computer science, math, physics, electrical engineering, mechanical engineering, control systems engineering, etc.) and very fun. Provides many different areas to specialize in, e.g. perception, planning, learning, control, etc. And you get to spend time physically working with machines just as often (if not more) than sitting at your laptop writing code.<p>For example, my formal background is in computer science and a large part of my job involves applied math, physics, algorithm design, and writing code but I am now also involved in electronics design and mechanical design (picked these things up on the job). Further, I spend many days outside working with vehicles, powered wheelchairs, and other mechatronic devices: <a href="http://www.youtube.com/watch?v=1fPgIPgzIfc" rel="nofollow">http://www.youtube.com/watch?v=1fPgIPgzIfc</a> I happen to work in an industry building assistive devices for people with limited physical abilities but depending on the application area you can be outside doing numerous physical things, for example, look at iRobot's involvement with the gulf oil crisis: <a href="http://www.irobot.com/gi/more_information/gulf_oil_spill_response/" rel="nofollow">http://www.irobot.com/gi/more_information/gulf_oil_spill_res...</a> Heck, the guys at Willow Garage recently went on a dev sprint to have the PR2 (one of their robots) fetch them beers: <a href="http://www.youtube.com/watch?v=c3Cq0sy4TBs" rel="nofollow">http://www.youtube.com/watch?v=c3Cq0sy4TBs</a><p>There is a somewhat steep learning curve to becoming a "guru" in the field due to how broad the required skill set is yet at the same time, due to the breadth of skills needed to build useful systems, if you have depth in a particular area (e.g. writing code) there is definitely room for you to fit in on a team and you can pick up the stuff you don't know over time as you get more exposure to it.