Hacker News new | ask | show | jobs
by freedomben 637 days ago
I pivoted from hardware to software by getting a CS degree. I would only recommend doing it if the jobs you want require a CS degree. Even then, I would probably look around and find a company who doesn't require a CS degree, as the companies that do are becoming rarer and rarer. Rather than going back to school, I would use your current foot-in-the-door to try and get more involved in the technical side of things. There's usually at least one dev who loves to explain things in as excruciating detail as you want, though definitely let him know you're asking because you want to learn, not because you want to manage.

I'm sure that many people will disagree with this, but I also don't think there's a ton of value in an MSCS unless you have a BSCS or similar technical undergrad, or unless you study/prepare your ass off learning the fundamentals before starting grad school. A CS degree certainly isn't required to be a great engineer, but most of the great engineers I've worked with did have one. The underpinnings provided by a good BSCS program will make you much better at the design side of software.

If you want to do the prep work, between MIT and other online courses it's all out there for you. You can also audit great courses for cheap at most any school you choose. Some of the most helpful classes are Algorithms, Data Structures, Operating Systems (yes! knowing what the OS is doing underneath you is important for writing performant and reliable code), and Computer Security (you should at least be writing a basic buffer overflow exploit in this class, such as the classic "defuse the bomb" assignment).

So to summarize, IIWM, I would try to find opportunities in your current role to get deeper into the technical, then practice practice practice on your own. Build a non-trivial app that does something you need. Open source it and do a Show HN, and you'll get a ton of feedback, some of which will be extremely helpful for you. Also show it to your colleagues and ask for feedback. Then look for jobs that don't require a degree. You could reasonably be getting an engineering job in 12 to 24 months. If you really want to go for the MSCS, make sure to thoroughly prepare yourself with undergrad-level work. The MSCS will (or should at least) expect you to already have a base knowledge in algorithms, data structures, and other CS-related things, and while most people can get through the program without this, they will get far, far less out of it than they could have.