Has anyone here done this mid-career? Was it worth it?
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.
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.
On 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.
Happy to chat about my experience with the program, feel free to email me: hn@sjer.red
If you want to get a job at a competitive company / make a career change: no
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.
* I did pre reqs as cheaply as possible while working. I went to school full time after, the cost benefit was better for me because of the expected income jump. Either way, I worked really hard in school, keeping a full time job wouldn’t have been possible for me with a full load.
* If you do a CS program, allow the time to really enjoy the material. It will move fast. If you don’t enjoy a class, or a prof, find something better if at all possible.
* A MS degree has so far not been necessary (I didn’t finish the degree), but a significant amount of CS coursework plus an unrelated BA has absolutely been necessary for my SWE jobs (I work as a backend/platform engineer most of the time)
* If you’re doing it for the money, a CS education can do a lot to unlock better jobs— just be really clear with yourself that that’s what you’re aiming for. School involves a lot of hoops. Don’t do what doesn’t serve you. If you’re there for personal growth and learning, set yourself up financially and take the leap to go full time. You’ll enjoy it a lot more if you spend the time saving, take intro courses and then allow for a deep dive. Your interests and goals will shift over time.
* I really benefitted from landing in a program where I had a small in person cohort. I studied with my classmates a lot and made at least one life long friend.
Anyhow, good luck! It’s so exciting to go for a big goal.
My advice. If you want to get a job just do courses that are going to teach you the practical things you need to know/are interested in. Academia is a waste of time unless you're going into academia, or an industry that requires academic skills.
All the stuff I can do is self taught, though these course have taught me the fundamentals.
If I knew then what I know now I would have gone a different way.
While it takes time to do, it has really held me accountable to actually go learn the things I really ought to be learning rather than being stagnant.
I'm a staff PM at a big tech company and I came to realize that nobody knew this stuff, not even the people we are hiring to implement it. Therefore I decided to go out and learn it as my skillset needed a refresh (I come from the mobile dev boom)
- 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.
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.
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.
I've always told people who are interested in getting into tech: if you don't love it enough to do it on your own, don't get into the field. Not because I think they're dumb, but to excel, you need an almost unhealthy obsession with building software.
So, having said that, I would explore the internet for a topic you are interested in and invest some of your free time into it. Build something to the point you think someone would buy it (polished, not throw away code). Make sure it's tested and relatively bug free. See how you feel after that.
Having said that (again), I have an undergrad MIS degree and it gave me a good foundation and I learned the jargon, but the vast majority of practical stuff I learned, I learned working on personal projects at home and projects at work.
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
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.
Btw, I highly I applaud your decision to go deep tech mid-career. I think there's not enough strong product people in deep tech. Even if you go back to product afterwards, your strength in understanding the problem space and available solutions will serve you well.
I'm also mid-to-late career PM transitioning back into deep tech. My path is a little bit different than yours. I'm doing a hard tech startup instead.
If you're doing it for ease of immigration though, I 100% recommend it, not just to get a work visa, but for a foreigner coming to the USA its a great way to get accustomed to American lifestyle, make friends in a new country and create a network and support system.
edit: spelling
Having done a Master's degree in CS, but with a Bachelor's in CS before it, the classes I took for my Master's degree would have been mostly impenetrable to someone without a bachelor's degree already.
So how exactly does that work?
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.
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.
Lots of universities will let you sign up for graduate level classes as a continuing education student or certificate program. Sign up for one and see if you can keep your head above water. Even taking a Python class at a community college would help a lot.
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?
I don't have a computer science undergrad so for me the motivation was both in the potential for advancement, but also a chance to study the field I've been working in for the past decade.
School has some clear advantages:
* It standardizes taxonomies, frameworks, and methods. You'll be able to talk to others who are more ingrained in things like distributed systems or other deep fields and recognize the terminology and use the correct references.
* Things like ethics, establishing trust, and reliability of data are hard to learn "on the job" except in cases where you are directly prompted. These skills can be easily taught in a classroom setting.
* The efficiency of classroom learning is hard to beat. A well defined lecture and reading guide will show you just the right content to most efficiently convey a topic. Obviously this requires a lecturer to be good enough at their job to successfully perform.
Frankly, some of the arguments here against higher education are alarming. You should not be acquiring specific skills in your classes. You should have learned logic, algorithms, and how DAG works in your undergrad or through self teaching. Mastery of Apache Airflow is your own business, but much more straightforward with the aforementioned skills.
After continuing in my IT career and taking college courses, I have continued to regret my time as a younger administrator. I was given too much permission and it's only through luck and coincidence I never caused turmoil. Without any formal training I had access to so much data and potential to inflict problems. I can't see a world where that kind of malpractice is allowed to continue. In the same way that we ask forklift operators to guarantee the safety of those around them by passing a test, we should be asking our IT workers to prove their basic abilities before handing over domain administrator logins.
itching to get into deep tech
What actions have you taken so far? Are you working through any books or online courses with actual homework problems?For all the things you mentioned, a good start might be studying calculus. Even if you studied it in high school, you're probably rusty.
If I were in your shoes, I would sign up for mathacademy.com ($50/month) and commit 2 hours per day (14 hours per week) to studying math. This would both help you develop a study habit, and ensure you have a good mathematical foundation for the other things you want to do.
In my experience, trying to study things that require some math foundation (like all the things you've listed) can be really hard and demotivating if you're missing those prerequisites. It can feel like you're not smart enough.
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 these, they are not applicable to real-life application, and then I would walk out because that company is clearly not serious. 3) Whiteboard interviews are also going to happen. Super easy. Flow chart with how the frontend connects to the backend, branching enough into each until they know you know what you're talking about. 4) Don't forget the old school! If someone asks you what "PUT" means in a request and you don't know the answer, that's pretty embarrassing. Learn about basic networking, from old to new. 5) LEARN DEFENSIVE CODING: This will give you a leg up because I've never met a programmer who knew it who hadn't also been a hacker at some point in their life. Basically what this means is how to reduce vulnerabilities, but also how to straight up trick would-be hackers. For example, error messages. If you have an error message that says "License invalid", it will be ludicrously easy to find that string and thus where the license code is likely to be. Instead, screw with them. Say your program detects that a user has hacked into your app, if you simply cause a crash or exit that just gives them an easy way to find and remove the problem. Instead, perhaps there is a commonly used number in your app. Change it so they get weird data. Or maybe division of numbers is needed at some point. Change the divisor to 0 to cause a random crash. Some defensive coders will simply use a timer, set it to a random value, and then cause a crash in some way. Whatever you decide to do, use multiple defensive techniques, and always always screw with the hacker so they have no easy way to determine where to look to bypass your protections.
-------
Ok so I've overwhelmed you and you may be rethinking your decision. Don't. Jump right in! Learn as you go, keeping the above advice in mind, and you will succeed. Take a few courses on the basics of the actual reality of working in the private sector, so you know the basics of github, but make no mistake: show me a coder that says he doesn't google at least once a week, I'll show you a damn liar.
As far as aerospace, I've no clue. I have friends at NASA who are bored out of their minds, but the are all credentialed. Even so, the exactly University you go to barely matters, as far as I can see. Again, coding and the understanding of fundamental concepts is something that can and will be tested during an interview, and maybe even before the interview with a take-home project or a general phone call.
Above all, have confidence in yourself, and walk out of an interview that is stupid or has a bad culture. EVERYONE has imposter syndrome. Make THEM court you. I've straight up never gotten a job I wrote a cover letter for. Usually out of some company that is truly interested calls YOU. They can see your resume on LinkedIn like everyone else. Which reminds me, up your LinkedIn game big time. Yeah yeah everyone hates it but you start writing things, people invite you on podcasts, the snowball starts rolling.
Well that's all I've got. I hope it helps!
Good luck!
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!
For someone whose job is going through 1000 cold call resumes a day, "No" has a low bar because the shortlist is only a small fraction of the resumes. It's not impossible. But by your late 30's "potential" is not a saleable asset.
Go to school to learn something you are directly interested in. If you want a job in BCI, Ai, aerospace, etc. apply for jobs in BCI, Ai, aerospace, etc. Good luck.
If you want to learn some deeper technical things, I suggest online one-off courses or online mini-certificates.
On the other hand, if you are still in one of the few remaining societies where credentialism is still rampant, then you may want a Masters for the prestige.