How is the Computer Science Major Like


Recommended Posts

As a hiring manager for IT positions of all types, and an ex computer science (switched over to management info systems later on) major, here's what I can tell you...

First, if you become a programmer you have to love coding. You can learn to code without going to university (college) but you can't learn to program properly. Yes, there's a difference, and it always shows when I review a coder's work (no university) or a programmer's work. You'll find also, that proper university training may not teach you the latest and greatest languages -- often you're learning C or ASM or something, and you'll get a job programming .NET or Java.

What you learn in university is theory, logic, and application. You learn how to think of the WHOLE project, rather than just the block of code you're working on. You learn how to work on milestones, learn the proper meanings of beta, alpha, roadmaps, etc. I see lots of code monkeys out there making software, and you can always separate the good from the bad in terms of their training.

Granted, you can get some people who have gone through college and still be a 'coder' rather than a programmer. That's my job when I hire to figure them out before I give them the job :)

If you don't love logical problems (Google some Mensa questions if you are curious), then programming is going to suck. And if you want creative freedom well... then programming is going to be 'iffy' for you. It was that way for me. I personally like the ability to have freedom to design something the way *I* see fit, but unfortunately if you get a job the way you design software is going to be limited in many ways, mostly by a business decision from somebody higher than you. If you don't mind working towards it, you will eventually get a lead programmer or design position, and you can call the shots (like me!), but that's later down the road.

I started out as a systems admin, graduated to systems engineer, and then finally into a quasi SE/PM role like I am now. But I'll tell you this, I learned logic, I learned definitions and meanings, I learned how to stage things, I learned how to create and meet milestones, and I have applied that in my career. And any good systems person will know how to program at least a bit, for automation's sake.

Best of luck to you, and if you have any other questions please PM me and I'd be happy to help you out. I worked my way up through the ranks because people were willing to help me, and teach me -- and I'd be a real ass if I didn't offer the same to others who are working their way up and eager to do it now.

Cheers! :)

As a hiring manager for IT positions of all types, and an ex computer science (switched over to management info systems later on) major, here's what I can tell you...

First, if you become a programmer you have to love coding. You can learn to code without going to university (college) but you can't learn to program properly. Yes, there's a difference, and it always shows when I review a coder's work (no university) or a programmer's work. You'll find also, that proper university training may not teach you the latest and greatest languages -- often you're learning C or ASM or something, and you'll get a job programming .NET or Java.

What you learn in university is theory, logic, and application. You learn how to think of the WHOLE project, rather than just the block of code you're working on. You learn how to work on milestones, learn the proper meanings of beta, alpha, roadmaps, etc. I see lots of code monkeys out there making software, and you can always separate the good from the bad in terms of their training.

Granted, you can get some people who have gone through college and still be a 'coder' rather than a programmer. That's my job when I hire to figure them out before I give them the job :)

If you don't love logical problems (Google some Mensa questions if you are curious), then programming is going to suck. And if you want creative freedom well... then programming is going to be 'iffy' for you. It was that way for me. I personally like the ability to have freedom to design something the way *I* see fit, but unfortunately if you get a job the way you design software is going to be limited in many ways, mostly by a business decision from somebody higher than you. If you don't mind working towards it, you will eventually get a lead programmer or design position, and you can call the shots (like me!), but that's later down the road.

I started out as a systems admin, graduated to systems engineer, and then finally into a quasi SE/PM role like I am now. But I'll tell you this, I learned logic, I learned definitions and meanings, I learned how to stage things, I learned how to create and meet milestones, and I have applied that in my career. And any good systems person will know how to program at least a bit, for automation's sake.

Best of luck to you, and if you have any other questions please PM me and I'd be happy to help you out. I worked my way up through the ranks because people were willing to help me, and teach me -- and I'd be a real ass if I didn't offer the same to others who are working their way up and eager to do it now.

Cheers! :)

Wow Hercules thanks for the answer man, so the thing is that programmers basically have more control over the software creation process ?

Wow Hercules thanks for the answer man, so the thing is that programmers basically have more control over the software creation process ?

Programmers don't have control over the software creation process... that's the job of a project manager or lead programmer -- a role you can GET to by being a programmer to start. But it takes time, like anything else.

That said... the difference between a 'coder' and a 'programmer' is generally (and not always) university training. Getting the college background teaches you logic, helps you to look at your work as a 'project' rather than just a block of code, etc. I recommend if you want to get into software development, make sure you have your 4 year degree because most good programming jobs *require* it. Don't spend a lot on your education, you won't make much more if you graduated from Harvard or Rutgers. The only benefit those schools get you is connections, and when you're doing your undergrad you're generally too immature to make use of the connections. If you go back to school, then it's worth doing at a great school.

And in addition to your university training, learn on your own. The best programmers are the ones that did stuff in their spare time... that's how you have games like Counterstrike, because somebody created a 'mod' for Half Life and boom -- now it's an in depth game. Learn the major languages, C# is a good foundation because there are lots of jobs out there, and you'll be basically trained to write C or Java code in little time. I know VB.NET now myself, and I find it a difficult transition to write C# code, though I can read it -- i always miss the syntax :) Thankfully though, I'm also not a programmer so it's kind of a moot point :)

Programmers don't have control over the software creation process... that's the job of a project manager or lead programmer -- a role you can GET to by being a programmer to start. But it takes time, like anything else.

That said... the difference between a 'coder' and a 'programmer' is generally (and not always) university training. Getting the college background teaches you logic, helps you to look at your work as a 'project' rather than just a block of code, etc. I recommend if you want to get into software development, make sure you have your 4 year degree because most good programming jobs *require* it. Don't spend a lot on your education, you won't make much more if you graduated from Harvard or Rutgers. The only benefit those schools get you is connections, and when you're doing your undergrad you're generally too immature to make use of the connections. If you go back to school, then it's worth doing at a great school.

And in addition to your university training, learn on your own. The best programmers are the ones that did stuff in their spare time... that's how you have games like Counterstrike, because somebody created a 'mod' for Half Life and boom -- now it's an in depth game. Learn the major languages, C# is a good foundation because there are lots of jobs out there, and you'll be basically trained to write C or Java code in little time. I know VB.NET now myself, and I find it a difficult transition to write C# code, though I can read it -- i always miss the syntax :) Thankfully though, I'm also not a programmer so it's kind of a moot point :)

Hercules once again thanks for the good answer man :D I don't think I'd want to be a coder, rather I'd want to be someone who is more in charge of the creation process. I definitely will try to learn stuff on my spare time since I like tech. Yet here is the thing, do I need to have a CS degree in order to get such a job ?

Hercules once again thanks for the good answer man :D I don't think I'd want to be a coder, rather I'd want to be someone who is more in charge of the creation process. I definitely will try to learn stuff on my spare time since I like tech. Yet here is the thing, do I need to have a CS degree in order to get such a job ?

A quick background: I am doing a Masters in Computer Science right now and I am working full time at a company over the summer (it's summer now in NZ).

One thing's for certain - an architect or designer won't be able to do as good a job without being at least half decent at coding (unless they rely on and trust the opinion of people who are actually very good). This is because you need to know what is achievable within a given business mandated deadline and you need to at least be able to do a proper cost-benefit analysis of every design decision you take.

If you want to be in charge of the creation process right at the beginning, you should make your own stuff or if you are sufficiently enterprising, start your own company. If you want to be employed by someone else and still have a say, work for a small company. I do both of these right now because I have similar goals - I make my own software applications and I am in full control of that in every way. I work in a delightful company which is small only in the number of employees - I love working there because my input is taken seriously and I get to do architecture level stuff. This is only possible because a) the company is small, b) for someone at my stage, I am quite good at what I do, and I'm very passionate - which translates to real hard work (mostly because it doesn't even feel like "work" to me :) ).

You should go for a computer science degree if you code on your own in your free time and want to make something out of it. Wanting to jump directly to design and architecture is not very realistic - you need to put in solid groundwork before you get there.

And taking advice from people with considerable experience like Hercules is a very good idea.

Just to quickly say... if you want to be a programmer, get a computer science degree. You'll learn all the important things OUTSIDE of programming that make you a good programmer. The language you learn is irrelevant, if you can grasp the way to use objects properly, how to measure milestones, what a 'beta' means (not what people say it means), and how to look at a project as a WHOLE instead of just a little feature... you'll benefit.

The odds are though, the techniques you've learned in college by the time you graduate, will be four years out of date. Don't worry though.... most of your learning comes on the job, you only get concepts in college. Oh, and a degree... which is important for any job nowadays.

And I'll reiterate this again -- DO NOT SPEND A LOT OF MONEY ON YOUR COLLEGE DEGREE. Spend as little as possible, without going to a county college. Go to a real school, get a real degree, and spend as little as possible. It will be the best money you never invested :) Trust me.

The odds are though, the techniques you've learned in college by the time you graduate, will be four years out of date. Don't worry though.... most of your learning comes on the job, you only get concepts in college. Oh, and a degree... which is important for any job nowadays.

If the knowledge you gained in college is outdated in 4 years, you went to a bad college. A GOOD college will teach you the fundamentals which will NEVER be outdated. Techniques, fundamentals, and concepts will never go outdated. Only the languages, latest technology fads, and paradigms will change.

If the knowledge you gained in college is outdated in 4 years, you went to a bad college. A GOOD college will teach you the fundamentals which will NEVER be outdated. Techniques, fundamentals, and concepts will never go outdated. Only the languages, latest technology fads, and paradigms will change.

If you read my other posts, I am talking mainly about the languages they learn in college, not the methods they use to implement them.

If you are properly trained, you can pick up any language after you learn the syntax, as the logic and foundation are what's most important.

Make sure it is what you want to do.....its a challenging course (with lots of programming and theory). Looking back this it was NOT a good decision in life as I have other interests besides computing and it does make other career paths harder to get into....if I could go back in time I would not have done this course as it wasted a lot of my young life studying instead of having fun doing something I liked more such as working with animals.

  • 1 month later...

Make sure it is what you want to do.....its a challenging course (with lots of programming and theory). Looking back this it was NOT a good decision in life as I have other interests besides computing and it does make other career paths harder to get into....if I could go back in time I would not have done this course as it wasted a lot of my young life studying instead of having fun doing something I liked more such as working with animals.

So its pretty bad ??

I'm finishing my major on Computer Science this semester (with a dual major on Mathematics), and I'm continuing on my graduate studies for the PhD.

In my opinion, if all you want to do is code, there are easier and faster ways to learn so (equally good).

Maybe its because my university focuses so much on research that we do not care a bit about programming. On my university they focus on theory, A LOT OF MATH (enough to make most students finish a second major con Mathematics), and in the end we all learned that we are there to prove things are possible or impossible, and then let someone else code it.

I started computer science because I liked videogames (still do) and I wanted to work in the industry. But during my coursework I found a new passion in several topics, and thus I'm continuing for my PhD.

So in reality, all you need is motivation. Maybe in the middle of the program you'll find that you want to continue graduate studies and would love the SCIENCE part about Computer Science more than the COMPUTER part.

Hi, CS major here :)

Let's make it clear : CS isn't hard, it's misleading. A lot (and I mean a LOOOOT) of people think that they should invest in a CS major just because they like programming and stuff. This is wrong ! If what you want is just making programs you should maybe consider a minor involving software development but not a CS major. A CS major is more about studying data structures and organizations, algorithmic, languages theory, programming paradigms, AI, etc. so it involves a lot of theory and you'll need either to have a good grasp of some advanced mathematical concepts, or be ready to learn them quickly. So if that's not what you want, I highly encourage you to do something else as a CS class would quickly turn into a nightmare. Now if you're into this kind of stuff, you'll reaaaaaally enjoy a CS major which I think is one of the most rewarding majors out there as it will give you a great sense of self accomplishment looking back at all the projects you've worked on and all the knowledge you have that you can start using to do virtually anything you want with computers.

Hope it helps :)

PS : Start by asking yourself "Do I want to learn how to make programs that work, or how to optimize the time complexity of a recursive function from quadratic to linear ?". While you will learn the former in a CS class, you'll also have to deal with the latter. So if the second option is a definitive "NO !" to you, then I wouldn't recommend CS.

I'm finishing my major on Computer Science this semester (with a dual major on Mathematics), and I'm continuing on my graduate studies for the PhD.

In my opinion, if all you want to do is code, there are easier and faster ways to learn so (equally good).

Maybe its because my university focuses so much on research that we do not care a bit about programming. On my university they focus on theory, A LOT OF MATH (enough to make most students finish a second major con Mathematics), and in the end we all learned that we are there to prove things are possible or impossible, and then let someone else code it.

I started computer science because I liked videogames (still do) and I wanted to work in the industry. But during my coursework I found a new passion in several topics, and thus I'm continuing for my PhD.

So in reality, all you need is motivation. Maybe in the middle of the program you'll find that you want to continue graduate studies and would love the SCIENCE part about Computer Science more than the COMPUTER part.

This differes ALOT between uni to uni. Some uni's are all about theory, and back it up in maths. But at my uni we learnt lots and lots of theory that is relevant to software engineering, and much of it is useful for games. Theory about data structures, how databases work, TCP/IP networking stack, different forms of animation, using unix and software engineering processes to just name a few of the top of my head. I know lots of people who learnt to program on their own and although they can program, and they are good enough to be able to produce good aps, most often miss stuff because they don't know the theory I know. But what I really learnt was the confidence to go off and do my own thing.

Plus in reality the actual coding is monkeys work. It's the algorithms and designs behind the code which are the important bit. That's not to say coding is bad, but often your just translating your designs to code.

I'll add that I shifted my career from CS to MIS (Management Information Systems).

I realized that coding for hours in front of a screen isn't my thing. After working 3 years as a part-time web developer, what I enjoyed was coding my solutions that I had to come up to solve a problem, not to be told "make this function, etc.". The code-monkey part of the job was boring, almost too mechanical. I preferred to be the analyst which is why I'm shifting into full analysis positions.

I'll add that I shifted my career from CS to MIS (Management Information Systems).

I realized that coding for hours in front of a screen isn't my thing. After working 3 years as a part-time web developer, what I enjoyed was coding my solutions that I had to come up to solve a problem, not to be told "make this function, etc.". The code-monkey part of the job was boring, almost too mechanical. I preferred to be the analyst which is why I'm shifting into full analysis positions.

Which is one thing I like about my job. I got a degree in Computer Engineering. I've got a job as Software Engineer. The one thing I like though is how we operate. I'm not a simple code monkey. The developers themselves come up with the design, algorithms, functional requirements, etc and those are approved by your technical lead. We usually do have some restrictions like line item XYZ has to support ABC, but we get to choose the details.

I like programming and I like this way. I don't have some management analysis dude who does 0 programming telling us how to design and implement a feature.

It's boring as you find yourself able to work far ahead of the the curriculum if you were allowed to pace yourself. Programming courses are especially boring as they take weeks to go over the most simplistic of concepts like objects, control structures, data structures, et cetera.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.