Due to being self taught I've not had the structured education you get by being taught a curriculum and I was wondering if studying a MSc in CS would be beneficial or even supplant the experience I gain doing my day job?
Would gaining an MSc in CS be worth my time and money? I'm considering taking one up whilst continuing to work full time.
EDIT:
I'm based in the UK.
Definitely depends on the curriculum though - my advice would be to look for timeless subjects, so "Algorithms and Data Structures" over "Game Programming with Unity", with a lot of variety.
This is all from the perspective of you being interested in learning new stuff regardless of monetary gain. If you're thinking of this more transactionally, i.e. "will I be able to get more money/better paying job" then I think it depends a lot on where you live. In some areas formal education is valued more than in others. Also a good part of it will probably not be immediately applicable to the day job - at least not obviously so - but it should give you a decent perspective on the field as a whole.
My exposure is exclusive to startups (typically < 50 ppl), but many have been very successful.
And these roles are typically mid & Sr. level web, mobile & AI roles.
This works because at a startup you usually need to be good at teaching yourself and innovating, which is a skill that successful self-taught developers usually have mastered.
If you’re looking at different roles or at different size companies or can’t get exposure to interesting projects then you might find a CS degree worthwhile.
No, if you want to become a generalist. You can become an excellent generalist without structured CS education.
Read the Kleppmann book on distributed systems - that is probably worth an MSc in itself.
Read the CTMCP book - probably worth another MSc. (PL theory)
What do you want to specialise in ? Choose one or two topics and look at the curriculum in a few universities. What books are on the reading list ? You can likely learn far more self-studying the material than any lecturer will be able to transfer in a few hours of tuition every week.
A comp sci conversion degree is probably close to worthless at your stage, and a more specialised degree still of questionable value considering the cost.
My anecdotal data point of 1 - I don't have a cs degree but work as a highly paid senior contractor on interesting problems, using functional programming to build distributed systems. Early on in my career I read an undergrads worth of text books, and then followed it up with several masters level textbooks.
The best devs I have worked with are constantly reading comp sci text books or papers. The knowledge has a much longer shelf life than x new framework or y new library.
All that said if you want to do it for some intrinsic value then never let anyone talk you out of pursuing education. I just don't think the degree will make much difference to your career, it's the knowledge, confidence and ability to demonstrate & implement that will give you access to better opportunities.
And agreed with others. If you did not do a great upgrad / did not sufficiently self-teach, and you want to quickly level up on tech fundamentals + some specialty area, hard to beat. You can easily do more boring tech without, and quite successfully. Likewise, some people luck into elite teams or strong mentors to replace this... But unlikely and you won't really know. (We happen to be like this, but it is rare and takes work on a sides.)
Staying on for a PhD after is more of a passion / self-investment, eg, passion for leading r&d or some niche.
If you want build a solid foundation on CS, I would suggest taking a course in Applied mathematics with some CS related subject because that would allow you to understand the deep fundamentals within CS. These mathematics (discrete, probability, linear algebra, proof techniques) are generally covered in Bachelor's level of CS. Having sufficient skills with these topics will allow you to dive and understand any topic later in life. As engineering major, it was mostly focused on calculus and analysis. Therefore, whole idea of theoretical proofs and reasoning was quite difficult for me. CS is filled with these kinds of proofs. No one tells it.
However, if you are interested in building things, it would be wise to pursue something in software engineering (or applying for challenging job etc). Like everyone has said here, CS is to go into some deep niche like compilers, OS, networks, algos & DS, which is extremely narrow, intellectually fulfilling but extremely hardcore. Good luck with your decision.
Can you afford it without loans? Are you ok with the possibility that professional advancement doesn’t happen (it might not)? Do you understand how much time you will need to dedicate to finishing it?
Commercial projects are very different from research environments. However, many institutions try to blur the line between commercial and academic projects. Notably from a legal and economic standpoint... most institutions own everything their students do... Thus, collaborating with a private sector project is difficult as most companies don't want to incur the liability.
If you are asking if managers typically would pay someone more to do the same job as someone with actual work experience. The answer is simply that you are lower on the priority list, as a manager can pocket 7% bonus for the wage difference you think is appropriate.
The academic institutions tell their students a lot of self-serving BS. They may seem like nice folks at first, but most are only interested in the funding you can bring in. The process of screening doctoral candidates is not what most would imagine. Ripping off the naive is pretty much a universal faculty trait...
Consider becoming a plumber... ;)
* Because you are self taught, getting one gives you more credibility and increases your chances of working at a traditional, large company (FAANG and the like).
* You'll build a durable network. My experience was rigorous as hell and through that, I got to be close with my classmates. Though we're not in constant contact anymore, ringing them up for a job referral is pretty much a guaranteed favor.
* If you want to specialize in a particular topic (eg compilers, networks, etc), it's worth it. Chances are you'll get to do some dedicated research and it can be really intellectually fulfilling.
* There will be holes in your knowledge that you'll fill. They won't be critical to your software career, but it'll give you an edge.
BTW, if you decide to pursue one and you're in a position to do it fulltime, definitely do that. Way more of a rewarding experience vs doing it PT.
The credential may be valuable to open doors that are artificially closed to you as someone without a degree. Even with a BS in MechE and programming experience I had a hard time getting interviews, but as soon as the MSCS hit my resume I started getting unsolicited calls. YMMV.
Do it if you like the idea of it but it's an expensive hobby.
I'd rather just learn the topics I care about online
However, the biggest benefit, in my opinion, is taking challenging classes, improving your knowledge, and making contacts. The benefit may not necessarily be career enhancement or learning the latest technical skills. The biggest advantage school has over self-learning is more on the theoretical and experimental side of computer science. You will be able to see and learn things you couldn't see on the job that I think could be very interesting if you like the topic. You can actually enjoy getting the degree and I think UK master's degrees are generally reasonably priced as opposed to the absurd prices some US universities charge. Sometimes software development can be kind of mundane so maybe this is a chance to see something new and challenge yourself.
If you are strictly focused on career prospects though, which is fine, I will caution that the classes can be time consuming and difficult and you might find all your free time is spent doing them instead of relaxing after work. I am biased about this but not everyone would agree with me about what is interesting or fun so I think it's good to know your motivations before going into this. If all you want is technical skill advancement I don't think a master's is a good choice. Universities often lag industry as far as teaching tools you could learn for free anyways.
I did appreciate my digital logic class a lot.
For someone young today who is still in school. Or just out and has only worked a couple of years, if any.
The reasoning is that people with bachelor's degrees in CS are increasingly a dime a dozen. It may be that the master's degree is the new bachelor's.
The degree can definitely make your resume look better, but past work experience and projects speak much much louder.