Hi. I'm an Embedded Guy.

I've decided to create a separate Tech Blog distinct from my not-necessarily-tech-related blog, Tofu Blog. That way, if someone should find my Tech Blog interesting, he or she wouldn't have to wade through all of my other random musings. So without further delay, on with my inaugural Tech Blog Entry!

So it appears I was wrong yesterday when I wrote in my very first Tofu blog entry: I wouldn't even have to learn anything about CSS! Less than 24 hours later and I've started the Full Stack Web Developer Nanodegree program on Udacity. There's no avoiding CSS now.

I enrolled in the program to learn how to build a site for a data science-y project that I'm working on with a few friends of mine. I'm definitely not trying to find employment as a full stack web developer or anything like that. Moreover, I'm not even sure if anyone would hire me as a web developer at this point, even if I wanted to be one. Over the past few months I've started to realize that recruiters and hiring managers that read my resume or view my online profile increasingly see me as "an embedded guy".  I'm not entirely sure why. I list embedded programming as one of my skills, but I don't draw much attention to it. I don't describe myself as an "Experience Embedded Software Engineer" or anything like that. Instead, I describe myself as a software generalist. But I suppose people see the name of my employer and immediately make the mental connection that I must be an embedded guy.

The last 4 or 5 unsolicited messages I've received from recruiters were nearly identical.

"Hi! We're looking to hire talented embedded software engineers and your profile caught our attention! Would you be interested in joining our awesome embedded software team?"

And in the uncommon case where someone contacts me about an interesting non-embedded job opportunity, things quickly go to hell once they realize what kinds of targets I work on.

"So tell me about yourself! Are you doing more front-end development? Back-end?"

Me: "Well, actually, that kind of jargon -- front-end, back-end -- doesn't really apply to us since we're mostly working on smart phones and modules and IoT devices. Things like that."

"Oh. You're an embedded guy. Thanks a lot for talking to me Bye."

The real kicker was when I was contacted by an Amazon recruiter a while ago about a machine-learning + cloud computing type job. I told him that, while I'm currently not working in that space, I have great interest in it, having focused in A.I. and machine learning in my M.S. program, and that I've been taking cloud computing courses online in my spare time through Coursera. He said:

"Yeah... unfortunately, the hiring manager that I'm working for doesn't like embedded programmers. He thinks that they lose the ability to write higher level software."

Me: "I mean... but I can do other things. I swear it! In fact, I have done other things! I'm not just some... some... embedded guy."

"Well, I encourage you to keep taking those online courses. Bye"

The thing is, I honestly don't consider myself an embedded software engineer. I can't claim to know the ins and outs of the Linux kernel or I2C or anything. I'm a software generalist that happens to have experience doing low-level programming on embedded targets. I would never claim to be an embedded expert. Nor, for that matter, would I turn down the opportunity to work as a hardcore embedded software engineer and develop genuine expertise in embedded programming. That's something I can't claim to possess today without being an enormous liar.

I wonder if it's true what that hiring manager (supposedly) said -- that embedded programmers lose the ability to write high level software. I'm more inclined to believe that a seasoned embedded programmer who has been working down "close to the metal" for many years may need some time to adjust when coming back up to high level software again, but will do just as well once that period of adjustment is over, like a sailor whose been out at sea for a long time needing a little time to get his land legs back. Moreover, I think it works both ways. I suspect a great software engineer working at a high level could quickly adjust to doing low-level system programming if she wanted to.

Of course, what do I know? I'm just an embedded guy.