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.
  • Posts

    • Flameshot 14.0 Final by Razvan Serea Flameshot is a free and open-source, cross-platform tool to take screenshots with many built-in features to save you time. Using Flameshot is as simple as launching, dragging the selection box to cover the area you want to capture, making annotations as needed in on-screen and saving the shot to your computer, all with a very simple and straightforward interface. Flameshot allows users to simply upload their screenshots directly to the cloud in order to easily share it with others. You can upload your image directly to Imgur with a single click and share the URL with others. In-app screenshot editing - You can choose to add an arrow mark, highlight text, blur a section (blur or pixelate an area), add a text, draw something, add a rectangular/circular shaped border, add an incrementing counter number, and add a solid color box with Flameshot's built-in editing tools. Command-line interface (CLI) - Flameshot has several commands you can use in the terminal without launching the GUI via a command line interface. The command line interface lets you script Flameshot and use it as the subject of key binds. Flameshot 14.0 release notes: This release brings major improvements to multi-monitor support, fractional scaling support, new capture workflows, and a long list of bug fixes across all platforms. Changelog: New Multi-Monitor Capture Workflow New monitor selection screen before capture for better multi-monitor and mixed-scaling support. Option to auto-capture the monitor under the cursor (X11 & Windows). Tray menu can directly select a monitor. Linux Improvements XDG Desktop Portal is now the primary screenshot method. Added legacy X11 fallback option for minimal window managers. New D-Bus capture API for scripting and automation. Windows Enhancements Global screenshot hotkeys now supported (not limited to Print Screen). New portable mode stores settings next to the executable. Clipboard now always uses PNG format for better compatibility. CLI & Platform Updates Redesigned flameshot screen command with per-monitor capture support. Added native Nix Flake support. More compact launcher UI and improved update notifications. Major Fixes Multiple Wayland stability fixes, including KDE Plasma crash fixes. Clipboard compatibility improvements for GNOME, Wayland, X11, Windows, and macOS. Fixed D-Bus hangs, capture crashes, and HiDPI region issues. Other Changes Dropped Ubuntu 20.04 (Focal) support. Updated translations and build infrastructure. Intel macOS builds are no longer provided. [full release notes] Download: Flameshot 14.0 | 18.1 MB (Open Source) Download: Flameshot Portable | 53.0 MB Links: Flameshot Home Page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Helium Browser 0.13.4.1 by Razvan Serea Helium is a private, fast, and honest Chromium-based web browser — built for people, with love. It offers the best privacy by default, unbiased ad-blocking, and a clean experience free from bloat and noise. Proudly based on Ungoogled-Chromium, Helium removes Google’s clutter while keeping a fast, efficient development pipeline. With thoughtful touches like native !bangs and split view, Helium is a people-first, fully open-source browser that puts control back in your hands. Privacy, security, and control come first. Ads, trackers, and third-party cookies are blocked automatically, HTTPS is enforced everywhere, and all Chromium extensions work seamlessly — while Google can’t track your activity. Helium’s 13,000+ offline-ready !bangs let you jump straight to sites or AI tools like ChatGPT instantly. Open-source, people-first, and unbiased, Helium delivers a browsing experience that’s fast, secure, and free from noise, ads, and compromises. Helium Browser key features: Performance Fast, efficient, and lightweight — built on Chromium’s optimized engine. Energy-saving and consistent — stays fast over time without slowing down. No bloat — stripped of unnecessary components for maximum speed. Minimalist interface — compact, clean, and distraction-free. Customizable toolbar — hide elements you don’t need. Smooth and stable — no flicker, lag, or animation glitches. Comfort-focused experience — intuitive and unobtrusive. Privacy & Security Best privacy by default — blocks ads, trackers, phishing, and third-party cookies. Unbiased ad-blocking — powered by community filters and uBlock Origin. No telemetry or analytics — zero background web requests on first launch. Strict HTTPS enforcement — warns for insecure sites. Passkeys supported — modern authentication made simple. No built-in password manager or cloud sync — your data stays yours. Extension Compatibility Full Chromium extension support — including MV2 extensions. Anonymized Chrome Web Store requests — Google can’t track extension installs. Extended MV2 support — maintained for as long as possible. Smart Features Native !bangs — browse faster using 13,000+ offline-ready shortcuts. AI integration — use !chatgpt and others directly from the address bar. Offline functionality — bangs work without an Internet connection. Philosophy People-first design — open source, transparent, and community-driven. No ads, no noise, no bias — privacy and honesty over profit. Helium Browser 0.13.4.1 changelog: 0a4f1149 revision: bump to 4 (#1969) 4848de1f helium/core: enable the chromium screenshot feature (#1968) e0dec3f5 onboarding: integrate strings to i18n system (#1948) 417fa5bc i18n: fix newline parsing for onboarding 7a339b39 i18n: add foraged translations for onboarding 4f090cff i18n/generate: add handling for onboarding strings bfe48d58 i18n_apply: manually override parent grd logic for onboarding strings ab214e3c onboarding: bump in deps, wire up grdp afa6a059 helium/core: disable pdf infobar feature (#1965) eba585e7 helium/ui/vertical: fix new tab button alignment and icon size (#1964) 6ecfc9e0 helium/ui/tabs: fix horizontal tab hover background color (#1963) 3db87dc0 helium/ui/tabs: fix new tab button hover/press colors (#1962) 6bbdcc3e helium/ui: improve tab group UI in all layouts (#1961) 53deb314 helium/ui/tabs: enable tab group hover cards e93aece7 helium/ui/vertical: fix tab group appearance, prevent line overlap 629f5495 helium/ui/tabs: restore solid group header colors, enable new colors 961c962e helium/ui/tabs: move horiz tab group underline to bottom, make it thick c96deab6 merge: update to chromium 149.0.7827.155 (#1959) 36db56b4 i18n: update source.gen.json 5ce006ae patches: refresh for chromium 149.0.7827.155 b4c1ea62 merge: update ungoogled-chromium to 149.0.7827.155 4e5e8671 Update to Chromium 149.0.7827.155 08a3e7da helium/ui/layout: disable mute on collapsed vertical tabs (#1778) a0a5bbaf helium/core: simplify context menu and prevent huge widths (#1951) c4732aac devutils/i18n: add forage command (#1944) 11d16986 devutils/i18n: add an option to translate using local CLI tools (#1942) d820c3a2 i18n/prompt: tighten translation rules to prevent common errors (#1940) cf827007 Update to Chromium 149.0.7827.114 6e3d5164 Update to Chromium 149.0.7827.102 Download: Helium 64-bit | Portable 64-bit |~100.0 MB (Open Source) Download: Helium ARM64 | Portable ARM64 Links: Helium Home Page | macOS | Linux | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • Reacting Well
      BizSAR earned a badge
      Reacting Well
    • First Post
      AndreaB earned a badge
      First Post
    • Week One Done
      Huge Trailer earned a badge
      Week One Done
    • Week One Done
      Classifyskilleducation earned a badge
      Week One Done
    • One Month Later
      eurospharma62 earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      579
    2. 2
      +Edouard
      183
    3. 3
      PsYcHoKiLLa
      75
    4. 4
      Michael Scrip
      73
    5. 5
      neufuse
      64
  • Tell a friend

    Love Neowin? Tell a friend!