> 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 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).