Games Programming vs Software Engineering
July 5, 2008 9:51 PM   Subscribe

Help me pick a second major for my computer science degree.

Background: I am a 30 y.o. undergrad Bachelor of Comp Sci student in Western Australia. Everything in my early life pointed to a career in computing; I remember being fascinated the first time I encountered a computer (a BBC Acorn), and although my family was too poor to afford any kind of computer I spent hours on the Mac Plus in the local library & would also borrow books on programming & write out programs & go through them in my head. Naturally I excelled in high school computing, & went straight into a CS degree. However life got in the way & I managed to get kicked out of my degree after second year. (Ironically despite failing most of my units in royal fashion I also scored 86% in my HCI unit.)

In the ten years or so between my first attempt at a CS degree & a second one, I discovered a strong interest in research & academic writing & graduated with a first class honours degree in history. I began a Ph.D. with a view for the traditional teaching/research pathway common to humanities graduates, but left after I got distracted by a full-time job & earning a real wage for the first time in my life. During this time I'd always retained a strong interest in computing, getting into HTML & web design in the late '90s, starting a collection of vintage Macs, spending most of my free time on the net/IFOC etc. The job I left my Ph.D. for also requires I spend 90% of my time IFOC, although it begain as data entry & has since evolved into Excel spreadsheets & if I'm lucky, an Access database. Frankly though it's dull work & it prompted me to think that if I was going to spend my working life IFOC I might as well learn to do it in a way that interested me, so I decided to return to a CS degree.

I'm now just starting my second year of this degree & it is going very well - I have gone part-time at work so I can study full time. So far I have straight HDs (A's) & I love what I am studying. I've become an incredibly anal overachiever, in fact, compared to the CS student I was when I left high school. I began my degree with a fairly vague idea of what I wanted to do at the end - something to score me a job in IT - but my life goals have changed, particularly since I've gone from a FT salary to a PT one & realised that I don't actually want or need much more than enough to get by, financially, and have zero interest in business and "getting ahead." In fact I am now eyeing honours and then PG studies in CS after I graduate.

To get to my question: there is no doubt that I should major in CS. I love programming & I find the theory side nifty too. But my degree requires that I either pick a second major or a bunch of electives. I think that a second major will give me more options and I have narrowed it down to two choices: Software Engineering or Games Programming. I assumed from the start of my degree that software engineering was right for me, admittedly without really knowing the contents of the units or what it exactly entails. (I assumed it was sort of an extension of programming.) I also ruled out games programming as I am not a gamer - I mean, really not a gamer! (For one thing I only own Macs, haha...) Well I have a weakness for Tetris & The Sims, and that's it. I would just rather do other things than play games and so have never payed much attention to the whole gaming area (aside from reading Ctrl-Alt-Delete).

But on futher examination of the units involved in games programming & software engineering, I'm starting to waver. Firstly, I emailed a student advisor for ideas & was advised that given my stated interest in programming, AI and HCI, Games Programming was the better fit. Secondly, I did a closer inspection of software engineering & became somewhat suspiscious that it might entail management and business along with the actual software design. In the gap between CS degrees I took an accounting diploma at vocational college & I've had my fill of management theory & commerce. In fact my least-liked unit so far has been first year systems analysis. However, I do see that most of games programming is mostly programming & not so much games: a lot of units on computer graphics, only 2 really specific to gaming.

Given that in many ways I just want to do a double major in CS, but that's not possible, what is the best choice?

PS. I have to confess that some of my aversion to games programming is that the majority of students are 18-20 y.o. males & stereotypical gamers. Not that it should bother me as I'm doing most of my units online at home.
posted by hgws to Education (22 answers total) 1 user marked this as a favorite
Why not mathematics? I have a CS degree and I kind of wish I'd double majored in something not relating directly to computers, but that a CS degree would greatly enhance. For me that would be something like Math, Chemistry, Physics, etc.

You could get a degree in mechanical engineering and work on robots, for example.

You could also do something like philosophy or art history or music, something that would enrich your life without being too much of a challenge (and thus taking too much of your time away from CS).

But I would say to stay away from software engineering or games programming (especially since you're not a gamer)
posted by delmoi at 10:02 PM on July 5, 2008

I'm sure people Out In Real Life will comment, but here's my take (US school, CS degree, about 3/4 of the way through)

Personally, I'd avoid the Game Design field like the plague: in my impression, it seems like the CS equivalent of starting up a band - and like the 'starting a band' career field, it's plenty of work for (relatively speaking) not much pay.

Agree with Delmoi that perhaps a complementary minor might be a good idea.

It might be helpful if you elaborate on what you didn't like about systems analysis?

... speaking as somebody who just finished a game design class? You're going to mind those stereotypical gamers quite a bit if you wind up dragging and kicking them through a group project.
posted by Orb2069 at 10:18 PM on July 5, 2008

My philosophy major (beside the gen.biol. and mol.biol./biochem triple) has probably done a bunch of "intangibles" for me.

The trick is to be able to show that you didn't let that phil major get to your head ;)

Regardless of whether you go into phil or not, as a programmer, you might be interested in taking a course in "symbolic logic" if it's available.
posted by porpoise at 10:19 PM on July 5, 2008

Response by poster: I suppose my aversion to taking a non CS/IT second major is that whilst I do have non-CS interests, there are all these units that involve computers I could be doing & I'd like to do as many as possible! Also, I do already have a B.A. so I kind of feel I've done enough study outside of CS. The maths/engineering angle is a possibility though: I was average in maths in high school but I enjoy what I've done at uni as part of my CS degree.

Orb2069: haha, it was the group work I hated most of all about systems analysis! I actually quite enjoyed drawing UMLs and developing data dictionaries. But I found business processes (workflows etc.) rather dull, particularly as my government employer loves processes and procedures and I've been unwillingly involved with developing them.
posted by hgws at 10:29 PM on July 5, 2008

I did a closer inspection of software engineering & became somewhat suspiscious that it might entail management and business along with the actual software design. In the gap between CS degrees I took an accounting diploma at vocational college & I've had my fill of management theory & commerce.

Software Engineering is not a really well defined term, but tends to cover all of the things that are important for programming in the real world. It can drift into management and business aspects (such as how to organize a software team), but it should mostly cover things like source control systems, software methodologies and other topics directly related to programming. With that said, if you don't think those kinds of topics are interesting and you want to focus on more hardcore programming classes then it's probably not a good major for you.

Have you taken any "Introduction To [Blank]" courses yet? Those courses are specifically meant to introduce you to a wide variety of topics within a major that you could explore in the later years of your degree. An Intro to HCI, AI, DFAs, P=NP or any other crazy Computer Science acronym topics could help you find what you really want to study. If you don't have time to spare on entire classes, you could also just browse some of the course websites for each topic, flip through some textbooks, or just google around to try to get a feel for each topic.

pick a second major or a bunch of electives
here are all these units that involve computers I could be doing & I'd like to do as many as possible

Wouldn't you want to pick the electives over the double major then? It seems like you really just want to be able to do a ton of CS courses without picking a specific subtopic to focus on, so you might be better off going with the straight-CS coursework plus your own random CS electives.
posted by burnmp3s at 10:46 PM on July 5, 2008

You're interested in AI, you say? Have you considered linguistics?
posted by kindall at 11:26 PM on July 5, 2008

Response by poster: burnmp3s: The first year of my degree was very introductory & apart from programming & systems analysis, included databases/SQL, operating systems, communications/networking, & computer security. Unfortunately all the universities in my state leave topics such as HCI, AI, useability/info architecture to later years or PG studies. (a little frustrating since outside of programming these are the areas that grab me most.)

The CS major + random electives is certainly a possibility. I just like the sense of neatness & completion gained from being able to say "I majored in X and Y" over "I majored in X and did a bunch of other stuff too" - but I'm probably just being fussy...

kindall: Intriguing option, unfortunately not taught at my uni beyond an "Intro 101" type unit.
posted by hgws at 12:11 AM on July 6, 2008

Looking back on my 7 year undergrad history, I wish now, sorta, that I had not taken classes that covered stuff that I could have learned from wikipedia etc; eg. the social sciences (history, anthro, poli sci).

My school required CS majors to take a full sequence of engineering physics -- 1 & 1/3 years, which towards the end also required 2 years of math; I consider these two sequences the core of my college education, really. The CS itself has aged a bit, but math and physics are eternal.

Going back to my first point and inverting it, also look at course offerings that are difficult and/or expensive to take outside of the ivory tower.

eg. Chinese, Japanese, music (?).

You can also perhaps take a cake 2nd degree and then load up on the math & sciences on the side.

Whatever you do, don't do games programming.
posted by yort at 12:14 AM on July 6, 2008

If you're interested in AI, you definitely need strong math, in particular statistics.
posted by delmoi at 1:17 AM on July 6, 2008

posted by nev at 8:18 AM on July 6, 2008

I'm a games programmer, and I think your second major should be math (especially if you enjoy the theory side of CS) or electrical engineering.
posted by dfan at 8:19 AM on July 6, 2008

I have a minor in software engineering, and never took a business course (thank god), so I guess it depends on the university.

I second the idea of looking more into math. A couple of my S.E. courses were also offered through the math department. If you like the nuts and bolts of programming (algorithms) vs. the enterprise-level systems stuff, math would be fun for you.

I also have been thrown into teaching intro to gaming courses. I really like them, and I like the gamer kids, but never having been a gamer, I do not have (and will never truly acquire) that vocabulary and shared experience to really relate to them as a peer. If I were you, I would try to take a gaming programming class just for the fun of it, but not minor in it.

If your math department offers a math-based logic minor, I'd jump on that.
posted by SuperSquirrel at 8:35 AM on July 6, 2008

It's time to start thinking about what kind of industry you might want to work it.

If you want to be an academic, you need to carve out an eccentric niche around a problem that can't be easily answered.

You might also want to identify and industry where you'd like to work. When I was in library school, there were quite a few comp science students who looked on the program as vocational orientation. They new they wanted to design information systems. The graduated with a portfolio and a resume targeted at particular schools and companies. They're doing extremely well with the "library" degrees. Personally, I'd look into computer interaction in medicine. There's some cool stuff going on.

Looking back on my 7 year undergrad history, I wish now, sorta, that I had not taken classes that covered stuff that I could have learned from wikipedia etc; eg. the social sciences (history, anthro, poli sci). bold That's kind of like saying, I'm sorry I studied computer science because there's web monkey. Social Science and history are about learning skills and processes.
posted by gesamtkunstwerk at 9:34 AM on July 6, 2008

Nthing math.
posted by kldickson at 11:03 AM on July 6, 2008

And gesamtkunstwerk, I feel the same damn way about gen eds. I can learn that stuff from Wikipedia if I so desire to (yes, I know Wikipedia is not scholarly material, in fact, I'm an upperclassman neuroscience major who will absolutely not use Wikipedia for reference). I'd much rather spend the 30 credits of gen ed I have to do (minus the apparently twelve or so credits of it I already have under my belt) on more neuroscience courses, evolution courses, some more math, and a little philosophy.

I took a history of science class this last semester which really, really helped, I think, in building up a sense of how my field and other related fields have interacted with the public in the past and why they interact that way in the public today, but half the stuff it presented was stuff I already knew.

For postgraduate studies in computer science, fuck software engineering and games engineering and major in math.
posted by kldickson at 11:12 AM on July 6, 2008

Ever heard of off-shoring? The systems analysis end of things has to be done on-shore. It could supply valuable future-proofing. It also sits well with HCI -- it is better if you know quite a lot about the needs of the H. As you have business knowledge, you don't need basic undergraduate business classes. So I suggest you go with the bunch of electives option, and don't ignore the most useful bits of software engineering.

Other useful electives? Can you add some education? Good if you do stay in academia permanently, and no harm in other professional work which usually involves putting over your solutions to others. And educational psychology links in to HCI.

I was going to suggest filling up the cracks with Maths, but I realise that employers are a bit wary of hiring someone who never lifts their nose from heavy subjects. (They also don't like people who don't like teamwork -- watch that!) So mixing in one or two random classes may be an advantage.
posted by Idcoytco at 12:24 PM on July 6, 2008

Don't do math unless you really like math. You can't fake your way through math--you're either good at it, or you shouldn't be majoring in it. That said, the developers that I've met that were math majors were all fantastic programmers. But like I said, if you don't got it, don't waste your time because there are plenty of other opportunities to be had.

With an English major you immediately make yourself stand out in the business world as someone who can "cut-to-the-chase" and "talk like real people" which are essential management skills. At the very least, there's a huge need for people with good software documentation skills. Can be fairly lucrative, if that's your thing. The other major I'd recommend would be finance. The math is a hell of a lot easier (really, you'll feel like a super genius).
posted by Civil_Disobedient at 2:10 PM on July 6, 2008

Chinese, as yort said.

Chinese will give your head a good workout in a totally different direction than bits and bytes and algorithms, and it could be a great enhancement to your career. Although I love math, I'd recommend against math as your second major, because if you are really into computers math is just too much extra geek; something different will keep you relatively human! (I'm a programmer, so this is from an inside view.)

If you can't face Chinese, then English, but really Chinese is the way to go.
posted by anadem at 4:36 PM on July 6, 2008

Physics. It will help a lot in game programming, if you want to do it, and is a marketable skill besides. It's fun too.
posted by sebastienbailard at 5:33 PM on July 6, 2008

I went to a school that allowed you to create your own major if you wanted to. You might consider that.

Personally, I hit my CS major hard (it was love) and then took full advantage of the liberal arts that were all around me and took anthropology, religion, ethnomusicology, and physics classes just to name a few. I chose not to double major or even to get a minor, but rather to have a smattering of that which interested me.
posted by plinth at 7:35 PM on July 6, 2008

Response by poster: Thanks for all the varied responses. I'm still mulling it all over. The maths department at my university isn't very big & exists more to support other disciplines; further, I did take maths as part of my first attempt at CS a decade ago & although I enjoyed it, it didn't come naturally to me & I had to work very hard at it, unlike CS, so as Civil_Disobedient points out, I'm not sure it's the way to go for me.

Computer Systems engineering is an area that grabs me, as I've already done 3 units that overlap with that major & enjoyed them. So I'm strongly contemplating it.

kldickson: For postgraduate studies in computer science, fuck software engineering and games engineering and major in math. This response surprises me as my uni (having a large games programming department) is often pushing all the research projects that use games programming skills (HCI, graphics programming) and was one of the reasons I was considering it - also I see at other Aus unis there are a number of PG courses in software engineering. But, instinctively, I would agree with you.

If I'm still stumped, I can always enrol in 100% CS units next semester & put off the decision for another 6 months (ahh procrastination) - or switch to a more old-school theory-based university.
posted by hgws at 8:05 PM on July 6, 2008

I'm nthing math if only because it really set me apart when interviewing for programming jobs. It turns out a lot of computer science majors started out as math majors and dropped out because it was too hard, so I got a lot of respect for managing to do both in four years.

That said, I wish I had been able to take more software engineering courses as part of my undergrad, as I think they would have been really useful in my actual job. I know a lot of theory but that doesn't translate all that well to everyday work, it seems.
posted by crinklebat at 10:44 PM on July 6, 2008

« Older Oh where is my lost paragraph...   |   Neck / spine cooler? Newer »
This thread is closed to new comments.