> Now is an awesome time to be a software engineer (probably best time ever).
I don't agree with this statement at all, as it's getting harder and harder to find low-level work (e.g., C and *asm) and that's the __only__ kind of programming that I enjoy doing.
I'll start looking for another career when I have to consider putting words like ``full-stack'' or ``cloud'' on my resume in order to find work.
Then start looking at companies that primarily produce hardware. Trust me, it's getting harder and harder to find people who even know what a pointer is. To the point where we simply assume the people we hire won't and we'll just have to abstract it away for them.
I hear what you are saying. In my last job I worked on real-time signal processing code, and there was a definite lack of software engineers who understood the low-level code and the various target platforms. In fact, many of the software developers, myself included, were EEs.
Where I see a problem though, and this goes for my former employer, is that the requirements for the jobs often extend beyond just being proficient with low-level development. You say you would like to "find people who even know what a pointer is". However, I read job reqs like the ones from the company rayiner posted require "extensive" experience in some particular niche of low-level coding, in addition to low-level/real-time development in general. That makes me think its easy enough to find people that companies can afford to be picky, even if they have to wait a little while.
So, if it really is that hard to find people, why write reqs and recruit in such a way as to discourage or reject people who have some experience, but not the "right" experience?
> Then start looking at companies that primarily produce hardware.
I have in the past. The problem is that I have a BS in Computer Science and most hardware companies hire only Computer Engineers for low-level programming work (among other things).
Well, it certainly sounds like you're more than capable of working really hard and achieving good grades. Having to struggle isn't a bad thing - the key is learning to enjoy the feeling (not easy, I'll admit).
At least where I went to school they had family student housing for grad students who were married. Going to grad school would likely involve you taking a student loan, but then you'd be able to make more money afterwards.
Keep in mind that while you're under 30 (and assuming you don't yet have kids and a mortgage) you have a lot more room and leeway to take risks than later in life. Don't lock yourself into misery too early in life. :)
> ... most hardware companies hire only Computer Engineers for low-level programming work (among other things).
I have a computer engineering degree—I will cheerfully work with anybody who can get the job done. EE, CS, physics, you name it. My experience has been that low-level skills are only weakly correlated with degree. You want the person who was writing device drivers in high school.
I studied software engineering in New Zealand, but the course is under the Electrical Engineering department so we also took a few courses on processor design, logic gates, assembly etc.
Is it actually common for CS grads in the states to not have covered that stuff?
My university required CS majors to take logic design and microprocessor architecture. Beyond that, it was up to the student to choose concentrations, of which computer architecture and systems programming were choices.
I work in assembly and C, and like HeyLaughingBoy, I strongly disagree that there's any shortage of such work. If anything there's a significant shortage of good applicants.
Where have you been looking? Are you constrained geographically?
If you're in Maryland, have you considered looking in the Dulles Corridor? There are more than a few places there that need someone who knows what a pointer is. A lot of military contracting stuff with embedded systems and whatnot. I used to work at a company that does military wireless technology that has several job openings for embedded guys (http://www.sharedspectrum.com/careers). I also know Motorola has an office that has a lot of people doing embedded software work. Maybe think along those lines...
I already replied higher up with a suggestion to check in to the sciences. Seeing as you're in Maryland you're pretty much right in America's Biotechnology hotbed.
You don't have to go to hardware companies to find these positions. Look at companies that support the internet, not the ones that use it. Such as DNS or OS level positions. The majority of resolvers still just run on plain old C and do it very well.
> it's getting harder and harder to find low-level work
That doesn't match with my (current job seeking) experience at all, the embedded market is really healthy at the moment. What sort of keywords are you searching on?
Go to space companies and apply for positions with "avionics" in the title. It'll be a mix of people from software and hardware backgrounds, but everyone deals with hardware on a low level.
You might also want to look for jobs in the sciences there is a demand for highly optimized code in many fields that is often written at least partially in C. Offloading stuff to GPUs provides even more additional low-level programming challenges as well as parallel algorithm work.
I don't agree with this statement at all, as it's getting harder and harder to find low-level work (e.g., C and *asm) and that's the __only__ kind of programming that I enjoy doing.
I'll start looking for another career when I have to consider putting words like ``full-stack'' or ``cloud'' on my resume in order to find work.