Not sure I would agree. School gave me a bunch of the knowledge I'd very unlikely picked autodidactically. For example, the basic advanced maths package, which is a key to understanding numerous CS concepts. Finite state automations, Fourier transforms, dynamic programming, formal grammars, graph theory.. are not something I could be able to casually pick up with just high school knowledge and fumbling around. No doubt some people could, but am pretty average in this regard and I think the majority would relate to that.
I'd even argue non-academic things, like organizing a project, working in groups, being able to tell a dud from someone who delivers, meeting the deadlines and time planning, are better and less stressfully learned in the school.
I am a big fan of college education.But computer science is just not one of them.That is my experience.YMMV.My CTO has a degree in Visual Communication.He taught himself all what he knows.You know what,we both earn six figures,i can tell you that you wont know that he does not have any degree in computer science.
In industry, a "hard" problem is one that takes more than a few weeks to solve. In academia, a hard problem is one that you don't even know if you can solve, let alone put a time frame on it.
And yes, you can learn anything on your own, but the number of people who actually go and learn the deep maths on their own is vanishingly small.
Is there any skill in the planet that cannot be learned by yourself, given enough time?
Now, if you do have the self-discipline to learn everything, at the same level, without a teacher supervising and pointing out the mistakes you didn't even know you had made, congratulations.
In that case, though, why wouldn't you enroll anyway? It's like a self-signed certificate. You may have a valid one, but having someone else to validate gives it more credibility.
And not too distance reasons why boot-camps are everywhere.You try to make computer science/tech looks like extra ordinary adventures.I repeat you don't need four walls of university to learn almost everything you need to know in computer science.
If i had had information that i have now,i would have dropped out of college in a heartbeat.I don't need to give you any example of people who drop out of computer science study and still excel.They are everywhere.Don't say that these folks are exception because they are not.
I understand that some folks need structure to excel in anywhere they find themselves in life.
Was no real problem for me. (Though not 'casually' as I head to read up quiet a bit).
The rest of your post makes sense, but you lost me at this sentiment. There is a lot more to computing that information systems and programming. I'm glad your career worked out, but there is certainly much in CS that you will simply never learn in the field.
I think people who trash university education either never attended, went to a poor school, or were studying something they didn't care about and thus never engaged properly.
The worst part is: you don't even know what you are missing in the first place.
Since we are all into anecdotes today, let me give you mine:
My co-founder once called me with some aggravation, because he was developing a feature for a client that needed, in a nutsheel, to figure out which points, out of a few million, were inside some arbitrary geographical boundaries.
His naive algorithm was taking minutes to process all the data, but the requirement was for real-time(ish).
Turns out I didn't even get to apply the space partitioning techniques that I learned in class. Just explaining to him the concept of pre-calculating bounding boxes was more than enough for him to implement a solution in less than an hour.
Since he had not even heard of them, he didn't know what to look for, or that there was an entire class of algorithms and data structures in computer graphics dedicated to that sort of problem.
Don't even get me started with things like dynamic programming, or mathematical logic. Are you seriously going to study something like that for months, if there's no-one pushing you?
I'm of the opposite opinion to be honest. If you need to be pushed by someone else to learn something then why would you do it?
Like what? In other words, what parts of undergrad CS could you not learn on your own from the books given reasonable amount of time, you figure?
I don't know what it's like on the Ivy League School level, but on the community college level; it seems like the courses are at least five-ten years out of date. (I'm not dumping on community colleges either. I have gotten more out of community colleges than state, or UC courses. I've alway been a huge supporter of community colleges.)
I really wanted to support my local community college, and learn something new, but every year I look through the offered courses, and even the catalogue, and it's just not worth the time, and now the money. The course are just too basic, and dated.
I honestly think tenure is to blame. Plus, I don't think most administrators know anything about computing, and just rubber stamp these antiquated courses. It's a shame because my local community college is surrounded by tech workers, and kids/adults who want to learn this stuff.
In other sciences, schools typically provide free tuition in addition to a decent annual stipend (for housing, food, supplies, entertainment, etc.). I'd guess most CS PhD programs are similar.
>Virtually nothing to gain FROM the PhD
That is probably true if you go into it assuming that. The idea is that you already have a longish (2-6 years) project that you want to work on. You gain whatever you'd like.
>There's just nothing in the field of computing that I believe couldn't be better learned by experience.
This is why one would work on a PhD.
A PhD is a guaranteed salary for five years to do pretty much whatever you want (plus a bit of politicking to explain to someone why what you're doing is related to an existing grant, which is way easier than it sounds). And bonus: you get to work on things that no one has ever done before, instead of just teaching yourself stuff everyone else already knows out of a book.
He taught me things about the Linux kernel that I'm not sure I could have learned anywhere else. I'm sure plenty of programmers are kernel experts, but none of them have the time to sit down and do an all-nighter hackathon with me the way my advisor did.
Plenty of excellent engineers take unpaid time off work between jobs for the opportunity to work on personal projects without interruption.
Point is, 30-40k/yr ain't bad pay for that sort of freedom.
EDIT: I've been in a PhD program. The reply to this comment DOES NOT describe a normal or healthy advisor/advisee relationship.
Ultimately, there should be a point in every PhD where the student carves out a project and works on that project, and it should probably happen before the student is spending most of their time on research. The student shouldn't have to play politics to convince people to allow him/her to work on their own ideas, as long as those ideas have scientific value.
If you find yourself consistently working 80 hour weeks and answering 2am emails, switch advisors or switch programs.
If you're just working on your advisor's stuff without any autonomy and/or don't have any say in the direction of your or your lab's research, switch advisors or switch programs.
A lot of the "bad press" PhD programs get aren't indicative of a healthy PhD and are not as common as they're made out to be. And never necessary. It's usually a combination of an abusive professor and a niave student. Which, BTW, happens in industry as well ("death marches" etc)
A phd isn't a 40 hour work week kinda gig, but it also shouldn't be abusive. But in general, it's really simple: don't let people abuse you, and if you're taking a pay cut in return for freedom, be damn sure you demand the freedom.
Calling it "freedom" could not be farther from the truth. You don't get to work on whatever you want unless you want to pay your own way. Stray a little bit out of your advisor's comfort zone and prepare to be put in your place. There will be plenty of interruptions, and you will spend countless hours digging holes and filling them back up as you carry out orders from emails that you get at 2am from your advisor.
That salary is abysmal when you add up 80-hour weeks over 5+ years. Add in the risk of failing out of the program or quitting, and you would have to (in many cases) be a fool to take the deal.
See here for a realistic picture of what it can be like to go through with a PhD in computer science: https://news.ycombinator.com/item?id=8720640
I hear about people with dysfunctional phd experiences and one of my friends is experiencing one right now. To be honest, the students are to blame at least partly for this. IMO the people who get most exploited are those who are most desperate for a phd. Like someone said in the reply to the linked comment, you shouldn't tolerate abuse, you need to do your research before you sign on the dotted line and you should be prepared to walk away if things do go south.
Sure, there are jerks in academia, but I've worked for a few different tech companies and there are plenty of jerks there too. We never think twice about getting out of a shitty job situation, but somehow people don't do the same in a phd program.
I also don't know what people are talking when they mention 80 hour workweeks. I do something like 40-60 a week. Some weeks are closer to 30 than 40, and the 60 hour weeks are rare. The people who do 80 hour weeks don't seem to know when to stop working, and they don't seem to be able to accept that there are others who are way smarter than them and working harder isn't going to make up for that. I realized very quickly in my phd that there were people here who were in a different league from me in terms of ability. If I'd tried to compete with them, I would have lost both the rat race and my peace of mind, so I didn't. What I do know is that my work is interesting and important and clearly people appreciate it, I'm satisfied with that. I'm sure I could be winning more awards and publishing 4 papers a year instead of 2 if I worked 20 hours more every week, but really, I don't want to do that.
I'm not arguing that there's total freedom to go to grad school and do what you want. I'm arguing that no one is forcing anyone to be in grad school doing something they don't want.
Ultimately, it is geared around your two major milestones of confirmation (at 1 year) and submission (at 3-4 years). As your supervisor is not an examiner for your thesis at submission, this means that you are very much in control of what you do and write in your PhD. Your supervision team are your board of advisors, not actually your boss. (Though usually their advice is good, well-intentioned, and worth heeding.)
This does mean that in grants, we have to be a little careful what we say will be done by PhD students, because it's always possible they'll head in a different direction instead!
Actually, as I understand it (I'm a fairly junior academic) most Australian academics prefer capable independently-minded students. That's not just because we're nice people, but because that's how the incentives work -- we're all time pressured, so students who we can be confident will produce a good thesis with just a bit of direction and advice are like gold dust. Ones that we need to give more direction to are also good -- we've been through the process a few times and can design some PhD-shaped research for you to do. Not-so-capable independently-minded students I guess could be a bit trickier, as it could take quite a lot of time and effort to get their research into a shape that will be approved by the external examiner. (I'm yet to encounter the last category though.)
But I'm yet to hear of a 2am email that a student must answer at 2am.
But then, Australian PhDs tend to be 3-4 years' pure research, rather than 5+ years including lots of TA work, so there are a few differences in the system.
Yes. The experienced discussed at the link you posted is atypical and abusive.
But the work that I do isn't research, and I'm not advancing the field -- just solving business problems. If I was born in the late 60s vs late 70s, pursuing an academic career would have been a great option, but that ship sailed.
Nah, you just don't know what you don't know. There are subjects that are hard to pick up outside of a real course with an instructor, peers, projects, etc. Some areas of CS depend on graduate level math and would be very tough to pick up on your own.
When I say some fields you need formal education in a controlled setting, there's a few examples I can give to provide context.
If you want to go into medicine, you can't borrow a friend and just try things on them. By the time you go into the field any mistake you make becomes critical and it's difficult to log hours and gain experience without a formal educational environment.
To practice law you need to be able to pass the bar, you need to understand decades of case history, legal precedent and how the entire system functions so that you can feasibly operate within that system.
To get into management you can potentially gain experience in volunteer organizations but to do so you're likely going to have enough of a go-getter attitude to be elevated to those positions in the first place. It's not quite the same as saying "I'm going to read these books and learn management."
To go into various fields of engineering there are a number of systems to be understood, sometimes expensive equipment involved and literal danger to other people if things aren't done properly. You can certainly tinker your way into an interest, but you need the formal education in a controlled environment.
There are many other fields that fit within that bubble.
For most of computer science you can pick up and book, sit in front of your laptop and work, learn, experiment, try, fail, learn, improve continuously for virtually no cost other than your own time. You need a goal, then to work towards that goal you learn what you need to accomplish it and pick up those pieces to begin. When it sucks, you learn why and figure out how to improve it. You start optimizing. You need to make something faster you learn how it works under the hood. You need to hook up to some other system you learn about apis. You need to make the interface better, you learn about UX.
The cost to learn is time and that's why this field is constant learning.
I agree with other posters that most people are pursuing advanced math in their spare time. Neither am I but I don't often need to invoke advanced math. I know there are areas where one would need it more, but these days I do not know many people in this field who do.
The crux of my point is simply that, some of the best programmers I know have never gone to college and are 100% self taught. There are very few other fields that you can say that about.
That's all I was getting at.
After having been in the field for 15 years, there are a few things that become very clear:
1. I did not need an undergraduate degree to do this. Some fields you need formal education in a controlled setting. This isn't one of them.
2. There is virtually nothing in this field that I feel I couldn't learn given books and free time
3. I am married with 2 kids and a good job. To pursue a PhD I've got to either put my job and my income on hold to go pursue it (while taking on the expense) OR pursue it in my spare time and encroach on my children's childhood. Neither are worth it.
4. Virtually nothing to gain FROM the PhD
I also have a Master's but I got that in a business field instead, which is tremendously harder to just get from books. Experience and connections in business are huge and that degree was worth every penny.
At this point, if I went back to school for anything it would probably be Law, Statistics or Finance. There's just nothing in the field of computing that I believe couldn't be better learned by experience.