Confused About Programming Careers?

Discussion in 'Mac Programming' started by ComicStix, May 15, 2010.

  1. ComicStix macrumors member

    Aug 29, 2009
    Boston, Massachusetts
    I really like programming and want to make a career out of it. Granted, I still have a couple years till I graduate (I am only a freshman) but I want to ask some questions. What is the difference between a computer science major, a computer programming major, and a software engineer major? Aren't they all the same thing? I would like to make programs that help people do things.
  2. dasmb macrumors 6502

    Jul 12, 2007
    Depends on the school, obviously, but the difference is likely one of focus. Computer Science is quite literally the science of computers, of which programming is only a small task. You'll likely learn about algorithms, logic design, and hardware related aspects of computers along with the art of programming. In short, it's a bit more theoretical. At the end of a computer science degree, you should be prepared to perform research into the edges of computer science.

    Software engineering instead builds in the other direction, focusing on the process of software construction (bugger hardware and theory). You'll learn about database design, application design, software process and so forth. It's more closely aligned with the business world than the research world.

    Programming is likely a technical degree and even more targeted -- training you to do a single task in the software lifecycle. If I saw an applicant with a "programming" degree I don't think I'd put much faith in it -- programming should be a side effect of a technical education, not a goal of it.

    But it really doesn't matter what you take -- it's just a way to get you in the door for your first job. After your first 2 years in the workplace your collegiate choice matters far less than in any other field. It's actually still possible to get a software engineering job with no college -- but you better have equivalent experience. In fact, if you love programming and want to do it as a job, start now. Find an OSS project and join it. Preferably one that's in hot demand in the industry -- if you know a lot and are visible in forums, you may get your first freelance work while you're still in college. I had a friend do this back in '00 (he was part of the Kerberos team) and he rolled into a job as a SysAdmin with AOL, where he's been ever since.

    From experience in interviews, Software Engineers are the most likely to have practical training in the skills both hard and soft that I need to build successful software. The things you don't get by avoiding a CS degree can be learned from books easily and are needed very rarely. I don't care if you know your normal forms if you can't apply them, and if you can build a nicely normalized schema that's not too abstract I don't care if you can defend it.
  3. lee1210 macrumors 68040


    Jan 10, 2005
    Dallas, TX
    Computer science - will teach you theory of computing, computer architecture, algorithms, computer math, etc. You will do some programming, but this degree will teach you about how to solve problems, etc. You teach yourself how to program as needed.

    Computer programming - normally not a 4 year program. Generally found in a trade school, technical school, junior college, etc. as a 2 year program. Will teach you programming languages, and maybe some theory, but will focus on real-world, immediately marketable programming skills.

    Computer engineering - more hardware focused. Teaches more in-depth processor design, etc. Closer to electrical engineering than computer science. The programming you'll do will likely be in a hardware description language, or a small amount in assembly, or maybe C, to demonstrate the hardware-software interface (the Instruction Set Architectire). This will probably not prepare you much for a programming career, but rather a career in hardware design, validation, verification, optimization, etc.

    This isn't formal, just my opinion of what these generally encompass.

    If you're seriously interested in a longterm career in software, I'd go CS. I'm biased though, as that's my background.


    Edit: oops, thought you said computer engineering, not software engineering. I don't have any experience with an SE program. I'm guessing you'll do theory like CS while also focusing on project management, software design techniques, team development techniques, etc. Dependent on the program this may be a better fit than CS, but without specific curricula to review, it's impossible to say.
  4. dasmb macrumors 6502

    Jul 12, 2007
    Software engineering and computer engineering aren't the same, obviously. Dude's got an accurate description of Computer Engineering, which most school would consider an offshoot of Electrical Engineering.

    Look if you want to write software, major in software engineering. You'll simply find it more interesting. My alma mater only offered a CS degree and there were so many boring requirements in the hardware area (Network programming e.g. how to rewrite TCP/IP, Logic Design, Macro Assembler, etc) that I just didn't get the degree. I took all the electives that interested me and got my degree in rhetorical theory.

    Of course, if you major in CS, you can have endless great coffee hour conversations about all the nonsense you had to learn, never used and are still paying for. I'm told it's a plus.
  5. NickK1066 macrumors regular

    Jul 23, 2007
    Computer Science - focused on development of new computing techniques/algorithms as a science and research.

    Computer Engineering - focuses on hardware usually as a specialisation of electrical engineering.

    Software Engineering - focusing on the development of software as a commercial product/solution.

    My SE course shared many modules with the CS course however what was mandatory and optional differed. For example it was mandatory for us to study "Formal Specification and Z" for 3 years whereas the CS folks could drop it after the first year. I took Numerical Computation as an optional module whereas CS it was mandatory. Another mandatory module for us was quality management systems for example.

    We also had some hardware in there too - 68000, embedded systems and networks from FFT of the actual signals and upwards in OSI.
  6. Mernak macrumors 6502

    Apr 9, 2006
    Kirkland, WA
    I would be very wary of the computer programming degree, as other have said it is basically a trade school degree with less very important theory. It sounds like you would probably want the software engineering major if you actually want to build applications for peoples' use.

    Computer Science is much more theory based than Software Engineering, focusing (very small part) on how to solve problems and how computers represent data structures. You will probably not need to actually code very much, just for more introductory Algorithms classes before you get into heavy proof-based classes.

    Software Engineering focuses more on programming and tasks related to programming projects (lifecycle of a program, unit testing, code coverage, modularity, etc.). More theoretical than a programming degree, but still focused on how the theory can give you tangible benefits.

Share This Page