Ask HN: Is a Masters in CS/Engineering worth it for a mid-career PM?
I’m a PM & designer in his late 30s who is itching to get into deep tech (BCI, AI, aerospace, medtech, etc). I have no background in engineering and am considering pursuing a masters either in CS or similar.
Has anyone here done this mid-career? Was it worth it?
91 comments
[ 2.0 ms ] story [ 192 ms ] threadOn the other hand, the masters program will introduce you to a new network of people, and working towards a goal with a cohort is much more motivating than learning by yourself.
What are you wanting to do with the degree?
What are the requirements for the roles you're interested in?
Does the masters get you there or will you need to get some other experience along the way?
Do you know someone in the field who can point you to where you want to be and maybe skip some of the issues they had?
Are you willing to start as a junior technologist and work your way up again?
- Learn python by watching the freecodecamp videos on YouTube.
- Learn AI stuff (enough to build some really useful shit) by watching the FastAI course on YouTube.
Don't worry about not having any good ideas on what to build when you start out. Once you start taking the FastAI class, the lecturer point out many good ideas, which lead to your own ideas.
And you know, practice, build some small stuff, build some bigger stuff, talk about it, write about it, network, etc.
I think a masters that gave you expertise in the subject area be better than a generic CS masters. These are quite different areas. For medtech (and possibly BCI) medical compliance qualifications might open more doors than CS. For AI a masters in CS focusing on AI would presumably be a lot of use. I have no idea about aerospace but its seems likely that a different degree would be better than CS.
If instead you want to become a software engineer, then by all means do a CS degree, perhaps one which allows you to focus on the deep tech domain that interests you most.
And while you'll absolutely learn some things and find yourself excited about some ideas in those couple years, you will forget almost all of the stuff your learned within a few years of graduating because you won't be continuing to get your hands dirty and won't be building on the knowledge. Technical knowledge does not "stick" if you don't use it.
If you're a hungry learner and have the free time and money, you can go back to school for whatever you want. This sounds adjacent to your work, at least, so that's something. But remember that formal education is only the first and smallest step in learning a technical discipline, and it sounds like you want to continue PM'ing rather than transition to a technical IC, so you won't be continuing on the later steps.
If you're just trying to be the best technical PM you can be in your industry, there are almost certainly far more time/cost/stress-efficient ways to do so.
* Depending on your industry and its maturity, there may be courework or certification tracks designed for managers, etc (still expensive, but better focused)
* Regularly attend technical conferences in your industry. Sit for sessions and presentations on those deeper topics, work hard to understand them, make a point to follow up on what you're exposed to, make connections with people who can amplify your knowledge and keep you inspired, etc (broadly cheaper, and ongoing)
* Audit classes and seminars. Generally, you do not need to be enrolled in a degree program to attend classes and learn things. But you do often need to make a personal connection with whoever is leading it and get their permission. You may sometimes need to lay fees. (cheap, ongoing, deep; maybe not convenient if you're not near a suitable university)
* saturate yourself in the technical meetup circles in your area and do your best to catch up and keep up. As with conference, find friendly people who can help you learn and keep you inspired (cheap, ongoing, maybe not convenient)
* take ad hoc online classes. (cheaper, ongoing, available anywhere)
* do what other auto-didacts do: just immerse yourself. Buy books that look like they'd be fascinating, and if they end up over your head, figure out what other book or video or class might help remedy that, recusring until you find the starting point you need. (cheap, ongoing, limitless)
* etc
Technical degree programs are generally structured and priced for people who are pursuing the field professionally, but they are only a tiny fraction of the learning opportunities that are out there.
ADDED: I did go back to school for an MBA and used it to somewhat change careers. But degrees from good schools were less expensive at the time, I had sort of planned to do so, the degree was more of a gate for certain roles, I enjoyed it, and as I say it was a good way to transition into the computer industry which might otherwise have been hard.
If you don't actively stay up with the tech, your understanding will atrophy. Consequently, because you intend to remain a PM, your tech will never be as strong as someone who is dedicated to it and you need to be okay with that.
Another classic example for this are engineering managers: people management (like project/product management) is its own discipline with a deep set of skills, research, training, etc. To become a good EM means you _will_ sacrifice some of your technical edge. That "deep technical understanding" that good EM's maintain is built on a foundation of years as a practitioner and, even then, requires continual investment.
I don't mean to discourage you, I just want to ensure you have realistic expectations.
Given all that and given your goals, I think you should just ask yourself a question only you can answer: how do you best learn?
If that's in the classroom, then go get that masters (online or in person). If that's with hands on projects, then set aside time for tinkering and get going. Likewise with books, videos, meet-ups, etc. You know what motivates you and what techniques keep you focused (because you'll need that discipline).
Regardless, I wish you luck and enjoy the journey!
Ex-tech turned PM here. This is totally accurate. But as you say, don’t be discouraged. When I was a tech, if my PM had taken the time to learn anything I would have been ecstatic.
My advice: learn at home. Set up some VMs and watch some YouTube. Install some things. Whatever field you’re in, install it. Play with it. Honestly that’ll put you well above your peers.
Other excellent advice in this thread re: going to meetups, conferences etc. Just absorb stuff. It takes a while but it’ll sink in.
I mean, just knowing what half the terms mean is half the battle...
What reading or other recommendations do you have here?
If you want to become more effective as a PM through sharing a technical understanding, it would probably be better to gain first-hand experience of what teams are practicing -- That would provide a better understanding and empathy for what they have to deal with.
This is no substitute for broader knowledge on core principles, but they will reinforce each other.
Early on I just read books and built distributed systems and database engines from scratch.
These days I have been able to drink from the firehose on YouTube for a variety of subjects. Physics, chemistry, business finance, technical analysis (stocks), CAM, food production, and plenty more. I'm literally blown away at how much more efficient it is than trudging through college. If you put in the work you can go deep and gain skills very quickly.
OMSCS graduate. The program certainly ate up most of my free time for 2.5 years, but on the other hand, the whole degree was about $8k for me and required no thesis or capstone project--just grinding through 10 classes worth of assignments and exams. Also, it was 100% online, so that flexibility frees up time.
Theoretically, if you do 1-2 easy-ish classes per semester, you can minimize the free time impact. But I was less interested in the credential and more interested in the learning experience, so I took difficult classes and worked as a TA.
Caveat: I graduated in 2021 so things may have changed since then.
Two difficult classes I took together were Embedded Systems Optimization and Compilers, both taught by the same instructor and with similar concepts, so working on one helped solidify concepts in the other.
On the other hand, I took Distributed Computing during its first offering alongside Graduate Algorithms and was super overwhelmed.
I took DC alone and found it manageable if you weren't a perfectionist. Compilers was the most difficult thing I've ever done, though that was mostly due to my own poor time management during phase 3 (generating the intermediate representation). I didn't complete phase 3, so most of my time during phase 4 (emitting MIPS assembly + implementing three register allocation algorithms + optimizations) was catching up.
Also, as a note, the very difficult classes like distributed computing and compilers are completely optional (though well worth it IMO). The only very difficult class that's required is graduate algorithms.
For those not familiar with OMSCS, there are some class ratings here: https://www.omscentral.com/
It was a good life experience even though I wound up sacrificing my 4.0 by a few grade points. In hindsight, had I realized how steep the curve would be for DC, I'd have pushed a bit harder to squeeze out a few more test cases, but I was pretty mentally defeated at the time and felt like I'd exhausted all of the ideas I had on the projects multiple times over.
I found DC more difficult than compilers by a wide margin because of the nondeterminism, debugging difficulty and trying to figure out what the test harness was even doing. Compilers involved writing more lines of code, but it was manageable, synchronous greenfield application design.
https://omscs.gatech.edu/specialization-human-computer-inter...
From the Georgia Tech online course?
https://omscs.gatech.edu/
Speak for yourself.
You are also developing a meta skill of being able to read technical material, and a fluency with basic concepts (algorithms, signals, etc)
Also sometimes learning something isn’t knowing exactly how to do it on the spot, but knowing it’s the right thing to look up when you need it.
Seeing that you're in the medical field, I'd say look towards finding a job with your relevant work experience at a company that overlaps medical with the kind of technology you're interested in (using AI to analyze patient records for example). From there, you can use whatever experience you have gained on your own (I'm assuming you've been doing little code projects at home) to sidestep into roles at that new company that better align with what you want. Then, use the company's tuition assistance to get your CS masters as it directly aligns with the work you'd be doing. Since you've been a PM and also have whatever software experience you've gained so far plus the 2 years bump from the masters, you can easily slide into a senior or lead role. You can use your PM skills while also getting your hands dirty.
Of course you could just go get your CS masters right now and then start looking at software engineer jobs with 2 years experience (assuming no prior engineering experience) but I'm guessing that could be a big pay cut for you and you'd be 40 years old competing with 22 year olds fresh out of college willing to work for nothing. Not the best idea if you've got a family to provide for.
Also, I hear you. You're having midlife crisis because you're afraid you'll be stuck in a job you don't like for the second half of your career. Don't worry. Take it slow but move decisively. Find employers that overlap your experience with your interests and navigate with purpose. Don't rush to get a master's that will do little to get you where you want. Worry about that once you've got your foot in the door.
https://omscs.gatech.edu/
Happy to chat about my experience with the program, feel free to email me: hn@sjer.red
If you have no engineering background, I expect you'd need to spend time doing prerequisite/undergrad courses beforehand.
That's not free, but it is an undeniably great value for the money.
What I would honestly recommend doing is a bootcamp for full stack, or even just backend or frontend, or native, React Native, etc. Start there. You must learn the basics of code first. Not only that, but you will need to know how a non-academic team works. Github for starters. Also if anyone ever tells you that "elegant" code in one line is better than "readable" code in 10 lines, punch them for me. That is not how reality works in the workplace. Clear variable names. Clear function names. An understandable architecture for what is trying to be accomplished. These are the most important things, not reducing a perfectly understandable algorithm to something akin to calculus.
I actually made some of the first BCIs for the PC a long time ago, but already was a certified architect in C#, Microsoft, etc. These days you want to go for Node/JS or Go or Java, etc. Once you learn one language it is simple to learn another, particularly C-based languages (JS/TypeScript/C#/Java/ObjC/Swift and so on - notably they use brackets instead of indents or words to denote functions and objects.
I used to do AI work, but mainly medtech these days like digital therapeutics, and paradoxically I also do bank security (startup I was working with got bought by a bank, thus the disparity between the two. hey, you make friends along the way, help them out, and occasionally a hustle becomes your job)
I highly recommended becoming intimately aquatinted with databases, both relational and otherwise. And learn how to optimize them. You WILL have to work with a relational database at some point and thus you will need to learn SQL, indexing, etc.
Along the journey of my life, I've become quite the physicist and like to think I have a deeper understanding of math than most people. The only benefit I see to a degree is you might learn some of that. Physics, signal processing (from an EEG for example), and so on, are unavoidable. HOWEVER, there are a TON of libraries that will do all of that for you, and along the way you will learn it. I highly doubt anyone writes their own Fast Fourier Transform (FFT) these days, but to use it you have to understand how it works, what it's giving you, and what it's not, in order to avoid egregious mistakes. I've had to correct many people on what a Fourier transform actually does, many of them who have related doctorates. There are some truly stupid highly credentialed people in the world. IMO even the wikipedia article on it has some serious mistakes.
Honestly? Everything you need to know you can learn yourself online very cheaply through online courses. Get yourself a mentor or two. People LOVE teaching others. A bootcamp, however, will land you your first job.
As far as getting a job, when it comes to programming or engineering, "the proof is in the pudding". I've interviewed hundreds of programmers. At first I read all about their achievements at MIT and all of what they are experts in. But, in the end, EVERY INTERVIEW will consist of a live coding session. 90% of the people I interviewed could not write a solution to total softball questions like, "Alphabetize this text" or "Parse this JSON". I would even let them google and they still couldn't do it. I've had people right out of bootcamp that were better coders than the most highly credentialed CS graduates.
Which brings me to my final notes: 1) Live code as much as possible. Learn to love it. I failed the crap out of my first live coding interview, but faced my fear and now I'm the only one in the bank department I'm in that live codes. As I'm sure you can imagine, product and design LOVE IT. 2) FORGET ABOUT LEETCODE or any other such crap. If I was ever given a leetcode question in an interview I would tell them point blank that people just memorize the answers to th...
For context, I failed most of my Computer Science papers first go (undiagnosed ADHD) and I absolutely Hated (with a capital H), Software at uni.
Once I graduated though I picked up Python and discovered I actually LOVE programming and computers - the way uni was taught and my immaturity really put me off initially.
I’m successful as a Software Engineer, have sold my own Software, have built an AI app recently, but I have had some knowledge gaps.
I entered Harvards CS50 courses and loved them! You could try that instead of a masters? One can basically finish a full course in 2 weeks (on top of work and life)
I’d highly recommend starting there, rather than the mountain that is a Masters.
But if you are blasting through the courses, then consider a Masters at that point?
I have also been considering a Masters, but you have to ask yourself why?
- For the knowledge gained?
- For the cred?
- For employment opportunities?
I’d say you can get all of that with a typical software career if you also study on your own time outside of work.
But if you absolutely can’t shake the thought of doing a Masters, how about doing it part time so you can still have healthy finances?
Best of luck!
Most people always think you can take classes online, work in side projects and get the same benefits. They are all right, except enrolling in a program will help you stick to it, and that is the whole point.
PMs with engineering knowledge are actually very valuable. I love cross-functional team members, since they always provide new perspectives. So I wouldn't call it a pivot either, more like a career boost. You'd need to have a supportive engineering team who'd be willing to let you get your hands dirty though, that'd be your bigger challenge.
I will caution you that SDE is a job family that requires a ton of practitioner experience, especially at the higher job levels (and you likely don't want to transition to a lower level). The only way I was able to make this change was because I have a relevant college degree and because I started out my career as an SDE and always kept up to date. And even with that, it took me 2.5 years to make the job change official.
Still, don't let that caution scare you, if you really want the change and you want it for the right reasons. SDE is probably the easiest of the STEM disciplines to get into without a format education in the field.
And finally, another big +1 on the parent's comment about PM-T with technical experience being super valuable.
If a company wants to pay for an executive MBA program or something along those lines, sure why not?, but certainly wouldn't do it on my own.
I have two kids who occasionally think about how they'd pivot from their undergrad degrees into tech work (probably after seeing me waking at at 11AM and working all day in my pajamas). I would steer them away from an MSCS.
If you want to get a job at a competitive company / make a career change: no
I am a mid-40s developer without a masters, but have a former military and cyber defense background. Most of my programming experience is in JavaScript, which is super low barrier to entry and generally stacked with beginners and beginner experts that never get past entry level capabilities. At this point in my career, in this line of work in JavaScript, I have to make hard choices:
1. Make good money working with people that cannot really program but nonetheless consider themselves engineers with hyper insecurity because they are reliant upon a massive tech stack
2. Make less money working with more mature people doing different work
With that as my options I have to make some hard decisions about if I even want to advance