Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

I'm going through a rough time. I'm a CS student at UIUC, which I hear is one of the top schools for CS. I love computers and programming. I've been pretty much doing it my whole life. I'm a freshmen now (junior in actuality, but I was premed before I switched to CS-long story). I'm finding the cirriculum pretty hard and challenging, but of course this way you learn so much. Due to the challenging nature of this program, especially at this school, I dont always get the top scores, while others seem to have no problem. I get discouraged quickly, and say to myself something like "whatever, I know even if I dont finish this program, I will find a way to make it on my own". Of course, I only say this to make myself feel better about my situation. But I really want to graduate from here and get this degree, but I find myself losing more and more motivation by the day. For those of you that graduated with a CS degree, any tips on how to get through this? Also, what are the benefits of a CS degree? I heard that I wont even use half the stuff I learn here. Why cant I just learn programming on my own by reading books. Most companies love experience.

What does it come down to at the end? Of course I would love having this degree, but getting through it is gonna be a challenge.

share|improve this question

closed as off-topic by MichaelT, GlenH7, jwenting, Bart van Ingen Schenau, gnat May 31 '14 at 10:34

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, GlenH7, jwenting, Bart van Ingen Schenau, gnat
If this question can be reworded to fit the rules in the help center, please edit the question.

If you want to stay in CS, finish your degree. period. – Casey Nov 13 '10 at 9:58
@Casey, agree!. – user1249 Nov 13 '10 at 14:28
I don't understand why one should exclude the other. – gablin Nov 13 '10 at 14:35
"I heard that I wont even use half the stuff I learn here.": False: I find most of the stuff I learnt at university extremely useful. "Most companies love experience.": These are the low-level companies who look for robots who are able to glue together pre-made libraries. Other companies will also value your education and your ability to find original solutions. For this, you need a solid education. Do not give up. – Giorgio May 30 '14 at 20:04
Regarding education versus experience (theory versus practice) I like this quote very much: "He who loves practice without theory is like the sailor who boards ship without a rudder and compass and never knows where he may cast." Leonardo da Vinci – Giorgio May 30 '14 at 20:07

14 Answers 14

up vote 26 down vote accepted

Finish your degree. If you don't, you might end up regretting it for the rest of your life. Some important things to remember:

  • Whether right or wrong, most companies won't even look at a resume if you haven't graduated.
  • The "real world" is hard. Dropping out isn't an option. Learn to finish what you started, even if it's hard.
  • Programming is just one small part of what you should learn in computer science.
  • Classwork is just one small part of what you should learn in college.
share|improve this answer
+1 for finishing. – user1249 Nov 13 '10 at 14:25
I find it quite different in real life. I've worked at a number of programming companies of varying sizes, and when they see an impressive skill set with impressive experience and you leave out the education part entirely, they normally don't ask. Just my experience. – Brandon Wamboldt Nov 14 '10 at 4:26
After 10 years of experience, yes, this probably happens. But for a graduate, there's no experience built up yet. – JBRWilkinson Nov 15 '10 at 23:50

Education = learning not to fall in a hole.
Experience = falling in a hole and learning not to fall in a hole again.

The result is the same; if you can manage the first approach usually hurts less. But the second one definitely remains in the memory longer. If you survive, there is no replacement for experience.

If not, well, ... you'll probably ease up somebody elses fall.

In short, of course it's a challenge. Otherwise, there would be no point to it, if everyone would finish it. Don't worry ... just like you don't put much thought into problems that bothered you in high school (on which you did put a lot of thought back then), this also is gonna pass. Just be patient, don't give up, and learn what you can on your way through.

If nothing else, you will learn a specific way of thinking, and that is probably the most important thing.

share|improve this answer
Education = Learning not to fall in a hole that rarely occurs. Experience = Learning what holes are out there and how to avoid falling in them. Occasionally you learn by first falling in them though :( – Brandon Wamboldt Nov 14 '10 at 4:27
@Rogue Coder - :)) – Rook Nov 14 '10 at 16:14

I almost dropped out of college (but don't do that!) and one of my motivations was how much I was learning at my job vs. the amount I was learning at school. The "real world" is so much better than school: I get to learn (usually), have fun (when I'm learning), and get paid (always!)

If it's what you love, do it on the side. You'll get better faster. Have fun: learn to write an Android app for your phone, or something that interests you. On your resume, that'll stand out more than some other guy's 3.9 GPA.

share|improve this answer

The number one thing that a degree is going to get you is opportunity. What I mean by that is that it is very hard to even be considered for an interview for a programmer position without a degree, especially with no real world experience. Once your degree affords you the opportunity to land a real world position, then the sky is the limit on what you are able to do with that opportunity on your own.

Also, while you may not get "real world" experience programming wise in a degree program, fighting through the hard times and doubt, and overcoming those obastacles that you are experiencing now absolutely will benefit you in your future in the "real world".

share|improve this answer

You have heard right. The CS program at UIUC is easily one of the best in the country. Programs like that attract some of the best-prepared students in the world. You should not be ashamed of receiving sub-par grades. You have to understand that a lot of the people you're competing against were probably programming when they were 7 and prepared for years with the intention of studying computer science in college. If that doesn't sound like you, it's little wonder you find the ease with which they complete assignments mystifying. They're not just using raw intelligence to do it. They're using experience and knowledge you may be missing.

It sounds to me like you're accustomed to getting the best scores in class. Maybe in high school you did. That may be unrealistic to expect over the next few semesters. You'll be catching up. If I were you, I'd try to get to know some professors and department staff. Talk to your adviser. That's what he/she is there for. Be frank with them about your situation, but impress them with your determination to become a more successful student. They may be able to help you find solutions.

Making friends among the other students is also very important. If you hang out with your fellow CS students socially, you may get a clearer picture of how they get all their work and studying done. Do they work in groups? Are there study sessions that they attend but you don't?

Being behind in coursework can be very very tough, especially when you're used to doing well. I know because I've been there. It's hard to get caught up, but it can be done.

share|improve this answer
And UIUC people have the chance to study under people like Ralph Johnson. That's worth a lot. – Frank Shearar Nov 13 '10 at 18:10
+1 for the networking/social component. The importance of having peers to study with/hang out with at university cannot be overstated. – BuschnicK Nov 21 '10 at 18:53

There are many programming job for which a CS degree is overkill. There are also many jobs for which it is the most basic preparation. Which kind of job do you want? Do you think you'd be happier plugging away writing the monthly reports for Widgets-Are-Us, or would you like to be at Google trying to eek out another milliseconds in the search response time? Of course given these tough economic times, even the Widgets-Are-Us job may require a CS degree just to thin the resume pile.

Can you learn computer science without taking a degree? Some people can. David Cutler the architect of VMS and NT has no college degree and he knows a lot about computer science. Most of us aren't as talented or disciplined as David Cutler, in which case the degree program can be a big help. I suspect most programmers could get through the 1st year computer science classes on their own, but getting through the material in the upper division courses is a lot easier with a knowledgeable tutor.

Try to do well in the classes but don't flip out because you didn't get an A+. Except for your first job, nobody is going to care about your grades, and they may not care even then. The vital thing is to get to know your professors, see if you can get involved in a research project, and do your best to get internships or summer work at interesting software companies.

share|improve this answer

While you aren't getting the top grades, are you at least doing reasonably well in terms of passing your courses or are you barely getting by in your courses? I know where I went to university a 50% was a pass and there was a CS course where I did get 50% and my average in my majors had to be over 65% for me to stay in my program. Sometimes it is when things don't work out as you plan that you learn and grow the most. I remember starting in a co-op program but having to drop it when I didn't get a successful work term in my first 3 attempts. It was a great opportunity to grow but at the time, it was like a huge failure for me as this was one of the few times where I wanted something and didn't come close to getting it. I also had the rather humbling experience of going from near the top of the class to near the bottom which was an interesting way to experience the extremes of a class in a sense.

The benefits of a CS degree is the exposure to various materials. I doubt I'd know as much as about Numerical Analysis or Computational Complexity if not for my CS courses in the subject. Another aspect is the honing of problem solving skills and developing this by taking various Math courses. I also took some first year Science courses and language courses that rounded me out in some ways that has been quite useful. Learning another human language made it interesting to see how translation can be a hard topic and learning a non-Latin alphabet was quite educational in letting me see how hard it can be to switch languages in some cases. Lastly, your university experience may give you connections that get you far in the world as I know my first out of university job was through the career services department at my school.

In the end it comes down to a bit of how bad do you want this, how good are you at passing courses and understanding how you best work is it through learning on your own, teaching something to someone else, learning with others around, or something else? You have to know how you absorb information to make it as a programming and some formal material isn't necessarily a bad things as I do remember learning the Software Development Life Cycle, testing and a few other things in university that were rather useful in various jobs I've held.

share|improve this answer

Sound's like your going through a rough patch at the moment, but I strongly suggest you hang in there and complete the course.

Yes, you can still get a job and progress in the profession without a degree. However, a good degree from a well known univeristy/college should help in getting your first position in a good company. Big well known company names on your CV can more of a door opener and faster career progression if you want it than a small local 10 man operation, irrespective of the knowledge you gain. A sad but often true fact of life.

Then as time goes on, the degree will matter less as your experience takes over.

Finally, don't beat yourself up over not being a straight A student. life is more of a marathon than a sprint. you can still do great things, even if it might take you longer to get there.

share|improve this answer

Answer From a Non-Grad

I spent 20 years in the military, went to college at night and stopped (long story). I have a few CS classes under my belt and I was formally trained by the military in COBOL and a couple other main-frame languages.

You will definitely have many more opportunities with a degree, stay with it.

Education = Learning about building blocks
Experience = Creating or Fixing things that were built with those blocks
Wisdom = Knowing what blocks to use and why to use them

Don't get so hung up with grades. I once had a Marine that worked for me who could type 80wpm and had an IQ in the clouds but he couldn't explain beans. He always used the most complex solutions.

Ask yourself these types of questions:

  • Where do you want to be five years from now?
  • What do you want to be when you grow up?

Having a 3.9 answer to these questions is much more important than grades.

share|improve this answer

Minus the changing degrees in midstream I was you (more or less) about 6 years ago. I enlisted in the military for a stint after high school and then worked for a few years after I got out. When I started college I found the early programming classes to be fairly easy, although I was never an 'A' student but I understood the material. There were many classes that I struggled just to get a 'C' in, typically the assignments that I struggled with (as compared to my peers) tended to be programming assignments that made use of techniques (and language features) I had never seen/heard of. I can't speak for where you are but how to do things in the language of choice was rarely explained in detail, we were expected to figure it out.

All of that being said, my first job out of college was offered to me in part because I had spent quite a bit of time in college porting my windows code to work on Solaris (g++) because I never seemed to understand which header files where part of the standard set. The language was ADA, one I had never seen or heard of. Because of my grounding in language constructs (etc) it didn't take long for me to pick it up and produce project code (although it wasn't the best). Within weeks I was mentoring my colleague in development concepts because she didn't have the background (shouldn't of had the job either, but that's a different story) to understand some of the things that were happening. (For example she didn't understand why she couldn't use a global value to pass a value to a different process. [and oh where to start with that one....])

At this point I wouldn't be where I am if I didn't have that degree. Currently I am one of the senior developer's out of my office, I spend a fair amount of my time working with other projects on developing their designs. I am one of the few in my office who seems to investigate and apply new technologies, techniques, and other standard practices (yes, the company I work for does a lot of Gov. work). Not all of this is directly related to having a CS degree, however it did give me the foundation to not only get my foot in the door but to develop the skills I've attained to this point.

If this is what you want to do, I would stick with it and gut it out. I think that the potential rewards are worth it.

share|improve this answer

As a simple response, i would say, do not let it discourage you! It means there may be a lot of learning ahead, but what you do currently know, can assist in your learning (and hopefully excelling) in your spare time.

Also, when a change arrises,try to find the main differences ASAP so you can adjust to the new things quickly.

Good luck!

share|improve this answer

I'm not going to argue for/against a degree. Obviously there are great programmers out here in both camps.

Motivation may be your problem. You suggested some of the course content may not be relevant.

You claim you can pick up a book and learn programming, but unless you are having other personal/financial issues, now is the most opportune time to learn programming and you aren't cutting the grades. Wait until you go out into the real world and are expected to maintain systems in one language, learn another for the new products, and have a customer piss in your ear about a bug in a line of code you've never seen before. I doubt your boss will be as nice as your professors. And even if he/she is, their boss won't. Any job that is easier than your current program you won't enjoy any way.

Work on an open source project. Pick up some contract work or try an internship. True confidence is built on a foundation of increasingly difficult accomplishments. So far, you haven't given any indication that you can make it. Keep your butt in school. Pick the most relevant class in your curriculum and challenge yourself to get the top grade.

share|improve this answer

Not to be trite, but making it without a degree is a lot harder than making it with one. If you can't cut it in your degree program, you are definitely not likely to cut it in the real world with no credentials.

Finish your degree, in CS or some other field.

share|improve this answer

Things that are difficult to attain are very rewarding when you attain them. Stick with it and find a way to drawn on the strength that attaining your degree will bring you.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.