Ask HN: Is a master degree in CS worth it
I'm an Architecture graduate who's looking to change careers. I've dabbled with coding for years but feel a formalised education may be prudent in enabling me to make the change. Has anybody else made a similar switch, and if so what did they encounter?
103 comments
Yes if: they give you a scholarship AND (one of the following) it's at an ivy league college, you are deeply interested in a specific topic and you'd like to continue with a PhD, you like the work of a specific professor and he has agreed to work with you.
No if: you want to work as a software engineer (made the mistake myself, some friends are in lead positions and earn way more than me and have generally more opportunities because they worked two years more than me, even if I graduated with a 3.8 GPA from one of the top 2 unis of the country) or if you think it will boost your skills as a developer (Udemy/Coursera work better).
Maybe: if you want to work in the government where these things have a value. But spending two years of your life (even if with a scholarship) doing something that might not turn out to be a good investment just for this reason is insane.
No if: you want to work as a software engineer (made the mistake myself, some friends are in lead positions and earn way more than me and have generally more opportunities because they worked two years more than me, even if I graduated with a 3.8 GPA from one of the top 2 unis of the country) or if you think it will boost your skills as a developer (Udemy/Coursera work better).
Maybe: if you want to work in the government where these things have a value. But spending two years of your life (even if with a scholarship) doing something that might not turn out to be a good investment just for this reason is insane.
There's a point at where experience starts to matter a lot less. Who cares about 10 vs 12 years of experience?
Where as maybe a master's is a small advantage.
Where as maybe a master's is a small advantage.
I recall reading a study showing that a master's degree hurt total lifetime earnings rather than helping them. Having a few years paying large sums for a boost in initial pay was not worthwhile because experience eventually put the two at parity. This is all from memory though. I do not have a link to reference.
However, it does make sense given that the capabilities of people with bachelor's degrees and master's degrees become equal at some point, assuming all other things are equal. I do not think a master's degree is a ticket to a lifetime of greater competence in CS and salaries ought to reflect that.
The same could be said for PhDs too given the quality of work that we saw come out of places like Sun. There are plenty of CS people that I believe have only bachelor degrees that are not in any way inferior to holders of PhDs and in some ways, are more capable because their solutions are demonstrated to work in the field. I imagine some of them will receive honorary PhDs for their work.
This is not relevant to someone without a bachelor in CS though. I will post my opinion on that separately.
However, it does make sense given that the capabilities of people with bachelor's degrees and master's degrees become equal at some point, assuming all other things are equal. I do not think a master's degree is a ticket to a lifetime of greater competence in CS and salaries ought to reflect that.
The same could be said for PhDs too given the quality of work that we saw come out of places like Sun. There are plenty of CS people that I believe have only bachelor degrees that are not in any way inferior to holders of PhDs and in some ways, are more capable because their solutions are demonstrated to work in the field. I imagine some of them will receive honorary PhDs for their work.
This is not relevant to someone without a bachelor in CS though. I will post my opinion on that separately.
I got my masters while I worked over 4 years. Not always required to quit work.
You can often get your employer to foot the bill too.
Unless you're doing heavily theoretical work, no one even thinks about your education after you have a few years of real experience under your belt. In practical terms, real experience is many times more valuable than "education".
If you're going to look for a job in academia or research, then yeah, the educational background will matter. If you're going to write code that makes things work, it doesn't matter.
If you're going to look for a job in academia or research, then yeah, the educational background will matter. If you're going to write code that makes things work, it doesn't matter.
It depends on what those years are -- it is the old cliche that there is a difference between 10 years of experience, and one year of experience repeated 10 times.
The same is true for the difference between 10 and 12. If those additional 2 years were more of the same, they matter little. But they also could have been full of significant new work and learning.
The same is true for the difference between 10 and 12. If those additional 2 years were more of the same, they matter little. But they also could have been full of significant new work and learning.
I think at that point the comparison will be _what_ experience is in those 10 vs 12 years
No? How is he supposed to learn basic theory of data structures and algorithms? Of course everything can be learned outside of college, but doing that in a part time unstructured way is not easy.
Knowing relevant theory is power. Is the goal to be an enterprise CRUD programmer or an architect who is a thought leader and helps set the direction of what you're working on?
I know everything can be done without a degree, I have a few genius friends who are doing great. But could they have had more options to choose from, more freedom, more potential with a degree? Hard to say, but most people don't self-learn everything they would otherwise.
Knowing relevant theory is power. Is the goal to be an enterprise CRUD programmer or an architect who is a thought leader and helps set the direction of what you're working on?
I know everything can be done without a degree, I have a few genius friends who are doing great. But could they have had more options to choose from, more freedom, more potential with a degree? Hard to say, but most people don't self-learn everything they would otherwise.
I kind of agree and disagree I work a lot with distributed systems so I have to read a lot of papers, and I have to implement a lot of data structures myself, however I am severely lacking in formal education. While initially my lack of education was a difficult barrier I overcame it pretty quickly. I also have been writing nontrivial code in haskell just to improve my use of scala so that's more of academia I have to deal with.
But I still stand by the fact that unless you're going to stanford, CMU, or MIT, or a professor who is not strictly a theorist at an above average school takes a liking to you.
If not and you really enjoy the field you're better off teaching yourself.
But I still stand by the fact that unless you're going to stanford, CMU, or MIT, or a professor who is not strictly a theorist at an above average school takes a liking to you.
If not and you really enjoy the field you're better off teaching yourself.
I think what chpmrc means is that going for a Masters degree in CS versus stopping at a Bachelors degree in CS may or may not be of value.
I'm not sure you're right. I read OP as already having a BS in another discipline, and considering doing a CS masters (without a BS CS first).
rahimnathwani that's correct. for this person a masters would be like intro to cs.
Also: yes, if you want to immigrate to a Western country.
If you want to work in a more academic area such as Machine Learning it would be helpful. For something like frontend development it would not be very useful.
Even if someone is going to do front-end development, Western countries' immigration authorities typically award a big boost in points for graduate degrees in critical fields (e.g., frequently CS).
A lot of countries grant citizenship based on some points system. In most of them having a Master's degree brings you more points.
Is it a good idea for an Indian to use masters as an entry point to the US industry?
In general, Ivy league schools aren't that great for CS education. It makes sense of its a top 10 or 20 CS program.
Yes, a terminal master's degree in CS is absolutely worth it for a person in your position looking to make a career switch. It will help you learn things you do not know and qualify you for many jobs you would not currently be considered for. A CS masters is not the only way to do what you're trying to do, but it may be the easiest. You do not have to attend a prestige university or a win a scholarship to make this path worthwhile, though certainly those things are nice if you can get them.
I would not say the same thing to someone who already has a BS in CS; but for someone looking for a career switch like you are, it makes a lot of sense.
I would not say the same thing to someone who already has a BS in CS; but for someone looking for a career switch like you are, it makes a lot of sense.
I'm in a similar position thinking about going back to school, but I admit I'm confused about the question, because the programs I've looked at won't consider masters' students unless they have a bachelor's in CS (or equivalent, which there are nontrivial requirements there). So from my vantage point it's always been going back to do a second bachelor's.
I have a lot of programming experience, and a lot of statistics/numerical computing experience, but not so much experience with more hardware- or low-level networking stuff.
I have a lot of programming experience, and a lot of statistics/numerical computing experience, but not so much experience with more hardware- or low-level networking stuff.
I had a successful software engineer career without a degree, but some time ago I decided to go for it (to leave open the option of pursuing the PhD). So, here are the results:
- Change in my career possibilities and new job offers: exactly zero. Nada. Nil. I work as a software engineer in finance (high-frequency trading), and there domain experience matters much more than the amount of computer science education received. (If I would have been a quant trader, not an engineer, it would be another story -- education matters there).
- Mind expansion: some. I've got some preliminary math education (so I am not scared of reading quant papers anymore and can immediately work with formulas), and also there were excellent courses on coding theory and automata. Some other courses (e.g. computer graphics) was on subpar quality, but this is not my specialty anyway.
Was it worth it? For me, that't a definite yes, psychologically and intellectually. But if my motivation would have been only related to career -- the answer would be no.
- Change in my career possibilities and new job offers: exactly zero. Nada. Nil. I work as a software engineer in finance (high-frequency trading), and there domain experience matters much more than the amount of computer science education received. (If I would have been a quant trader, not an engineer, it would be another story -- education matters there).
- Mind expansion: some. I've got some preliminary math education (so I am not scared of reading quant papers anymore and can immediately work with formulas), and also there were excellent courses on coding theory and automata. Some other courses (e.g. computer graphics) was on subpar quality, but this is not my specialty anyway.
Was it worth it? For me, that't a definite yes, psychologically and intellectually. But if my motivation would have been only related to career -- the answer would be no.
As someone in charge of hiring and recruiting developers, I'd see an extra year or two of experience being more valuable than a masters degree. The work my company does is consulting across a variety of industries, and subject matter experts are always valuable to us. So, your experience as an architect would still be weighted above above a candidate with a masters degree.
Another thing to consider is cost. If you get right to work, you'll be gaining valuable experience and making money while you do it. If you spend another year or two in school, you're racking up debt and getting no real world experience.
All that said, I'd imagine that there are certain fields that require more specialization, like AI or signal processing that would benefit from an extra couple of years of study.
Another thing to consider is cost. If you get right to work, you'll be gaining valuable experience and making money while you do it. If you spend another year or two in school, you're racking up debt and getting no real world experience.
All that said, I'd imagine that there are certain fields that require more specialization, like AI or signal processing that would benefit from an extra couple of years of study.
I think you are doing this person a disservice.
With no undergrad CS and no development work experience they won't even be able to tell you how fast a sorting algorithm is.
Also you're not taking into account how new important tech is unfolding or what the long term impact of this choice will be over a lifetime.
With no undergrad CS and no development work experience they won't even be able to tell you how fast a sorting algorithm is.
Also you're not taking into account how new important tech is unfolding or what the long term impact of this choice will be over a lifetime.
> how fast a sorting algorithm is
What are you referring to here? Like remembering off the top of your head the big O of bubblesort? Or figuring out the big O of an algorithm you wrote yourself?
The first is something easily looked up. No reason to dedicate some of your limited human memory to that.
What are you referring to here? Like remembering off the top of your head the big O of bubblesort? Or figuring out the big O of an algorithm you wrote yourself?
The first is something easily looked up. No reason to dedicate some of your limited human memory to that.
>The first is something easily looked up. No reason to dedicate some of your limited human memory to that.
That's irrelevant because it's true of everything. I can also look up and learn quantum mechanics at khan academy: https://www.khanacademy.org/science/physics/quantum-physics
Sure it's feasible to look up facts here and there, but it's harder to grasp the underlying meaning and generalize it when rushing to check in code for a job, compared to having dedicated and structured time set aside.
Anecdotally, I started coding intensely in middle school and thought I was pretty bad ass by the I time entered college. Was blown away at how little I knew about what I didn't know. Gave up hubris at that point.
That's irrelevant because it's true of everything. I can also look up and learn quantum mechanics at khan academy: https://www.khanacademy.org/science/physics/quantum-physics
Sure it's feasible to look up facts here and there, but it's harder to grasp the underlying meaning and generalize it when rushing to check in code for a job, compared to having dedicated and structured time set aside.
Anecdotally, I started coding intensely in middle school and thought I was pretty bad ass by the I time entered college. Was blown away at how little I knew about what I didn't know. Gave up hubris at that point.
you shouldn't memorize big O for common algos. you should understand the algo and be able to rederive the complexity. maybe not for Ford-fulkerson but definitely for bubble sort.
I can't give you any advice on the Masters CS degree (other then that I think some sort of CS background would be really useful), but career-wise - have you considered sticking to architecture and follow a more tech path? There are some great opportunities in the internal research labs of the more cutting edge firms to develop software. Off the top of my head: P+W (where I work), Norman Foster, Thornton Tomasetti's Core studio, AECOM, SOM, Zaha. Have you checked out some of the big computational conferences/symposiums like ACADIA, AEC Hackathon & Symposium, SmartGeometry?
Perhaps you've already checked out the field out and still want to switch, but if not, I think you'll (a) find a lot of like-minded people and (b) find a lot of meaningful work in the field that needs computational expertise. That latter point is what's most important to me: issues like building/urban energy consumption, affordable/dense housing are low-hanging fruit that are being done in manual/non-optimal ways right now.
You can email me if you'd like to talk.
Perhaps you've already checked out the field out and still want to switch, but if not, I think you'll (a) find a lot of like-minded people and (b) find a lot of meaningful work in the field that needs computational expertise. That latter point is what's most important to me: issues like building/urban energy consumption, affordable/dense housing are low-hanging fruit that are being done in manual/non-optimal ways right now.
You can email me if you'd like to talk.
Interesting idea. Could you elaborate a bit more on what are some specific positions and tasks inside architectural companies, where the CS + architecture combined knowledge would be valuable for an employer?
It's a huge, diverse field so I wouldn't be able to do it justice in a comment. I suggest looking at some papers from http://acadia.org/, and http://www.ibpsa.org/. The latter being an example of a more specific subset of computational/architecture work (building performance simulation).
[deleted]
There is no single answer that someone can give you; It really depends on you and your background. As a personal rule of thumb I look at what big companies like Microsoft or Google expect of their employees (particularly Google). I know not every tech company is like Google, but they are a company with a very rigorous vetting process for applications. That said, even Google doesn't require a formal degree for their engineers, and they offer a guide for potential applicants listing what they expect [1].
IMO, what it really comes down to is if your learning style is best suited for a class-room education, and if so then whether you can afford to 'stop the world' and go back to school. A grad-student should be capable of doing independent research, so in theory you should be able to learn how to code on your own (if you wish to be a software engineer). You'll need to be sure you have a way to receive objective feedback on your output, and be ready to humble yourself as you descend down the Computer Science rabbit hole.
In full disclosure, I'm going back to school for a MS in Information Technology. It's not as rigorous as CS, but it's reasonable given that I have a BA in Music. I wouldn't necessarily have gone back if it weren't for having a perfect opportunity to do so (My wife got a job as a professor at a university that had a masters program for IT, and so I'm getting a good deal on tuition).
[1] https://www.google.com/about/careers/students/guide-to-techn...
IMO, what it really comes down to is if your learning style is best suited for a class-room education, and if so then whether you can afford to 'stop the world' and go back to school. A grad-student should be capable of doing independent research, so in theory you should be able to learn how to code on your own (if you wish to be a software engineer). You'll need to be sure you have a way to receive objective feedback on your output, and be ready to humble yourself as you descend down the Computer Science rabbit hole.
In full disclosure, I'm going back to school for a MS in Information Technology. It's not as rigorous as CS, but it's reasonable given that I have a BA in Music. I wouldn't necessarily have gone back if it weren't for having a perfect opportunity to do so (My wife got a job as a professor at a university that had a masters program for IT, and so I'm getting a good deal on tuition).
[1] https://www.google.com/about/careers/students/guide-to-techn...
Just FYI, getting an Information Systems degree instead of a Computer Science degree is one of my regrets. I would not advise it to anyone.
If you want to work in tech, go for the CS degree. Yes it'll be harder, but it's vastly more valuable. IS/IT degrees are nearly all fluff, especially a MS.
If you want to work in tech, go for the CS degree. Yes it'll be harder, but it's vastly more valuable. IS/IT degrees are nearly all fluff, especially a MS.
I agree, but hey, at least you have a framework you can use to fill in the missing CS pieces on your own! You're probably in a better position to be promoted to a management level with an IS degree over a CS, so that's not a bad thing.
In my case, the school that I'm attending only has a MS in IT. I decided that spending a short amount of time getting a higher degree in a 'softer' field would be better than struggling through the (somewhat arbitrary) math for a long time just to earn another Bachelors.
Either way, I'm trying to use all of the free-time that I have now to supplement my education as thoroughly as possible in the realms of hard CS topics. I hope to integrate this into my thesis as a way of demonstrating that I made the most of my time.
In my case, the school that I'm attending only has a MS in IT. I decided that spending a short amount of time getting a higher degree in a 'softer' field would be better than struggling through the (somewhat arbitrary) math for a long time just to earn another Bachelors.
Either way, I'm trying to use all of the free-time that I have now to supplement my education as thoroughly as possible in the realms of hard CS topics. I hope to integrate this into my thesis as a way of demonstrating that I made the most of my time.
Your reasoning isn't far off from what mine was at the time I was choosing a major.
With the benefit of hindsight I can tell you that if you want to work in the quantitive side of technology, the pain of suffering through the math and truly grasping it, is absolutely and completely worth it.
As time goes past, the tech industry appears to be becoming more specialized. An analogy that I think works pretty well is the medical field. In the beginning you just had "doctors", then as more advances were made, the field specialized into nurses, doctors, physicians assistants, and then further into specialties and now sub-specialities.
Someone can absolutely work in technology without a firm grasp on the fundamentals, hell they can even make a lot of money. But it's a difficult leap to go from working on a React & Rails app to working on distributed systems, advancing the state of the art AI, etc.
Also be careful about assumptions about who is in 'management'. This is also a mistake that I made when I didn't really understand the industry. I have spent time working for managers who are non-technical and am rebuilding my life so that I never have to do that again.
Happy to chat more about this if you'd like. Good luck with your degree and I hope it works out well for you.
With the benefit of hindsight I can tell you that if you want to work in the quantitive side of technology, the pain of suffering through the math and truly grasping it, is absolutely and completely worth it.
As time goes past, the tech industry appears to be becoming more specialized. An analogy that I think works pretty well is the medical field. In the beginning you just had "doctors", then as more advances were made, the field specialized into nurses, doctors, physicians assistants, and then further into specialties and now sub-specialities.
Someone can absolutely work in technology without a firm grasp on the fundamentals, hell they can even make a lot of money. But it's a difficult leap to go from working on a React & Rails app to working on distributed systems, advancing the state of the art AI, etc.
Also be careful about assumptions about who is in 'management'. This is also a mistake that I made when I didn't really understand the industry. I have spent time working for managers who are non-technical and am rebuilding my life so that I never have to do that again.
Happy to chat more about this if you'd like. Good luck with your degree and I hope it works out well for you.
After five years of full time work I saw my MSc (Systems Engineering) as an opportunity to have a bit of meaningful time off of work. Most universities are much more relaxed with their postgraduate programs and allow you to focus your energy on the stuff that interests you most. You might learn a thing or two during lectures but might learn even more through all the extracurriculars that you will suddenly have the time to engage with. Yes, it was expensive and I'm not sure if I'll ever break even but it was money well spent on a fantastic experience. As a plus I managed to switch careers (aerospace to management consulting) which was not something I had planned to do but simply emerged out of the people I met throughout the program.
Your best route to employment is to:
1. Learn the basics of programming. This means writing software to get a computer to do things, even as simple as adding all of the numbers between inputs n and m, which is not a bad beginner exercise.
2. Find an OSS project that interests both you and prospective employers that has active development on IRC (likely freenode).
3. Start handling small bug reports and adding minor features.
4. After familizing yourself with the code base, start collaborating with the more experienced project developers on bigger changes. More veteran developers are likely to be happy to offer advice/answer questions on how to do things like them.
5. After a year or so, you will likely be able to get a job, assuming that you do not have offers already.
I sort of did this unintentionally when I started contributing to OSS projects for the sake of improving them for my own use. That eventually lead to consulting for a time before I found full time employment at a company that I felt was a good fit. I went a few years without asking even asking if I had a degree until a year into full time employment when investors wanted everyone to submit resumes. I believe any degree would have been sufficient. My manager for instance only had an applied math degree.
For full disclosure though, I have bachelor of applied science and engineering that is a double major in "Computer Science" and "Applied Mathematics and Statistics", plus partial graduate CS study. Also, my company went out of business last month. I have options for both employment and consulting, although I now favor full time employment due to familial pressure.
That being said, it would be easier to advise you if you said specifically what area interests you. There are different areas such as operating system development, systems programming, embedded programming, web development, user interface design and others. That matters quite for step 1 in picking your first programming language. Being multilingual is great (and I certainly am), but you will find things easier if your first language is language used by what you want to do as your first job. That way you save some time on becoming proficient.
1. Learn the basics of programming. This means writing software to get a computer to do things, even as simple as adding all of the numbers between inputs n and m, which is not a bad beginner exercise.
2. Find an OSS project that interests both you and prospective employers that has active development on IRC (likely freenode).
3. Start handling small bug reports and adding minor features.
4. After familizing yourself with the code base, start collaborating with the more experienced project developers on bigger changes. More veteran developers are likely to be happy to offer advice/answer questions on how to do things like them.
5. After a year or so, you will likely be able to get a job, assuming that you do not have offers already.
I sort of did this unintentionally when I started contributing to OSS projects for the sake of improving them for my own use. That eventually lead to consulting for a time before I found full time employment at a company that I felt was a good fit. I went a few years without asking even asking if I had a degree until a year into full time employment when investors wanted everyone to submit resumes. I believe any degree would have been sufficient. My manager for instance only had an applied math degree.
For full disclosure though, I have bachelor of applied science and engineering that is a double major in "Computer Science" and "Applied Mathematics and Statistics", plus partial graduate CS study. Also, my company went out of business last month. I have options for both employment and consulting, although I now favor full time employment due to familial pressure.
That being said, it would be easier to advise you if you said specifically what area interests you. There are different areas such as operating system development, systems programming, embedded programming, web development, user interface design and others. That matters quite for step 1 in picking your first programming language. Being multilingual is great (and I certainly am), but you will find things easier if your first language is language used by what you want to do as your first job. That way you save some time on becoming proficient.
A masters will be a faster, more expensive path.
Without a CS degree of some sort you're going to need to prove you can code. Dabbling helps but you'll need to show work experience.
Getting work experience without a CS degree likely means taking jobs that aren't otherwise appealing.
Contracting or freelance can be a way to get that experience since the bar for proof is often lower, especially when working in non-technical industries.
But those are jobs, and they pay money.
If you have the financial means and can attend a reputable school, I'd recommend getting the masters, or even a bachelors.
Having that degree, and learning what they teach you in a CS program, will help you get a much better job and will help you perform in that job earlier than learning as you go.
You're going to need to make the call if you can afford the short term financial hit/investment.
Without a CS degree of some sort you're going to need to prove you can code. Dabbling helps but you'll need to show work experience.
Getting work experience without a CS degree likely means taking jobs that aren't otherwise appealing.
Contracting or freelance can be a way to get that experience since the bar for proof is often lower, especially when working in non-technical industries.
But those are jobs, and they pay money.
If you have the financial means and can attend a reputable school, I'd recommend getting the masters, or even a bachelors.
Having that degree, and learning what they teach you in a CS program, will help you get a much better job and will help you perform in that job earlier than learning as you go.
You're going to need to make the call if you can afford the short term financial hit/investment.
So, if I'm a full stack developer without a CS degree, would you say it's worth it to take a shitty software development role @ a Uni to go back and get a CS degree?
I say it's shitty because they don't follow best practices and just focus on pushing out workflow apps as quickly as possible. No docs, old tooling, etc. Really a mess.
That's the situation I'm in now, first full time job. I majored in business [first economics, then MIS], big mistake. Now I'm working for the uni with plans to get a second bachelor's in CS beginning in the Fall (for free).
People always ask me why I majored in business. I've had recruiters say to me "Have you considered a minor in CS", etc. despite a very nice portfolio and 2 years worth of clients.
So, since I must deal with HR and would like to be taken seriously as an engineer, I'm going against the advice of the great Charles Manson and going out of my way to prove something to the phonies.
Plus, I wanna learn my maths much better but can't bring myself to go it alone so I figure it's worth it in that regard.
I say it's shitty because they don't follow best practices and just focus on pushing out workflow apps as quickly as possible. No docs, old tooling, etc. Really a mess.
That's the situation I'm in now, first full time job. I majored in business [first economics, then MIS], big mistake. Now I'm working for the uni with plans to get a second bachelor's in CS beginning in the Fall (for free).
People always ask me why I majored in business. I've had recruiters say to me "Have you considered a minor in CS", etc. despite a very nice portfolio and 2 years worth of clients.
So, since I must deal with HR and would like to be taken seriously as an engineer, I'm going against the advice of the great Charles Manson and going out of my way to prove something to the phonies.
Plus, I wanna learn my maths much better but can't bring myself to go it alone so I figure it's worth it in that regard.
> I say it's shitty because they don't follow best practices and just focus on pushing out workflow apps as quickly as possible. No docs, old tooling, etc. Really a mess.
I doubt schooling would fix this. It tends to be more about theory and algorithms than building "real world"(depending on what you're doing) apps.
Also, those are problems you can fix by reading a few books on best practices, learning from your team, keeping up to date on tools and just doing it (docs). If anything, the school would likely be behind on things like tooling and many best practices related to the modern frameworks.
It's not all bad, you'll learn things that from time to time come in handy, but getting a CS degree won't turn someone into a good programmer. That's a skill you'll develop over time from doing it and learning from others.
This repo is pretty cool and links to lots of free courses that show the kind of things you'd learn at Uni: https://github.com/open-source-society/computer-science
I doubt schooling would fix this. It tends to be more about theory and algorithms than building "real world"(depending on what you're doing) apps.
Also, those are problems you can fix by reading a few books on best practices, learning from your team, keeping up to date on tools and just doing it (docs). If anything, the school would likely be behind on things like tooling and many best practices related to the modern frameworks.
It's not all bad, you'll learn things that from time to time come in handy, but getting a CS degree won't turn someone into a good programmer. That's a skill you'll develop over time from doing it and learning from others.
This repo is pretty cool and links to lots of free courses that show the kind of things you'd learn at Uni: https://github.com/open-source-society/computer-science
I'm already well aware of best practices and I was really surprised that they didn't have any documentation or anything.
I meant, is going to school for CS worth working at a place like that.
They really aren't willing to make changes, as I said the goal is to push out apps as quickly as possible.
Coming from my previous job, where I was the only developer, I have full jsdocs/phpdocs, quite a few tests and high level user manuals. They have nothing resembling that.
I meant, is going to school for CS worth working at a place like that.
They really aren't willing to make changes, as I said the goal is to push out apps as quickly as possible.
Coming from my previous job, where I was the only developer, I have full jsdocs/phpdocs, quite a few tests and high level user manuals. They have nothing resembling that.
I would say it depends entirely on your goal.
Is the CS program high quality? If yes, then the job you work in order to attend that program is merely a means to an end. Think of it as waiting tables, just slightly more related to what you're interested in.
You could take the opportunity (not too quickly, be mindful of politics) to make a case study out of it and attempt to apply some best practices, it sounds like it could turn into a thesis about software development in the real world.
Is the CS program high quality? If yes, then the job you work in order to attend that program is merely a means to an end. Think of it as waiting tables, just slightly more related to what you're interested in.
You could take the opportunity (not too quickly, be mindful of politics) to make a case study out of it and attempt to apply some best practices, it sounds like it could turn into a thesis about software development in the real world.
[deleted]
I got a Civil Engineer bachelors degree, worked for a bit and then got a Masters Degree in CS.
I took a few classes at university before I started a degree program. Despite this there were classes where classmates with undergrad CS degrees were at an advantage, so it was a fair amount of work to catch up/ keep up. Those with an undergrad degree had seen this stuff before for me it was new. On the plus side I was not wasting time in classes with stuff I already knew.
It was worth it for me, I actually saw a lot of things from university at work (I did some time doing Operating System "Augmentation", writing libraries. Datastructures and algorithms and database classes were also useful post graduation. I think the degree helped get work and I enjoyed getting it.
I took a few classes at university before I started a degree program. Despite this there were classes where classmates with undergrad CS degrees were at an advantage, so it was a fair amount of work to catch up/ keep up. Those with an undergrad degree had seen this stuff before for me it was new. On the plus side I was not wasting time in classes with stuff I already knew.
It was worth it for me, I actually saw a lot of things from university at work (I did some time doing Operating System "Augmentation", writing libraries. Datastructures and algorithms and database classes were also useful post graduation. I think the degree helped get work and I enjoyed getting it.
You will learn a lot about programming and it will change your perspective on it. It will give you a deeper understanding of how things work than you would otherwise get. It will make getting that first job easier. That said, it is expensive and you may be able to get a job without it.
Look into Georgia Tech's OMSCS. Great program that costs little and and can be taken while working.
It's a great program but if you can find a local one at a good school, it's still better to do it in person. Meeting faculty (and other students, researchers, doctoral or postdoc, etc) in a field you want to pursue for a long time and working on research with them is the main benefit of a graduate degree and is still invaluable. They will provide all sorts of guidance and opportunities over the years that you can't get online.
What are the pros and cons of doing OMSCS if one already has a BSCS?
I'm about to graduate with a BS and I will be going straight into the workforce, but I'd like to pursue a MS (without taking time off from work).
I'm about to graduate with a BS and I will be going straight into the workforce, but I'd like to pursue a MS (without taking time off from work).
Pros: Deepens your knowledge of CS and can be used to focus on a more specialized field e.g. machine learning
Cons: Time and money investment. May be unnecessary if you just want a standard dev job.
Cons: Time and money investment. May be unnecessary if you just want a standard dev job.
Seconded. ~$6k for a reasonably challenging online program. Like anything, you get out of it (education-wise) what you put in, but the price can't be beat.
The other big upside to me was that I could keep working full time while studying. The opportunity cost calculation looks a fair bit different when you're giving up (less quantifiable) leisure time rather than paid work.
I agree that it wasn't all amazing, though -- some courses are great full stop, some are just bad, and many (as you say) really shine only when you go above and beyond.
Still, for those with existing programming experience or an undergrad CS degree, it may not be the best thing to do. If you want to learn some particular skillset, there are more direct paths. It might help with the resume filter, though, and it's handy for non-US people who want to get an H1B for now.
I agree that it wasn't all amazing, though -- some courses are great full stop, some are just bad, and many (as you say) really shine only when you go above and beyond.
Still, for those with existing programming experience or an undergrad CS degree, it may not be the best thing to do. If you want to learn some particular skillset, there are more direct paths. It might help with the resume filter, though, and it's handy for non-US people who want to get an H1B for now.
There are many things to consider when choosing this path, depending on what you want/need.
If you're looking to get better at coding/software engineering, the best way to do this would probably to take online courses or just start as a junior dev and OJT. Masters in CS tend to (but this is NOT always true) focus more on research-related areas. Most of the professors I met during my Masters didn't really care about version control, unit testing, deployment pipelines etc. all of which were extremely important in the real world. So Masters is definitely not a good place to start a career in Software.
On the other hand, there are many auxillary benefits to getting a CS degree. You can choose to go to another country and some (like the US) have work after study program that makes it easier to work immediately after you graduate. There are also many campus recruitment efforts where you can interview with a bunch of companies all at the same time.... this allows you to negotiate better offers as well.
If you're looking to get better at coding/software engineering, the best way to do this would probably to take online courses or just start as a junior dev and OJT. Masters in CS tend to (but this is NOT always true) focus more on research-related areas. Most of the professors I met during my Masters didn't really care about version control, unit testing, deployment pipelines etc. all of which were extremely important in the real world. So Masters is definitely not a good place to start a career in Software.
On the other hand, there are many auxillary benefits to getting a CS degree. You can choose to go to another country and some (like the US) have work after study program that makes it easier to work immediately after you graduate. There are also many campus recruitment efforts where you can interview with a bunch of companies all at the same time.... this allows you to negotiate better offers as well.
I don't think there is a field in the world where practice and theory is as far apart as software engineering. Having a CS degree is an entirely meaningless indicator of that person having any clue what to do at their job.
Some schools are obviously better than others. The good ones are expensive as hell though. The bad ones are nothing but a mountain of useless shit.
Some schools are obviously better than others. The good ones are expensive as hell though. The bad ones are nothing but a mountain of useless shit.
I don't have a single college credit, but theory is important for a lot of non trivial shit, for example cassandra, dynamo, project voldemort all use chord+ gossip protocols , i. What about concurrency and parallelism CSP, and the actor model are from where academia. What about Zookeeper, Chubby, Etcd where do Raft and Paxos come from academia.
You don't need a degree yes but theory is relevant however yes a CS degree is not a good indicator of any skill and too many CS educated people can't code worth a damn. Theory is not useless as long as you can implement it.
You don't need a degree yes but theory is relevant however yes a CS degree is not a good indicator of any skill and too many CS educated people can't code worth a damn. Theory is not useless as long as you can implement it.
Completely agree.
No. I know this is not a mainstream opinion, but if you do not plan to go into academia, it's not worth it. Working the same amount of time as a software engineer on the job propels your career further than a master degree.
I've hired many many software developers and couldn't correlate a master degree with the success of the person after being hired.
I've hired many many software developers and couldn't correlate a master degree with the success of the person after being hired.
I did a Masters in Software Engineering, having switched from Sociology and Philosophy. It allows you to work in software engineering which may or may not be a good thing
Side note: why do so many people abandon architecture after successfully graduating? As an outsider, architecture seems like a great thing to do for a living.
Side note: why do so many people abandon architecture after successfully graduating? As an outsider, architecture seems like a great thing to do for a living.
Based on conversations with friends who did exactly that, the pay is crap, competition is intense (way too many architects graduating for the number of jobs available), client demands are ridiculous (extreme hours to meet deadlines are not uncommon), and a lot of the people running architectural firms are assholes.
Exactly that, architcute is an altruistic pursuit where the hours you invest are never appreciated. Clients don't see, nor do they care about, the amount of time it takes to create great work.
It is not worth going $60k-$100k in debt. If you do, at least get an online one.
I don't think this is good advice. Online degrees don't give you the same benefits a "real" degree does. Degrees don't just establish a level of mastery within a field, they also provide social status and connections. Even if an online degree is qualitatively equivalent to a real degree, it's worth only a fraction because you don't get these secondary benefits.
As a software engineer your earning power will be extremely high, especially if you make wise career choices. 60k debt you can pay off in a single year when you have a decent job. The opportunity cost of not being in industry for a number of years is way higher than anything else, so if you want to focus on the monetary aspect it's the opportunity cost you should be concerned about, not the cost of tuition.
As a software engineer your earning power will be extremely high, especially if you make wise career choices. 60k debt you can pay off in a single year when you have a decent job. The opportunity cost of not being in industry for a number of years is way higher than anything else, so if you want to focus on the monetary aspect it's the opportunity cost you should be concerned about, not the cost of tuition.
Actually that's a great idea. There's a lot of universities in Europe that have something like a $1k-$5k per year fees and you can get $1k/month comfortable apartments nearby pretty much around every one.
e.g. http://www.fu-berlin.de/en/studium/studienorganisation/immat... and http://www.fu-berlin.de/en/studium/international/studium_fu/...
Some of these have quite good reputations too.
e.g. http://www.fu-berlin.de/en/studium/studienorganisation/immat... and http://www.fu-berlin.de/en/studium/international/studium_fu/...
Some of these have quite good reputations too.
Fortunately I'm based in Scotland, and comparative the the states a master degree is priced far more reasonably and we have some excellent institution I.e. St Andrews university
I took a (second) Masters in the UK, basically because I was interested and it was cheap. I think you shouldn't even waver; a quality masters at that price is a steal. Save up some pennies, take a year, enjoy the subject, enjoy learning, have a great experience.
Even now I toy with the idea of taking a year off and just travelling somewhere to do another one. Something just plain interesting. Modern Japanese Literature, for example, or just identifying a few universities with cheap rates and picking something really interesting out of their catalogue.
If you do it for yourself, out of interest in the subject and because you just want to be better than you are, at that price it will be worth every penny. There is a frame of mind that struggles to comprehend education for the fun and satisfaction of it, rather than as part of earning more money. I smiled politely and stopped talking about it with them.
Even now I toy with the idea of taking a year off and just travelling somewhere to do another one. Something just plain interesting. Modern Japanese Literature, for example, or just identifying a few universities with cheap rates and picking something really interesting out of their catalogue.
If you do it for yourself, out of interest in the subject and because you just want to be better than you are, at that price it will be worth every penny. There is a frame of mind that struggles to comprehend education for the fun and satisfaction of it, rather than as part of earning more money. I smiled politely and stopped talking about it with them.
That changes things a bit, it's definitely worth doing then. I think St Andrews and Edinburgh have especially good reputations for CS.
That's interesting. Could people chime in with their opinion on online post-graduate degrees like the one Georgia Tech offers? [1] How impressive would you find a CV that has this degree compared to one that has the conventional degree?
[1] - http://www.omscs.gatech.edu/
[1] - http://www.omscs.gatech.edu/
[deleted]
If you just want to do some sort of programming for a living, you probably don't need a degree to make the switch. It will help you get your foot in the door, but it's going to be an expensive way to go about it. If you have a particular idea of what area you want to focus in - ML, systems programming, embedded, etc - then it can help secure a job that would simply be inaccessible any other way.
I went back to school after a decade of professional programming and finally finished a BS. It was worth it on a number of levels, but it was not cheap to do as an adult.
I went back to school after a decade of professional programming and finally finished a BS. It was worth it on a number of levels, but it was not cheap to do as an adult.
Yes. And it definitely was worth it. I have been programming since I was 11 and thought I was pretty good. However going to University had a huge positive impact.
A great quote from Lambert:
1. Decide what the program should do. 2. Decide how the program should do it. 3. Implement these decisions in code.
Only the last part is actually coding. So learning how to think better and more systematically is absolutely worth it. A good University will teach you how to do that.
A great quote from Lambert:
1. Decide what the program should do. 2. Decide how the program should do it. 3. Implement these decisions in code.
Only the last part is actually coding. So learning how to think better and more systematically is absolutely worth it. A good University will teach you how to do that.
I was just recounting how useful and profitable both my degrees have been. However I put myself into them both to get the most out of the experience. More so my masters which let me explore a number of creative ideas in depth to weed out bad ones and hone skills I am using every day now.
Academia has a specific purpose for self development of providing a cognitive playground of sorts tempered with tough accountability, critical review and deadlines.
Academia has a specific purpose for self development of providing a cognitive playground of sorts tempered with tough accountability, critical review and deadlines.
It depends. In the end, nothing beats experience and a good track record of getting things done. When I was responsible for taking hiring decisions at a startup, formal education was just one indicator of many. If you are talented, your time is probably better invested in taking a few months off to complete a few relevant online courses and program an app or website to show off your skills.
It will help in interviews since you lack work experience. You could retire as a teacher. You can get higher rates for government contracts. Outside of that you can learn more here in a few months. You just don't have the peice of paper to prove you did anything.
When someone asks a question like this, I get the impression that the questioner is not designing with the end in mind.
If you are not already, start with the goal and break down your roadmap from there.
What do you really want to do? (In this case, what are two or three jobs you would want to do?)
What are the necessary prerequisites to achieving that? (Fortunately, most places specify these in the job listings)
What steps must be taken in order to clear the prerequisites?
If you need a master degree in CS to do what you want to do then yes, it will be worth it. If you can possibly do that thing without first getting a master degree in CS the no, the degree would not have been worth it since there exists at least one cheaper or faster way to achieve your goal.
If you are not already, start with the goal and break down your roadmap from there.
What do you really want to do? (In this case, what are two or three jobs you would want to do?)
What are the necessary prerequisites to achieving that? (Fortunately, most places specify these in the job listings)
What steps must be taken in order to clear the prerequisites?
If you need a master degree in CS to do what you want to do then yes, it will be worth it. If you can possibly do that thing without first getting a master degree in CS the no, the degree would not have been worth it since there exists at least one cheaper or faster way to achieve your goal.
No, it is not necessary to work.
Yes it is necessary as it is a certification, it will make easier move across borders, will make you pay less taxes and will make you easier to hire.
You can really get all the notion without a formal education, provided that you are curious enough.
Yes it is necessary as it is a certification, it will make easier move across borders, will make you pay less taxes and will make you easier to hire.
You can really get all the notion without a formal education, provided that you are curious enough.
Yes -- for a career change.
However: I got a second B.Sc. in Computer Science (first Bachelor's was in the arts), and that worked just as well, for a career change, and at less cost.
Check out your options. I found that getting a B.Sc. in CS was very doable, and would take less time the Master's.
It all depends on your situation. For me, I only had to take CS classes (and some math/stats). Everything I did the first time through transferred. I'm guessing your situation may be similar. If in doubt, you can always email the college and ask for specifics. They're selling a product (education), and generally very willing to help.
However: I got a second B.Sc. in Computer Science (first Bachelor's was in the arts), and that worked just as well, for a career change, and at less cost.
Check out your options. I found that getting a B.Sc. in CS was very doable, and would take less time the Master's.
It all depends on your situation. For me, I only had to take CS classes (and some math/stats). Everything I did the first time through transferred. I'm guessing your situation may be similar. If in doubt, you can always email the college and ask for specifics. They're selling a product (education), and generally very willing to help.
It, obviously, depends. If you went through really good courses and extraordinary teachers, like old-school scheme-based Berkeley CS61A, then, perhaps, some AIMA based course with CL code, leave alone original SICP courses at MIT, then it definitely worth it. Berkeley CS188 (Python-based) is very good one too.
But if you just passed through some crappy courses which ends with "in Java" in some third-rate school, then you have, probably, wasted your time and money.
Good schools which still taught fundamental principles, like MIT, will always worth it.
But if you just passed through some crappy courses which ends with "in Java" in some third-rate school, then you have, probably, wasted your time and money.
Good schools which still taught fundamental principles, like MIT, will always worth it.
[deleted]
My conclusion looking at the executives at multiple large tech companies is that you can get there without a graduate degree but it's much less likely. A Master's is good but an MBA is a better predictor, even for companies that claim it's not a big deal.
As an independent contributor or middle manager you're fine without if you have a CS or eng undergraduate degree.
It depends a lot on what you have, where you are and where you want to go.
It depends on what you want to do. If your goal is to be a web developer or a game programmer then no, it's a lot of time investment and you'll come out of it still needing to learn a lot on the job.
If your goal is to go into a more academic area like AI or some other topic that's more of an area of R&D, then it's probably more worthwhile. If your goal is to be an academic, then obviously you need not only a masters but a PhD.
If your goal is to go into a more academic area like AI or some other topic that's more of an area of R&D, then it's probably more worthwhile. If your goal is to be an academic, then obviously you need not only a masters but a PhD.
If you might as a part time gig teach some classes at the local college, a master's degree is becoming a requirement given the new accreditation guidelines.
It's worth it for the speed of learning it affords you later. It won't teach you to program - A CS degree teaches you to learn, and learn fast.
I've seen so many technically superior students fail to learn a new technique because they couldn't read the logic notation.
That said, a CS degree is less cost effective per niche subject than a specialist with 10+ years experience.
Money wise, it's more or less the same, biased towards experience.
I've seen so many technically superior students fail to learn a new technique because they couldn't read the logic notation.
That said, a CS degree is less cost effective per niche subject than a specialist with 10+ years experience.
Money wise, it's more or less the same, biased towards experience.
You kinda of need a structured training and honestly its up to what you really want to do. Changing career path also means that you will start low by whatever this means but you can move quite fast once this will happen.
The first thing you should do imo, is to decide what skills you want to get, what is that you wanna do and then move for MSc or coursera or anything else that will give this structured training you need.
The first thing you should do imo, is to decide what skills you want to get, what is that you wanna do and then move for MSc or coursera or anything else that will give this structured training you need.
Are online degrees worth it? Part of me feels like most companies would look down on it and it might be worse than not having a degree.
Specifically, I was looking at http://ufonline.ufl.edu/degrees/undergraduate/computer-scien...
Specifically, I was looking at http://ufonline.ufl.edu/degrees/undergraduate/computer-scien...
Note: these thoughts are intuition based and are not refined. I'd need 20 hours at least to make a text like this refined.
I'm a CS master student in Amsterdam. I feel I have more similarity to you since you're also from Europe. The US system is nuts, I don't get it. My current debt is gasps 3000 euro's! If I finish my master degree it will be looks in horror 300 euro's! When someone from the US thinks about giving advice, please know that educational systems are different everywhere. So you need to disclaim where your experience is based upon. Mine is based upon the Dutch educational system, where the whole experience was (back then) funded by the government.
Furthermore, the idea of a university and also the idea of getting a master degree (in The Netherlands) have different cultural connontations. In The Netherlands it is kind of a given to do a master degree after a bachelor. No one knows why, but I feel that a lot of children were raised with the idea to "finish school," and most people feel that getting a master degree is what "finishing school" is like (there are exceptions of course).
Should you get a master degree? I'm going to give you a very opinionated answer. I'd be delighted if people countered me, because my story might be dangerous to take at face value, though less dangerous than having no or not enough information.
I'm a programmer teacher myself right now and one thing I've never realized is that you need to keep pace. Some students fall below the pace, others above it and to some it's the right pace. Chances are high that you're either above it or below it, since I can literally divide my students into 3 equal groups.
Furthermore, my Dutch curriculum gave me a many many obligatory courses during my bachelor. It gave me some freedom in my master. This is bad. Get as much freedom as possible. I've noticed that -- on average -- obligatory courses teach me less useful things. In some cases, I did need to learn certain basics that I didn't want to learn, but more often than not: I learned some academic arcane wizardry that I'm never going to use again (or at least, chances are a lot lower).
By the way, good obligatory courses are everything that's involved with how computers work. So distributed systems, computer systems and the like. Other good obligatory courses are theory of computation, algorithms, etc. You're not necessarily going to use that knowledge but they teach you a certain way of thinking.
Bad obligatory courses: anything that has to do with ontologies (as an optional course it's great, as an obligatory course, not so much), research on Multimedia Systems (too in-depth), software engineering courses (if they don't have a practical/pragmatic basis and emphasis), basically anything that focuses too much on science and research. They're all great as optional courses, but having them as obligatory courses, no. Also, obligatory courses that only show powerpoint slides and academic research paper assignments are a no go. Even as optional courses I'd be wary to take these (from a pragmatic computer science standpoint, go ahead if you want to be more broadly educated).
The next thing that is really important is the student body. You want to be in a student body that suits your goals. If you want to overachieve during your studies, you need to go to a university of overachievers. If you just want to go solo at it, you need a university that's not getting in your way when you do that.
These 3 things:
- pace
- ratio of obligatory courses and optional ones
- the type of students that are here
Are all metrics to answer one single question: to what extent does this study program fit your learning goals and your learning style?
Anything below 80%, don't do it. Everything between 80% to 85%, meh. You'd want at least a 90% fit or higher to consider it to be worth it. Remember, if you have an 80% fit, that means that you'll most likely waste at least 20% of your time on university, time that you could otherwise spend on self-study and creating an amazing portfolio. Also, when the fit is 90%, then you'll most likely at least waste 10% of your time there, which is twice as less compared to at least 20%.
If I could do the uni thing again, I'd aim for a 95%, personally. Otherwise, I'd do self-study. Why? Well, self-study means that I need to create an eco-system for myself (support group, learning the right material, having discipline). When that eco-system is up and running it's very hard for any university to beat that. You know better what you need than any university program out there for most cases.
That's one thing I want to leave you with (another realization since I began to teach): there's no perfect university program for you. It's impossible, since it needs to cater to different needs for different students. I'm noticing I cater to the lowest performing students, otherwise they won't get anything out of the programming bootcamp I provide. This bores the better students. My 'duck-tape-style' solution is to give them a codeschool account (like fixing with duck tape, it works but.... yea I think you see how this is a quick fix). So by nature, study programs have to compromise. The only thing that could be a perfect fit is when you design your own curriculum.
The advantages of a 95% fit with a university program is in the synergy it provides. For a slightly lower learning rate you get:
1. contacts
2. experts who you can bother with questions
3. various incentives to study
4. a proof that you know this stuff (your degree)
5. a broader view
All these advantages elude to the point of: you don't have to setup your own eco-system (remember that discipline thing? Or finding outside help? It's pretty hard for most). If you're really good at doing that, then I'd say university is not going to help you. Consider the advantages of setting up your own ecosystem: 1. you have contacts with more work-experience 2. you know experts in more specific/niche fields 3. clients will give you a strong reason to know more 4. your portfolio is your proof 5. you'll have a more real-world view
The advantage of uni: you don't need to set it up. Most of it is already there. The advantage of doing it yourself: more tailor-made, more real-world experience.
To wrap this up, you need to ask yourself the question: what educational system (uni, work experience, self study or otherwise) will give me the most alignment to my learning style and learning goals? How do you progress the fastest, and can you have some sort of showcase (i.e. degree or portfolio or blog -- like Scott Young with his MIT challenge) of that progress?
Goodluck
Disclaimer: I finished psychology (bachelor + honours courses), business informatics (bachelor) and information science (master). I'm working as a teacher for a programming bootcamp nowadays and am in the final phase of doing computer science. I also didn't finish some studies, I dropped out of business school, twice (don't do business school, it's only powerpoints and some writing but nothing pragmatic). I'm recently beginning to learn how well I stack up to self-learned individuals and the answer is: about the same (since HN keeps me up to date with the real world).
I'm a CS master student in Amsterdam. I feel I have more similarity to you since you're also from Europe. The US system is nuts, I don't get it. My current debt is gasps 3000 euro's! If I finish my master degree it will be looks in horror 300 euro's! When someone from the US thinks about giving advice, please know that educational systems are different everywhere. So you need to disclaim where your experience is based upon. Mine is based upon the Dutch educational system, where the whole experience was (back then) funded by the government.
Furthermore, the idea of a university and also the idea of getting a master degree (in The Netherlands) have different cultural connontations. In The Netherlands it is kind of a given to do a master degree after a bachelor. No one knows why, but I feel that a lot of children were raised with the idea to "finish school," and most people feel that getting a master degree is what "finishing school" is like (there are exceptions of course).
Should you get a master degree? I'm going to give you a very opinionated answer. I'd be delighted if people countered me, because my story might be dangerous to take at face value, though less dangerous than having no or not enough information.
I'm a programmer teacher myself right now and one thing I've never realized is that you need to keep pace. Some students fall below the pace, others above it and to some it's the right pace. Chances are high that you're either above it or below it, since I can literally divide my students into 3 equal groups.
Furthermore, my Dutch curriculum gave me a many many obligatory courses during my bachelor. It gave me some freedom in my master. This is bad. Get as much freedom as possible. I've noticed that -- on average -- obligatory courses teach me less useful things. In some cases, I did need to learn certain basics that I didn't want to learn, but more often than not: I learned some academic arcane wizardry that I'm never going to use again (or at least, chances are a lot lower).
By the way, good obligatory courses are everything that's involved with how computers work. So distributed systems, computer systems and the like. Other good obligatory courses are theory of computation, algorithms, etc. You're not necessarily going to use that knowledge but they teach you a certain way of thinking.
Bad obligatory courses: anything that has to do with ontologies (as an optional course it's great, as an obligatory course, not so much), research on Multimedia Systems (too in-depth), software engineering courses (if they don't have a practical/pragmatic basis and emphasis), basically anything that focuses too much on science and research. They're all great as optional courses, but having them as obligatory courses, no. Also, obligatory courses that only show powerpoint slides and academic research paper assignments are a no go. Even as optional courses I'd be wary to take these (from a pragmatic computer science standpoint, go ahead if you want to be more broadly educated).
The next thing that is really important is the student body. You want to be in a student body that suits your goals. If you want to overachieve during your studies, you need to go to a university of overachievers. If you just want to go solo at it, you need a university that's not getting in your way when you do that.
These 3 things:
- pace
- ratio of obligatory courses and optional ones
- the type of students that are here
Are all metrics to answer one single question: to what extent does this study program fit your learning goals and your learning style?
Anything below 80%, don't do it. Everything between 80% to 85%, meh. You'd want at least a 90% fit or higher to consider it to be worth it. Remember, if you have an 80% fit, that means that you'll most likely waste at least 20% of your time on university, time that you could otherwise spend on self-study and creating an amazing portfolio. Also, when the fit is 90%, then you'll most likely at least waste 10% of your time there, which is twice as less compared to at least 20%.
If I could do the uni thing again, I'd aim for a 95%, personally. Otherwise, I'd do self-study. Why? Well, self-study means that I need to create an eco-system for myself (support group, learning the right material, having discipline). When that eco-system is up and running it's very hard for any university to beat that. You know better what you need than any university program out there for most cases.
That's one thing I want to leave you with (another realization since I began to teach): there's no perfect university program for you. It's impossible, since it needs to cater to different needs for different students. I'm noticing I cater to the lowest performing students, otherwise they won't get anything out of the programming bootcamp I provide. This bores the better students. My 'duck-tape-style' solution is to give them a codeschool account (like fixing with duck tape, it works but.... yea I think you see how this is a quick fix). So by nature, study programs have to compromise. The only thing that could be a perfect fit is when you design your own curriculum.
The advantages of a 95% fit with a university program is in the synergy it provides. For a slightly lower learning rate you get:
1. contacts
2. experts who you can bother with questions
3. various incentives to study
4. a proof that you know this stuff (your degree)
5. a broader view
All these advantages elude to the point of: you don't have to setup your own eco-system (remember that discipline thing? Or finding outside help? It's pretty hard for most). If you're really good at doing that, then I'd say university is not going to help you. Consider the advantages of setting up your own ecosystem: 1. you have contacts with more work-experience 2. you know experts in more specific/niche fields 3. clients will give you a strong reason to know more 4. your portfolio is your proof 5. you'll have a more real-world view
The advantage of uni: you don't need to set it up. Most of it is already there. The advantage of doing it yourself: more tailor-made, more real-world experience.
To wrap this up, you need to ask yourself the question: what educational system (uni, work experience, self study or otherwise) will give me the most alignment to my learning style and learning goals? How do you progress the fastest, and can you have some sort of showcase (i.e. degree or portfolio or blog -- like Scott Young with his MIT challenge) of that progress?
Goodluck
Disclaimer: I finished psychology (bachelor + honours courses), business informatics (bachelor) and information science (master). I'm working as a teacher for a programming bootcamp nowadays and am in the final phase of doing computer science. I also didn't finish some studies, I dropped out of business school, twice (don't do business school, it's only powerpoints and some writing but nothing pragmatic). I'm recently beginning to learn how well I stack up to self-learned individuals and the answer is: about the same (since HN keeps me up to date with the real world).
In theory it's not worth it. In pracrice, based on where you live in the world, I found at that it makes a tiny difference: promotion, salary, etc.
Plus, if you're looking to apply for big companies like google, etc. It's mandatory.
Otherwise, anyone can write code!!
Plus, if you're looking to apply for big companies like google, etc. It's mandatory.
Otherwise, anyone can write code!!
It is definitely not mandatory for big companies. Although depending on the specific hiring manager, some might be more skeptical of your experience if you don't have a degree in CS, but that is true at any company. Not saying it isn't helpful, but not mandatory.
I found out that job descriptions are often vague about the minimum requirements - like "BS or higher degree in CS".
From what I've seen, HR creates a short list of candidates, this is before the hiring manager step. When a company is hot, they receive a lot of Resumes. HR maxes out the requirements in order to create a quick short list. This is purely based on the content of your Resume. They run a simple search in their system by maxing out all the requirements to see which candidates pop up first. In 2017 you'll be surprised how many candidates have more than the minimum requirements! If you haven't applied through referral and if you're aiming for a big conpany, you'll get filtered at the very first and automated step - HR.
From what I've seen, HR creates a short list of candidates, this is before the hiring manager step. When a company is hot, they receive a lot of Resumes. HR maxes out the requirements in order to create a quick short list. This is purely based on the content of your Resume. They run a simple search in their system by maxing out all the requirements to see which candidates pop up first. In 2017 you'll be surprised how many candidates have more than the minimum requirements! If you haven't applied through referral and if you're aiming for a big conpany, you'll get filtered at the very first and automated step - HR.
Just an anecdote, but: I have a non-CS bachelor's and five years of experience, and I recently received offers from both of the AppAmaGooBookSoft companies that I applied to (via internal recruiters).
Sure, in the recruiter land, Bachelor's + 5 years of exp = Master's. there are exceptions to the rule.
I did a career change and am in the data science field. I would not get any interviews without my MS in CS. So for me it was essential...
Masters Degreees seldom seem worth it. It's just delaying you from doing real work and getting hands on experience. When I interview someone with a Masters I just think, "Kid couldn't get a job out of undergrad... wonder what's wrong with him." But if it gives you confidence, go for it... Give me a self-taught applicant who builds side projects and has an active GitHub account over a Masters any day.
Depends what stuff you want. I would assume a self taught applicant would be building web apps and such.
Master's degree applicant would be building something like, compilers, distributed systems, machine learning etc as part of the degree
Master's degree applicant would be building something like, compilers, distributed systems, machine learning etc as part of the degree
I think that also depends. What makes you think that self-taught applicants can't learn compilers, distributed systems, or machine learning? If the candidate has proven the same amount of knowledge acquired during the interview, I'd definitely go for the self-taught one.
I think back to the best developers I've ever worked with, and one of them did have a Masters... in Philosophy.
I just haven't seen any correlation between skill and education level. Ha, with the exception of people who get a PMP... I've found them to almost always be bad at running projects.
I just haven't seen any correlation between skill and education level. Ha, with the exception of people who get a PMP... I've found them to almost always be bad at running projects.
Because that stuff is harder to learn on the web simply because of the lack of comprehensive materials.
For web development there is tons of resources on the web to learn.
The other stuff you really need to start reading books or academic papers. And it's useful to have someone to tell you where to start.
For web development there is tons of resources on the web to learn.
The other stuff you really need to start reading books or academic papers. And it's useful to have someone to tell you where to start.
No. a masters isnt all that valued at 90% of cs bachelors employers.
No, tried and gave up. Back to programming now.
Look at financial outcomes from your target institution.
My fiancee and brother are both architects. I'm quite familiar with this career. I work as a professional software dev in the Bay Area.
One thing you'll find really quickly: there's not nearly as much focus on credentialing and licensing in software, compared to architecture. Like, I'm talking, zero. No AIA, no AREs, none of it.
My advice: focus on getting an education, but realize your education can come from a lot of places.
If you want to be a software dev but aren't sure exactly what you want to do, just take the first job you can get and work your way up. You can absolutely get to the top of the profession this way (Google, etc.), it will just take a while. Advantage: practical work experience, cash earnings. You need to find a place that will invest in you and your skills though; most startups won't do this, so avoid them. Look for a great manager and a balanced team of junior/mid/senior people with strong engineering leadership, and a good culture of code review, learning, and leveling-up. [2]
Graduate programs in CS are better if you want to get into a special area of computing that requires a lot of theoretical learning. The more established the field, the more you'll need graduate education. You can probably "sneak in" to some of the newer subfields with high demand, like genetics or machine learning/AI. If you want to do signal/image processing, you'll need graduate school.
You won't get a job at a big, high-paying company without work experience or a degree. Feel free to try, but the AmaGooFaceSofts don't really recruit for the jobs you want to get [1] without the right degree or work experience. People say otherwise, but they're basically full of shit.
I wouldn't advise going to university for you. You've presumably already got a BA or BS, so you've gained a lot of the non-disciplinary benefits of college (how to write well, how to organize and structure your time, etc). If you really just want vocational cross-training, find a good company and clock up a few years of work experience.
Feel free to email me for more on this topic, email is in my sig.
[1] You can probably get dead-end, low-status jobs in a bigco with the right credentials, but you'll do better avoiding these.
[2] This can be very hard to spot/recognize unless you've been in the field for a while. Try to figure out who works there and back-channel to figure out what it's like working there. All crunch time, endless death march, all senior people with no juniors, all promotions from outside (no internal talent growth) = avoid. Probably 90% of startups and most tech companies in general are terrible in this regard; everyone's in such a damned hurry all the time.
One thing you'll find really quickly: there's not nearly as much focus on credentialing and licensing in software, compared to architecture. Like, I'm talking, zero. No AIA, no AREs, none of it.
My advice: focus on getting an education, but realize your education can come from a lot of places.
If you want to be a software dev but aren't sure exactly what you want to do, just take the first job you can get and work your way up. You can absolutely get to the top of the profession this way (Google, etc.), it will just take a while. Advantage: practical work experience, cash earnings. You need to find a place that will invest in you and your skills though; most startups won't do this, so avoid them. Look for a great manager and a balanced team of junior/mid/senior people with strong engineering leadership, and a good culture of code review, learning, and leveling-up. [2]
Graduate programs in CS are better if you want to get into a special area of computing that requires a lot of theoretical learning. The more established the field, the more you'll need graduate education. You can probably "sneak in" to some of the newer subfields with high demand, like genetics or machine learning/AI. If you want to do signal/image processing, you'll need graduate school.
You won't get a job at a big, high-paying company without work experience or a degree. Feel free to try, but the AmaGooFaceSofts don't really recruit for the jobs you want to get [1] without the right degree or work experience. People say otherwise, but they're basically full of shit.
I wouldn't advise going to university for you. You've presumably already got a BA or BS, so you've gained a lot of the non-disciplinary benefits of college (how to write well, how to organize and structure your time, etc). If you really just want vocational cross-training, find a good company and clock up a few years of work experience.
Feel free to email me for more on this topic, email is in my sig.
[1] You can probably get dead-end, low-status jobs in a bigco with the right credentials, but you'll do better avoiding these.
[2] This can be very hard to spot/recognize unless you've been in the field for a while. Try to figure out who works there and back-channel to figure out what it's like working there. All crunch time, endless death march, all senior people with no juniors, all promotions from outside (no internal talent growth) = avoid. Probably 90% of startups and most tech companies in general are terrible in this regard; everyone's in such a damned hurry all the time.
I'm currently finishing up my masters program in CS. So take into consideration that I haven't had enough time out to get a full perspective on the choice but I can give you an outline of my experience and why I think it was the right choice for me. I finished undergrad with a degree in Math and a minor in business admin. The last year or so I didn't know what I wanted to do after graduation but was interested in tech. I had read online that not too long ago (I think these Oppourtunities may still be out there) that people could finish with a math degree and a company would hire them and just teach them to code. My experience applying around is places expected you to atleast have a class or two under your belt. I didn't have time in my schedule before graduating so I didn't get a chance to take any of these classes. I eventually went back because of a few reasons. A) Like you I had done a little bit of self learning but wasn't producing anything super meaningful. B) I was primarily interested in getting into the data side of things (more math) C) I felt it could potentially come in handy down the line and lead to more challenging/interesting positions. So first and foremost the question to address is why not just figure it out on your own? These is certainly a viable path as there are a ton of great resources on line and more every day. I think I decided not to because I thought formal education would be a faster route. This obviously won't hold for everyone but if I could learn what I needed to know in a year or two vs longer with self study then I could get in a job quicker and basically move faster. I also wasn't super confident in my ability to create anything meaningful that would get me a job on my own. I think another advantage of formal is there is a social aspect to it and you can learn from your peers. If you are doing it by yourself you can meet people and try to ask questions but it may be harder. For point B I think a masters can make sense depending on what area you want to go into. If you want to do web dev I say skip it. For me though the chance to learn ML techniques from experts who study it for a living made it more appealing than trying to figure it out myself. I know there are options and classes for an emphasis in "software engineering" at my school but the vibe I get for those is that there is nothing there you couldn't learn by working in the field for a few years. So what you want to do is a pretty big factor in my opinion. As for point C this is definitely more speculation at this point but I have theories to suggest it is true. First being that contrary to what people want to think about tech transcending the rules of other industries it doesn't. People are people and still respect formal education. If there is a situation where all things being equal you have a degree and the other person doesn't you will have the edge. It also signals aafety for managers making hiring decisions. They won't look as stupid if they hire someone with a masters vs someone who self taught and it doesn't work out. I have also heard and seen people in developer positions coming back to get their masters. So either these people are irrational or like spending money for something they could find online. You can certainly find programs where you aren't "60k-100k" in debt. And I think my final thought though not rigorous is if you want to do this as a career why would you want to invest the time and energy on something you will plan to take up a large chunk of your waking life for the rest of your life. You get out of life/career/etc what you put into it. Hope this helps.
How did you get admitted to a Masters program without a background in CS? Most CS departments (Masters, PhD) look for standard courses in programming and data structures. I ask a fellow pure math degree holder with little CS coursework. I intend to pursue a PhD in CS and enrolled as a post-bac to make up the coursework to then apply for graduate programs.
Same route. Had to take the pre reqs. Honestly it seemed more time consuming than anything compared to higher level math courses
If you can't write code, please flyings
Spaghetti monster don't try. I've wasted too much time trying to fix shit people have left broken