Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do you think getting a computer science degree is necessary? #53

Closed
ankurkaushal opened this issue Sep 22, 2015 · 9 comments
Closed

Do you think getting a computer science degree is necessary? #53

ankurkaushal opened this issue Sep 22, 2015 · 9 comments

Comments

@ankurkaushal
Copy link

This question follows up this one, #47

Or let me phrase it this way, would you recommend going to a university? I currently have a college diploma & have always toyed with the idea of going back to university. What are your thoughts?

@gaearon
Copy link
Owner

gaearon commented Sep 22, 2015

I’d recommend doing anything that feels good if it doesn’t hurt you or other people.
University can definitely be one of those things.

There are many pros, cons and open questions. Here’s what I would consider:

  • Can I afford it? I feel panic when I think of living locked into a bad decision. Being in debt feels very scary to me, but maybe it’s because I’m from Russia where college loans aren’t really a thing, and it’s not hard to get a free education.
  • Who are the people around me? This is probably the most important question to answer. In many ways, you are a product of your environment. Surround yourself with the wrong people, and you’ll be miserable; find your tribe and you’ll thrive. Are you excited reading teachers' biographies? Have you watched their lectures online and dreamed of attending them? What about the students? Do you know people who graduated from there? What are they like? Are they focused? Are they broad? Would you rather be focused or broad? Or both? Do you admire their personal qualities? Would you like to spend your life the way they spend their lives? Do you like what they know, how they think, how they talk, how they look? Would you go to a deserted island with these people? If you’re not sure, you don’t know enough about this place: keep enquiring.
  • Can I change lanes? Sometimes it seems like you’re really excited about something, but as you spend some time studying it, you realize the thrill is gone, and making it the central focus of your education was a mistake. Say, you’re interested in machine learning. Before going to university to study it, take a two months Coursera course, work through a good online intro book, or watch a dozen iTunes U lectures. There’s surprisingly large amount of accessible uni-quality educational material online. You can find pretty quickly if you’re really fascinated about the topic, or if you were only fascinated with the idea of being fascinated about it. It’s likely that you’ll want to change lanes several times during your education, so you want to make sure it’s possible and encouraged to try different things. You shouldn’t have to feel like a failure for being not really into something.
  • How do I keep producing? The industry is moving like crazy. There’s a part of me that kinda wishes to go into a cave to study pure maths, but I know I won’t last long: I’m already addicted to creating tangible things that other people use. It would be very hard for me to completely give up on open source, JavaScript, or even creating products, and jump into education where I’m constantly reminded how little I know. I guess it’s a trap of starting producing things too early, you can’t get off of it. I expect this to be especially bad if you’re in an environment where people don’t really have the same problem, so they can fully focus on their education.
  • What am I giving up? Education takes time and a concentrated effort to be in a single place during that time. You might be missing out on industry work and getting industry experience, you might be missing out on moving to a better country, you might be missing out on meeting your future significant other at a music concert you didn’t go to because you were studying. You might be missing out on working together with people older and more experienced than you because in the uni you’ll be mostly hanging out with folks of your age. Whether this is a problem or not, is up to you, but it’s something I’d keep in mind.

@ankurkaushal
Copy link
Author

Thanks for the reply Dan, you gave some interesting points. One more question, do you ever feel knowing little (like for instance, certain algorithms)? How do you overcome that? I am a developer too, I want to make things too but there are certain times when knowing little comes in the way.

@sebmck
Copy link

sebmck commented Sep 22, 2015

I'm not @gaearon but I think this applies to him too, but the only reason not having a (comp sci) degree has been an issue for me is that all of the US work visas require one.

@robwormald
Copy link

@ankurkaushal i had a similar experience as dan - I'll say that we are incredibly lucky to live in an age where almost anything you could possibly want to know is out there on the internet. I didn't go to Harvard or Stanford, but I've taken Computer Science courses from both of them - for free! The Harvard CS50 course is a brilliant intro to algorithms, and they make a real effort to make it accessible online.

@gaearon
Copy link
Owner

gaearon commented Sep 22, 2015

Oh, I feel that all the time. The best you can do is to try exploring what exactly you don’t know. Create a map, so to say, of the things you might never learn. For example, you may not know machine learning, but you should have a solid idea of what machine learning is so if you ever see the problem requiring it, you can at least recognize it.

Peter Norvig puts it way better than me in an interview about one of his blog entries:

(Backstory: http://ravimohan.blogspot.ru/2007/04/learning-from-sudoku-solvers.html)

Seibel: Though your job now doesn’t entail a lot of programming you still write programs for the essays on your web site. When you’re writing these little programs, how do you approach it?

Norvig: I think one of the most important things is being able to keep everything in your head at once. If you can do that you have a much better chance of being successful. That makes a small program easier. For a bigger program, you need extra tools to be able to handle that. It’s also important to know what you’re doing. When I wrote my Sudoku Solver, some bloggers commented on that.

They said, “Look at the contrast—here’s Norvig’s Sudoku thing and then there’s this other guy, whose name I’ve forgotten, one of these test-driven design gurus. He starts off and he says, “Well, I’m going to do Sudoku and I’m going to have this class and first thing I’m going to do is write a bunch of tests.” But then he never got anywhere. He had five different blog posts and in each one he wrote a little bit more and wrote lots of tests but he never got anything working because he didn’t know how to solve the problem. I actually knew—from AI—that, well, there’s this field of constraint propagation—I know how that works. There’s this field of recursive search—I know how that works. And I could see, right from the start, you put these two together, and you could solve this Sudoku thing. He didn’t know that so he was sort of blundering in the dark even though all his code “worked” because he had all these test cases.

Then bloggers were arguing back and forth about what this means. I don’t think it means much of anything—I think test-driven design is great. I do that a lot more than I used to do. But you can test all you want and if you don’t know how to approach the problem, you’re not going to get a solution.

Seibel: So then the question is, how should he have known that? Should he have gone and gotten a PhD and specialized in artificial intelligence? You can’t know every algorithm. These days you have Google, but finding the right approach to a problem is a little different than finding a web framework.

Norvig: How do you know what you don’t know?
Seibel: Exactly.

Norvig: So I guess it’s two parts. One is to recognize that maybe there is a known solution to this. You could say, “Well, nobody could possibly know how to do this, so just exploring randomly is as good as everything else.” That’s one possibility. The other possibility is, “Well, probably somebody does know how to do this. I just don’t know what the words are for it, so I have to discover those.” I guess that’s partly just intuition and saying, “It seems like the kind of thing that should be in the body of knowledge from AI.” And then you have to figure out, how do I find it? And probably he could’ve done a search on Sudoku and found it that way. Maybe he thought that was cheating. I don’t know.
Seibel: So let’s say that is cheating—say you were the first person ever to try and solve Sudoku. The techniques that you ended up using would still have been out there waiting to be applied.

Norvig: Let’s say I wanted to solve some problem in biology. I wouldn’t know what the best algorithms were for doing gene sequencing or whatever. But I’d have a pretty good idea that there were such algorithms. Then I could start looking around. At another level, some of these things are pretty fundamental—if you don’t know what dynamic programming is, then you’re at a severe disadvantage. It’s going to come up time and time again. If you don’t know this idea of search in general—that you can make a choice and backtrack when you don’t need it. These are all ideas from the ’60s. It was only a few years into programming that people discovered these things. It seems like that’s the type of thing that everyone should know. Some things that were discovered last year, not everybody should know.

Seibel: So should programmers go back and read all the old papers?
Norvig: No, because there are lots of false starts and lots of mergers where two different fields develop completely different technology and terminology, and then they discover they were really doing the same thing. I think you’d rather have a story from the modern point of view rather than have to follow all the steps. But you should have them. I don’t know what the best books are for that since I picked it up the hard way, piecemeal."

@ankurkaushal
Copy link
Author

@sebmck I see. I am in Canada though & I have been lucky enough to be in a company where having a degree wasn't so important.

@robwormald You're right, we are indeed lucky to be in a age like that. I would certainly look into those courses, may be after all I might not have to think about going back to university. :)

@gaearon Then I should probably start keeping a notepad or something to keep track of things I don't know, that might be good start. Thanks for your kind words Dan.

@ghost
Copy link

ghost commented Sep 22, 2015

The only reason I go to college is so that I can get a U.S. work visa.

@jhorneman
Copy link

@gaearon While I cannot quibble with the principle, I do note that Norvig doesn't explain HOW to build a map of everything one doesn't know.

@suederade
Copy link

+1 for not going into debt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants