Hacker News new | ask | show | jobs
by atroyn 3984 days ago
Your story sounds a lot like mine, I'm just a little further down the road.

I graduated with a Bachelor's in Computer Engineering (i.e. as a hardware guy) five years ago.

I spent my very early career trying stuff out. I did an internship as a software engineer, then I started out as a graduate consultant doing no engineering at all, then I started my own company where I helped hack together the prototype, and most recently I've been working as a data engineer and web developer.

I learned a lot about the industry from many different point of view, but more importantly I learned a lot about myself. I figured out software in general and the web in particular isn't for me - I need to get my hands dirty and I need to build physical products to feel satisfied.

So I'm going back to get my master's from a hardware-focused CS program with a major research and interdisciplinary component where I can really get back to my undergrad 'roots' with VHDL, SPICE and soldering iron, as well as learning a bunch of new stuff about embedded systems, robotics and machine vision. I haven't been this excited about technology in a long time.

The upshot of all of this is that you don't have to have it all figured out right now, and taking the time to really learn about something that interests you is extremely valuable. So is having depth in two very valuable technical skillsets. Time spent learning is never 'wasted' and if you decide to come back to EE/ECE or go deep on embedded systems, you totally can - and you'll probably kick ass at it because you'll have experience and maturity others might not have.

Finally, from a market point of view, there's a weird convergence going on, of which the proliferation of embedded systems is just the vanguard. Batteries are getting cheaper lighter and smaller, SDR is becoming more and more common, automation is becoming increasingly necessary, and machine-machine communication is going to need whole new infrastructures. It's a good time to know what's going on at the low level while knowing what software could/should do.