This may be in the wrong spot because it's not a technical question, so bear with me.
I'm not a mod, but I find this pretty on-topic. There have been a number of threads relating to pursuing programming from academic and professional standpoints.
A little back ground... I'm currently a junior in college majoring in computer science.
I just got done with a assignment written in C (C99) and basically I haven't gotten a lot of sleep the past couple days and my brain feels like mush, So here I am on catching up on MacRumors.....
May I ask where you're studying? I still have an interest in what goes on in academia 5 years out, so it's just out of curiosity that I ask.
Assuming you're on a 2 long-term per year schedule, you're probably finishing out your junior year this month or next. If your experience is anything like mine, the last year has been filled with these sorts of programming jags. You've probably had to because you do 10-20% of the project over the first week or so thinking you've done 40-50%, then end up doing the last 80-90% in the last few days. A lot of us do this. Hopefully you are still young and you can do this without much in terms of ill effects. =) Your senior year isn't going to be better/easier/less work. Quite the contrary. So brace yourself, and try to institute some serious time management next year.
My last semester I had OS and compilers. Both were very heavy on programming. I did a poor job of time management, and always worked on compilers projects first. I got As on the tests in both, but terrible grades on the OS projects, because they suffered from lack of time spent because I prioritized the compilers projects. I got an A in compilers and barely squeaked a C in OS (anything less and I would have failed, and hence not graduated).
If you're in the US, this should be a long weekend for you, so hopefully you can get some sleep and recover a bit before going back into the fray. Hopefully you don't have new projects you should be working on, but chances are you do.
I was wondering what the opinions were from people who are working within the industry (meaning programmers), what is life like after college?
Not as good as life before and during university. There are a lot of responsibilities (I worked during school, but it is not the same at all). You don't have access to the wealth and concentration of smart people like you do during uni. I work with some brilliant people, but there's maybe 6-10 amongst a company of ~100 that I can hold an intelligent technical discussion with. At uni there were some students that were there because they thought they could make a buck programming, but they were easy to spot. Otherwise my peers in (and out) of the CS program were smart and driven, and were great to spend time talking to, whether or not it was about what we were studying.
On top of that, having access to professors that were world-class in their field and grad students that were acting as TAs that had a real passion for what they did was great. I wish that I had taken advantage of it more. I wish I had spent more time during profs' office hours just talking to them. That was one downfall of working my way through school, there just wasn't as much time to do things like that. In any event... you still have a year left... if professors or outside folk give talks, go. If a prof has office hours, go. When you graduate, you'll suddenly find that you don't have as ready access to people that are doing cutting edge research in AI/Systems Design/OS/etc. Don't stick to the CS department, either. Hopefully you had to take a few EE classes, so you might have access to some of them. Hopefully you had to take some philosophy/ethics classes, so you have access to some folks in there. I had some of the best discussions/debates of my academic career not in a CS course, but in a Computer Ethics course in the Philosophy department.
That being said, I still program all the time, and still devote time to reading about new technologies, learning about new languages and language design, etc. and I am still passionate about it, so it's not all bad.
Do you find yourself with strict deadlines and cramming to get something done?
Yes. I don't think businesses could survive without deadlines. Code is very rarely done in the eyes of the programmer. It could always be refined. It could always be re-done with some cool, new, whiz-bang technology. It could always use more testing and more bug-fixing. But if it was in the hands of the programmer, it would never ship, or would ship 10 years later than competitors. Are some of the deadlines unreasonable and perhaps borderline insane? Absolutely. For the better part of last summer, myself and half a dozen of my colleagues (from development, product management, QA, etc.) were basically locked in a room to get a particular phase of a project completed due to looming deadlines. It wasn't fun, it wasn't easy, it was not good for morale, but we got things done. That is not normal working conditions, though, and I would not stay long if that was a protracted situation.
How did your college experience compare to your real world job?
Dissimilar in almost every way. I didn't learn to program in school at all. I learned how to solve problems, think about things, break things down, etc. I learned enough of a few languages to get projects done. I did not really learn how to program and debug. There were not "how to write C" or "how to write Java", etc. courses. It was expected that if a project had to be done in Java, if you didn't know it you learned it. If it was haskell, learn it. There would be resources provided, and occasionally a TA would have mercy and hold some sessions outside of class reviewing a language if a large contingent of the class was unfamiliar with it. A professor never said to me "this is how you write a for loop" or "this is the criteria you should use to decide if a member variable should be private".
When i graduated I was a terrible programmer. I got a job as a software analyst, which where I work meant "you fix the code that's broken in production". I had to quickly teach myself C (I knew some, but not a lot), Fortran, Perl, SQL, Javascript, bash scripting, etc. Not once have I wished that I was taught these things at university, though. It seems like a huge waste of time. Understanding the concepts, and spending time exploring that, and how to write algorithms, implement existing algorithms, optimizing for execution time vs. memory, etc. was a much better way to spend the short time I had there. Learning a programming language is figuring out the syntax. That should not be that tough. Learning a particular API and the "zen" of it might take a bit more, but hopefully the author(s) documented it well enough that you can figure it out.
Another thing you learn quickly in industry is that all of the things you think people should do is not at all what you'll run into. A dirty secret no one really tells you is that you're going to adopt old code written by fools that had no business writing code. Whether or not they have a CS degree is irrelevant. They seem to have an active hatred for those that will have to maintain the code. You will have to develop skills for reading, understanding, and debugging code that is not your own, and markedly terrible. This is also a crash course in what not to do. Hopefully you will see things that make your eyes bleed and it will leave an impression on you so you will never repeat such things.
Something else you'll find yourself doing is cursing the author of a chunk of code to no end. "How could they be so stupid? I'm going to look through the source control logs, and find the person that wrote this and beat them severely about the head. A-ha, here's the revision! Now who committed this?". You will find that it was you. If you do not have this experience, chances are your skills are not progressing and there is a problem. If I ever look at code I wrote 2 years ago and don't think I could write it better now, it was either completely trivial or I have been doing something wrong for the last 2 years, because my skills are stagnating or declining.
Not that it's going to make me change my major because I love programming. I just want to know what is like out in the real world....
That is great to hear. If you did not, you'd have a painful career to look forward to. I've worked with people who love programming, and would do it "anyway" if it wasn't their job, and I've worked with "do it to put food on the table" types that revile programming. The latter are miserable all the time that they are programming, and would rather be in meetings, etc. than actually at a machine writing code. It is not a good existence, and that kind of attitude is detrimental to everyone on a team. I'm not saying that everyone that works a programming job must constantly be writing code outside of the office, etc. but being passionate about whatever job you do goes a long way.
Keep at it. Get sleep when you have the chance (not at the cost of being an anti-social hermit, but strike a balance).
Good luck.
-Lee
P.S. It took me 1.5 years to be promoted from Software Analyst to a Support Engineer position, and another year to be moved to development as a Software Engineer, and another year or so to be made the lead architect for one of our products. I mention this because I don't want you to be discouraged by thinking that you'll be stuck strictly debugging other people's code forever. There's still plenty of that in development, but there's plenty of new code to be written, architectural design decisions to make and implement, etc. too.