My specialty is embedded systems, which is essentially computing for things that are devices: the computer in your car, your microwave, that nifty handheld gadget thay your kid likes so much, a Wii, a cell phone... pretty much any kind of thing that has a computer that isn't a desktop/workstation/server/laptop kind of thing.
There is work available for .NET and C# programmers, Java experts, and the like (AKA "application" programmers). That's a departure from what I do: I talk to machines and bend them to my will... or at least coax them into doing what they're supposed to do in the first place. It used to be-- until probably the last five years or so-- that the distinction between application programmers and embedded programmers wasn't that big and switching between them was do-able. Now, it's pretty much separate paths of development, completely different needs analyses, completely different structures, ways of looking at problems... like, say, the difference between a plumber and an electrician.
I made my choice to stay with machine-side (AKA "ironside") development for a handful of very good reasons:
1.) Machines tend to be deterministic (meaning that when you tell them to do something, they do it in the same way repeatably) and well-behaved, and people-side (AKA "meatside") development has to deal with unpredictable people-based behavior, which is not only heavily influenced by the technological trends of the day (i.e. Microsoft) and psychology, but everybody and their brother wants to be a GUI designer.
2.) There are a lot more devices out there than there are "computers", by a wide margin; current estimates run about 1000:1. Theoretically, this should translate into a bigger job market. Practically, it's apples-and-oranges: most devices run one program, or a very small number of them, where the "computer" runs scads of software.
3.) Iron-side computing tends to remain solid and in place for long periods of time; you generally don't update your microwave's computer every year, or re-flash your alarm clock periodically... it's just expected to work. That means it generally takes time to develop, because you don't want to have to recall all of those devices because somebody shipped out buggy code. This lends itself toward craftsmanship, which is something that I get.
But now I'm looking at the trends in the Embedded Systems market, and it's starting to splinter and balkanize. It's heading into a deeper fragmentation of specialties within it that I can't possibly keep up with, and it's driving me nuts because the Industry wants an Identity to be able to fit into their business plan, and there really isn't a label for a "versatile embedded systems designer/architect/engineer".
So in looking at what I do, and trying to figure out how in the hell I'm supposed to pimp my shit to potential employers, the label that floats to the top is this:
Yeah, that's pretty much what I do.
But it's not a job description. It conjures up this image of a crazy guy making weird shit in his basement out of tubes and wires and motors and parts...
Um, yeah. Come to think of it, that pretty much fits.
But fuck on a stick, there aren't any jobs out there for inventors. There aren't any "inventors wanted" ads that are anything but trying to sell you services. The inventor track is pretty much entirely tied into entrepreneurship: remember the guys who built Apple Computers? Or Hewlett-Packard? Or Nikola Tesla and Thomas Edison? They built businesses out of whole cloth, built entire industries out of seeing a niche and having the right idea at the right time.
But those were guys from a different era. The global concept of "right idea, right time" is still sound, but it doesn't necessarily fit into a nice sustainable package anymore. Entrepreneurship doesn't provide a monthly paycheck or health insurance unless you get really lucky: for every Steve Jobs out there, there are a million other guys whose dreams took major dirt naps.
I have wonderful ideas. Brilliant, even. And I have them often enough to be more than a flash in the pan.
What I don't have is a ready way to turn that into a steady paycheck.