You (and some others) may not like what I'm about to say, but you asked for it, so here goes...
In all the years I've been in technology, it has typically taken me about 28 seconds to determine if another person was "fluent" more than one or two levels below the surface.
Those that were were almost always programmers, engineers, or technicians at one time or another. Everyone else was at best managers and business people, or at worst, administrators or posers.
I know some might disagree with me, but a Computer Science major who doesn't want to code is like a dental student who doesn't want to look into anyone's mouth.
To get good in technology, and I mean really good, you must get under the hood, deeply and often. The best and most logical way to do this is by programming. And you will have to do this intensely and for long hours, so you have to love it.
The single biggest difference I've seen between great programmers and everyone else is a pure love for what they do. Intelligence matters, work habits matter, ability to work with other people matters, but make no mistake about it, there is no substitute for passion.
Great technologists love what they do so much, they can't wait to get back to it. They have to check on their work after dinner. They have to review their notes at bed time. They are often the first in the office in the morning and just as often the last to leave. They read and learn voraciously and can't wait to apply their skills to new problems. They're so busy doing what they love, they don't even think of it as "working 9 to 5".
By your own description, you do not sound like this. So do yourself (and the rest of us) a favor and find something you love and major in that. If, on the other hand, it's too late or it doesn't make sense to switch majors, then go ahead and finish your CS major, but please find a direction to follow that puts you in work you love. Be forewarned, though. Unless you're a programmer first, you probably won't make a very good sales engineer or project manager. You may want to consider sales or even (dare I say) proceeding on to business school for your MBA.
I majored in Physics in undergrad. When I was taking the physics GRE for grad school, it dawned on me about halfway through the test that I didn't want to do physics anymore (likewise it also dawned on me that I wasn't very good at physics either).
Was I in the wrong major? I'm not so sure. I've thought about it a lot. Physics, while not my ultimate passion, was responsible for teaching me a way to think about difficult problems. It "broke me in" so to say, and from then on, everything else became "well, atleast its not physics". Physics taught me to be immensely skeptical but curious. It was inspiring and thought-provoking. Satisfaction didn't come by answering a few questions quickly, but at the end of a 20-hour problem set that I sat with the entire week.
So while I agree with your post (and up-voted you for writing it), I'm not sure to what degree I agree. Because I feel like everyone should have the opportunity to explore many different subjects and find out through the course of learning them what their true passion is. Perhaps the OP will be really thankful in the future for having a CS background which afforded him opportunities he would have otherwise not had.
everyone should have the opportunity to explore many different subjects
Well, yeah. That's what this whole exchange is about. The original poster has explored CS. (S)he is done now (and knows it, otherwise this post wouldn't be here.)
Time to explore another subject! The great thing about figuring this out during junior year is that you actually have a chance to do so before you graduate, which will literally save you a lot of time and money. I'd suggest studying physics ;) [1] (Which is indeed an excellent thing to understand, even if the actual job of a physics researcher isn't for everyone.)
---
[1] Though not very seriously. From what little I can guess about OP's tastes, some economics, accounting, law, or even design classes might be more fun.
"The single biggest difference I've seen between great programmers and everyone else is a pure love for what they do."
This applies to everything, whether it's programming or gardening or sales. You can only be great at something if you love doing it. Keep trying different things until you find what you love doing. Once you find that, everything else will fall into place.
I am not a fan of coding, but love what I have learned as a CS major. I am much more interested in cultivating my understanding of how computers really work. Learning about coding was interesting, but it was only a tool for me, a game, another language, or system of representation necessary to develop a higher level of understanding. I would liken it to learning languages to study literature.
I learned how to do calculus and linear algebra by hand, and use it all the time, but i use calculators and matlab to accomplish this.
I love having learned about fascinating topics, such as networking protocols, functional programming and the lambda calculus, security (my favorite), concurrency, software engineering (from design patterns to agile development / project management to versioning systems (which I apply to other aspects of my life now)), all the way down to assembly language, microcode, combinatory logic, boolean gates, flip flops, busses, and pipelines, etc that makes this all possible.)
I still don't love to code, but I know I want to work with computers for the rest of my life, and I'm pretty sure that studying Computer Science was the best use of my time at school.
Thanks for the feedback but the issue for me is not a desire to never touch code in my life again. I am very passionate about technology and coding too at times. Once in a while, I will get some crazy idea into my head and will sit in front of the computer coding at it non stop for nearly days on end. But all these times, my passion was towards the final product on what I wanted to make and not in the actual coding itself. For me "code" is just a tool for me to achieve what I want.
Also, the whole thing about not thinking of it as "working 9 to 5", I totally agree with you and I will point out that I am one of those people. The only difference is that I don't do that for my code but for my pet projects. I sleep with a moleskin book next to my bed for those times when I wake up in the middle of the night and need to jot down an idea.
edw519's post is based on the assumption that you are going to take on a programming job. If that is the case, you will probably burn out on programming and not really have the passion to be a great programmer.
However, there are tons of business people who have never done any programming and are still great business people. Imagine how great a business person you will be if you do know the technology.
A lot of business people go the business route and then are forced to do programming from time to time and they really write crap code and it breaks and it's horrible to maintain that stuff. Your code will be better than that.
I had this guy tell me one time, he was a business grad, he said, "Coding is easy, all people should take business courses and learn the programming on the job." But believe me, I had to fix that guy's code and integrate it into the big picture and it was total garbage. I suppose the Dunning-Kruger effect kept him from realizing how bad his code was.
Anyway, point being, I think if your passion is in the business side and you go through the ranks in school getting your CS degree, then you could be unstoppable in the tech world. If more CS grads had the business passion, they'd be better entrepreneurs.
I agree with your perspective except that for most in his situation any major is the wrong major. Very few know what they want to do with their life. You only find out by lots of exploration. This path extends well beyond college.
I haven't always loved to code and especially don't love tasks I'm told to do as opposed to ones I invent myself. But when I do get into it, I build great products. It comes and goes with me as I like to wear different hats from time to time.
When I graduated in CS with an M.Sc. I said to myself that I didn't see myself in a cubicle coding along all day. I'm also more outgoing than the average hacker so I wanted to work with people more than with machines. So I applied for all the "wrong" jobs. (My thesis was about usability so I applied for usability engineering positions, competing with psych graduates etc. while the industry was desparately looking for programmers with my background.)
It was good that I couldn't get the job I wanted, forcing me to take on a programming job. I became a project manager within three years and a product manager in a larger company within five years. I didn't program anymore at my day job during that time.
But I realized I did love programming so I started all kinds of side projects and kept up with technology even though it was not needed much for my job.
What I'm saying is, you may not have discovered it yet. Get a programming job and if you really do hate it, get promoted to some management position (it's often easier than you would suspect because most hackers don't want to do management). I know quite a few people who did that. They're doing a good job and they're happy not having to code anymore.
I had a lecturer in CS who didn't really code and would freely admit it. A LOT of what she lectured stuck and I've used it everyday in my programming jobs.
as mentioned before, only if he wants to be a programmer. Even if he eventually goes on to become a business person, I think being trained in CS will give him a far better perspective and trust from the programmers working for him.
Yes.
You (and some others) may not like what I'm about to say, but you asked for it, so here goes...
In all the years I've been in technology, it has typically taken me about 28 seconds to determine if another person was "fluent" more than one or two levels below the surface.
Those that were were almost always programmers, engineers, or technicians at one time or another. Everyone else was at best managers and business people, or at worst, administrators or posers.
I know some might disagree with me, but a Computer Science major who doesn't want to code is like a dental student who doesn't want to look into anyone's mouth.
To get good in technology, and I mean really good, you must get under the hood, deeply and often. The best and most logical way to do this is by programming. And you will have to do this intensely and for long hours, so you have to love it.
The single biggest difference I've seen between great programmers and everyone else is a pure love for what they do. Intelligence matters, work habits matter, ability to work with other people matters, but make no mistake about it, there is no substitute for passion.
Great technologists love what they do so much, they can't wait to get back to it. They have to check on their work after dinner. They have to review their notes at bed time. They are often the first in the office in the morning and just as often the last to leave. They read and learn voraciously and can't wait to apply their skills to new problems. They're so busy doing what they love, they don't even think of it as "working 9 to 5".
By your own description, you do not sound like this. So do yourself (and the rest of us) a favor and find something you love and major in that. If, on the other hand, it's too late or it doesn't make sense to switch majors, then go ahead and finish your CS major, but please find a direction to follow that puts you in work you love. Be forewarned, though. Unless you're a programmer first, you probably won't make a very good sales engineer or project manager. You may want to consider sales or even (dare I say) proceeding on to business school for your MBA.