What is a good college for computer programming?

Is it better to go to college for Computer Science to become a programmer or should you go for what you like and is easy and learn programming on your own?

  • Recently I have been hearing that the best thing for a programmer to do is to go to college to get a degree (the most recent was this blog post http://dave.is/college.html), but only for the degrees sake. People are saying for students to choose a degree that is easy and fun so that you can spend the bulk of your time learning on your own. Is this a good idea? What do startups who are hiring think of people who do this? Does it make a difference if the student is going to a good school (e.g., , , ) or some random school that doesn't have a name? I am looking at going to college in 1 year. I will be going to an OK state school nearby and am trying to decide if it would be better for me to study there and go all out getting a degree or to study some subject that will be easy and try for as many easy classes as possible so I can continue learning programming on my own. I currently know web development (which I have learned over the past year) and am currently in the process of starting a (I am starting to let people into a private beta over the next couple days). Really what I want to do is drop out of school and just go completely into self-learning and starting startups, but I know that if I ever need to get a job I need to have that piece of paper (degree) from a college.

  • Answer:

    I don't think Dave's advice is very good. The tl;dr is that, if your goal is to become the best software engineer you can be, I think you should go to the best CS program you can get into and afford. As a distant second, just skip college. Details Let's start with where I agree with Dave. He is correct that degrees matter far less for software engineers than pretty much any other knowledge field. If you can prove you're legit (ace the algorithm questions and have large/interesting projects to show off), you can get a job pretty easily without a degree. He is also correct that just earning a CS degree won't make you a top notch programmer. Many people who are not great software engineers have CS degrees and many great software engineers do not. Why, despite these facts, do I think it is worth going to college? There are four reasons. You don't just learn from classes and textbooks. Having really, really smart peers interested in the same areas as you is an order of magnitude more important than class. You can find this at the right startup, but it's pretty difficult. It's a much more solid bet that you'll find a dozen people who will bang their heads against problems with you, hack with you, push you to explore new spaces, and hopefully start companies with you one day in college. You will become a better programmer at the right school. I said earlier that just earning a CS degree will not make you a great software engineer... but that doesn't mean it can't help. Sure, there are a lot of departments where the CS department is basically an offshoot of the Math department and you will barely write any interesting code. But there are also a lot of departments, where you will write big, hairy pieces of software that will test your ability to design and think about computer systems. That can include operating systems, compilers, etc., but it can also include big web applications or mobile applications, which you may be more interested in. The "theoretical" stuff matters, in a very practical sense. You might pick up Rails or SQL while playing around on your own, but it's the rare self-styled hacker who really delves into algorithms and linear algebra. The thing is, though, that thinking about how the performance of your system scales with input size (Big-O notation) and how to reframe your problem as a composition of well known problems in computer science with well known, efficient solutions is the kind of thing that you do every day while managing even the simplest real code base. And that cool trick you want to try with machine learning? Yeah, I know someone already implemented all the algorithms in your language of choice, but it's damn near impossible to figure out why you're not getting the results you want without a solid background in statistics and linear algebra [or, sometimes even when you have them... :)]. A good school will force you to cover this material. Don't underestimate the psychological factors. There are some people who are truly motivated enough to self learn anything and to do it well. They are massive outliers. The vast majority of people will study much more effectively with the framework of classes with assignments and grades. Watching videos from MIT's OCW or Stanford's equivalent, or whatever and reading textbooks and hanging out with smart people in your area and participating in open source projects can absolutely get you there. But you have to truly know that you're the kind of person who can get up every day, maybe go to work, and then sit down afterwards to a self-directed, self-disciplined, and thorough study of a field. If you look at the points above, and especially the first three, it's clear that the school you go to really matters. It's important to note that this has nothing to do with the name on your degree and many of the best schools won't even sound impressive to someone outside the CS industry. UIUC? Wisconsin? Washington? UT? These are all state schools with top 10 CS programs. And if what you love to do is write code, some of these schools are more focused on that than others. MIT seems to be more focused on CS theory (and Caltech way more focused) than Stanford, Berkeley, UIUC, or CMU, which have great reputations for practical training. State schools are relatively affordable, non-state schools can mostly offer you significant financial aid, and you can pay off the debt either way if you're frugal. It doesn't make sense to complain that these colleges are options for elites, because if you're truly world-class enough to self-learn and then compete with the best in the job market, you should have a real shot to get in to some subset of these schools. However, if none of the reasons above compel you to enter a strong CS program, then don't waste your time at school for the sake of a degree (especially a non-CS degree)! No one gives a shit. Just go out there, study hard on your own, and write a lot of code across a lot of projects. And note that none of my advice precludes dropping out of school once you've spent some time there. You can get a lot of the benefits described above without graduating.

Ravi Sankar at Quora Visit the source

Was this solution helpful to you?

Other answers

Background, I like talking about myself:So I was 13 years old when I started programming as a hobby. This left me with 3 years in school during which time I learned enough to make very crappy clone of Super Mario Bros.Then I went to vocational school where first year I learned about car mechanics, metalworking (lathe, boring mill, welding…), automation (hydraulics and pneumatics), electronics, …etc. Second year I only learned about electronics/computer electronics. Last year included programming (C) in which I surpassed our teacher in so many levels he hated me for being around pointing all the mistakes he was doing (missing semicolon, all the time… that kind of mistakes.)By the end of vocational school I was assigned to assist local civil engineering government company and due to my skills in programming I ended up building application for them which automated the process of weighing ground samples by rock sizes and inject that data to commercial analysis framework.Then I went to learn about computer technology (back in the days it was called more like that, its current equivalent is computer science) which was about math, electronics, physics and little programming (where I still surpassed the teacher but who was confident enough to let me stay out of the classes and only attend exams.)All the while I was programming as a hobby.Halfway trough studying computer technology, I had to attend mandatory military service and after military service local power plant offered me a job in their automation renewal project to help create a database&application to type in all their data (which was in a mountain of archived papers), and help with digitalization of all their PI- and electric schematics. It was supposed to be just a summer job so I could continue computer tech studies, but they got me convinced to stay for few years.Becoming a programmer happened to me without studies. Studies happened to me, and probably did give me lot of that quiet knowledge I do not really know where it came from.Thinking about the decision to stop computer tech studies (I could have became computer engineer if I continued) seems like it was a mistake because the automation job at that power plant is not really that much worth under my belt, but finishing the studies would be.The answer:These years programming I have learned that going for easy is not often the best thing to do. When it comes to programming solutions or to life solutions, choosing something simply for how easy it seems is very bad approach. There is plenty of studies about this, googling something like technical debt gives a hint to how choosing the just-easy solution can manifest in the future.So what IF instead you would continue working on your own project (and learning programming) while picking the study path you want regardless how difficult it seems. If you seek to become good programmer you need to get comfortable facing also the difficult avenues.Or you choose other avenue, easy or not.

Janne Papula

If your'e going to study programming on your own, you'd better not go to college at all. If you still want to go for other reasons (friends, parties, sex), I recommend the CS degree. Sure, it'll leave less time for fun but complement your programming studies well. CS also has great intellectual and philosophical value, I believe the courses in foundations of math are the pinnacle of academic studies. Your brain will work in the class and at home. Nevertheless college is a once in a lifetime chance for socially acceptable indulgence, where you can party every day and night. If you seek to maximize this aspect then by all means go for the dumb degree. Just before you do, go and sit in some classes. I considered doing just that and I found the lectures intolerable, they recite stuff over and over until the frequency of really stupid questions drops to less than 0.5/min. When your'e in a room with a median SAT half as yours, it certainly feels so. Finally, I don't know which colleges your'e considering and I realize not many have this special feature, but my college's CS dept. was 50-50 boys/girls and the girls were freaking awesome, intelligent and intellectual, sexy as hell. So for me the choice was easy, CS for both intellect and sex.

Anonymous

In other countries, students get a year off before college in order to figure things out. I don't think it's unreasonable for you to do the same thing.

Cory Diamand

Very very bad idea.  Unless your school's computer science program sucks in which case the degree isnt going to do you much good anyway. You can learn to be a "programmer" on your own or at a trade school, but a computer science degree will teach you to be an engineer. The difference is this: a programmer is like a mechanic.  a software engineer is like a car designer (who are mechanical engineers).  You tell me which is more valuable.and who will get the job first. Edit:  Someone else mentioned this which is also true.  If you don't, at the base of it. like programming, its a bad idea to try to make a career of it.  You wont be as good as the people who live and breathe it, and you will waste your life doing something you don't like.

Jeff Kesselman

If you're going to go to school just for the degree and take "what's easy", it's going to show when you apply for jobs and don't have the depth of knowledge that other applicants have.  Don't waste your money going after "easy". That said, if there is something other than programming that you're very interested in and passionate about, study that.  Write software that applies to that field.  Write programs that help you study.  You'll be that much more valuable when looking for jobs because you'll have programming experience and in depth knowledge of an application domain.

Greg Chapman

If you like something a lot more than CS, I would go with that, but that's too obvious.  Here is some more subtle and specific advice that I learned in my own job search. It really helps to have a bachelors in engineering if you want to find a software job - it doesn't have to be CS, just any engineering discipline. Employers want to know that you are engineering oriented even if you don't have a CS degree perse. I know that, because job postings say they want you to have "some engineering degree". So that translates to: you don't have to go to school in CS necessarily if you want to become a developer, but it will help a lot to have an engineering degree. And not just landing your first job out of school. It will help for your 2nd, 3rd and 4th, etc.

Alex Mills

Getting a degree in computer science does not preempt you from becoming a "hacker". Learn to program. A formal education is a great way to do that and will give you far more adaptability in almost any programming environment versus the 100% self taught "hacker" who might be able to do a couple of things very well. Or take the major you want and take CS on the side. Some of the best engineers I know got great exposure to formal CS theory from "the core" without actually completing the major.

Michael Agnich

It’s better to go to college and learn for the same reasons it’s better to have a job in a big city than in a small town. You get more experiences per hour of effort invested. You will socialize with more people and come to understand better what people of your general capability know and don’t know.You simply will have a better understanding of what problems are out there to be solved when you are interacting with more programmers. Whereas when you sit at home or in the context of a small group, you can spend (waste) a lot of time building something that’s already built simply because you didn’t know it existed. You always run the risk of vastly overestimating or vastly underestimating your own talent when you stand far out of the mainstream. That’s not a good way to get started.So yes in general, I would recommend that you start in the largest organizations possible and get into smaller workplaces as your career moves forward.BUT. I would recommend that for anyone who isn’t 100% sure, and I mean if there was a 5% chance that you wouldn’t get in to college, you start to cry just thinking about it. If you’re not, basically deep into the process of working through your top 5 college choices, then I highly recommend that you get a crap job. Then get a second and third crap job, live with your parents until you can’t stand it, live with sloppy weed smoking roommates, and survive. Survive bad bosses in nowhere jobs, all the while learning all of your programming skills. Do this for two years, going to a community college part time.At this point, you will start to see lots of jobs that you’re absolutely sure you can do, except they want you to have a college degree. You will get your interview and you’ll start to get a taste of the work ethic in these companies and realize that the degree isn’t important. BUT you’ll also notice that some of the same crap bosses and sloppy people are working here that you deal with already. You would be surprised how many people’s careers get derailed into third rate companies but because they have a degree they feel lucky to have the job.So if you catch my drift I am telling you to get the best of both worlds. Work outside of the college degreed world until you can’t stand it any longer. It will happen when you see some dweeb younger than you driving the new BMW and he’s just a test engineer without a creative neuron in his head. Or maybe not. Maybe all you care about is making enough money for a good surfboard and flip flops.The IT industry is massive. You can really play it any way you like. I think if you do it for the love, you’ll really want to learn from the best and brightest teachers you can afford. It’s easier to meet them in college than in the workplace.

Michael David Cobb Bowen

Beside the diploma which is more valuable than a piece of paper as you put it, a CS degree would give you something much more important; structure. You'll have deadlines, projects, group collaboration, lessons and feedback from people that have MSc/Doctorates, wide range of classes to choose etc. More importantly, whether you go to college or not, you need to learn on your own anyways.

Kürşat Bitlislioğlu

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.