views:

1041

answers:

12

I finished my Audio Engineering degree two years ago, and since then decided that I want to do programming as a career. I'm worried that my lack of a relevant degree will be a hindrance when I start looking for a job, so I've been looking into my options.

I really don't want to do another degree - too much time and money. I've seen that in the UK (where I live) there are Computer Science MSc courses, which are aimed at people who've done degrees but in a non-computer science field. I don't know whether these are worth anything in the job market though, as many don't require any previous knowledge of computing, and all last only a year.

So, is it worth taking a year to do an MSc, or should I spend that time continuing to learn on my own? Or is there a third option?

+1  A: 

"Audio Engineering" is a technical degree which is fine for software engineering. Most reasonable employers want somebody with any natural science degree, physics, mathematics, hardware, electronics whatever. Less so for journalists, psychologists, teachers whatever. Sometimes economists can also get in.

Depends on where you live. In some countries they won't talk to you without a degree. In others they may never ask if you have one up to your retirement.

Developer Art
australia is one such place they won't talk to you (real programming anyway, i don't know if it's the same for c#/java/web programmers)
Matt Joiner
How exactly do C#/Java not qualify as "real programming"?
Developer Art
haha, you read this and the first comment and than you wonder why software poopers even have the privilege to call themselves 'software engineers'. The sad reality is that you can be a cake decorator who does programming. I mean, it's ridiculous.
Sergey
Engineer is a title that lost almost all it's prestige and meaning. I've seen jobs titled "burger engineers" before. :)
joemoe
what exactly is a software pooper?
Matt Joiner
+1  A: 

Do an MSc, but only do one in computer science if you want to be a computer scientist.

I did a MSc called "software techniques for computer aided engineering" at Cranfield following a first degree in electronics and information engineering. I also study pure mathematics as a bit of a hobby, and have done a couple of Open University modules in it over the years.

If there is an equivalent software engineering for audio MSc, where you will study techniques which are useful and applicable to the field you want to work in, it's probably well worth doing that rather than a computer science degree.

Pete Kirkham
+8  A: 

It depends on what you think you can do with a MSc. What it is not is some sort of ticket to a code-monkey job. It most likely will not prepare you for any specific job; it will not make you an acceptable Java, C#, or Haskell developer. It will not teach you to deal with requirements or how to hold a code review.

What it does is teaches you all of the concepts that BSc students assume or don't tackle. It also goes into far greater detail in each topic. You don't just learn about how programming languages work but you learn all the lambda calculus involved and other gory details. You don't just learn a few dated path finding algorithms but learn about Markov models and learn everything there is to learn about them. In short, you will learn about all of the things that most software engineers take for granted or have learned through experience in a highly compressed timeline (2-3 years).

You should note that some universities treat a MSc as a gateway to the PhD program. Some universities treat it as a terminal degree. You can tell which by whether the MSc students and the PhD students take the same courses for the requirements. For example, if a MSc program basically leaves its graduates as "ABD" (All But Dissertation); if so, then it's a gateway program.

I'm nearly done of obtaining a MSc myself and I think the one thing it has prepared me to do best is learn on my own, solve original problems, and conduct research. It will make me better in my day job because I will possess knowledge that will make me the "go-to guy" for the difficult problems. If you are wanting something that more directly applies to a typical software development job, maybe a Masters degree in Software Engineering is more appropriate.

s1n
+1  A: 

Experience is key, show someone you can code and get a job starting out.

Get a Masters degree once you come to the conclusion that it will really benefit you based on where you are going, some employers will even compensate tuition.

The degree you have shows you went to school for Engineering, Audio is complicated, people know that. People know you use programming languages in all fields of Engineering. That degree plus your ability to program is all you need to get going my friend.

shogun
+1  A: 

Do a computer science degree if you want to study computer science (computability, complexity, proof, sequent calculus, etc). I did one - it was great fun - but it didn't help much with being a programmer.

I know lots of good programmers (in the UK) with no degree (and in some cases no O-levels/GCSEs).

If you're a good programmer getting a job writing software isn't difficult. Somebody can put you in front of a computer, give you a task, and see what they get out. If you're no good a degree isn't going to help you much.

Alun Harford
+1  A: 

I think the answer depends on what kind of "software engineering" you have in mind. If it's mostly about putting together some predefined pieces to fit the business requirements of a client - no point in special education, specific experience in the area will be more valuable here.

On the other hand, if by "software engineering" you mean working at the cutting edge of the technology (e.g. massive data sets, critical applications, custom algorithms for unusual/novel problems) then education in that area helps a lot and it's not really about the diploma - it's about the knowledge you get in the process. I think if you are an audio engineer, you are already pretty far here, you must have had enough math, combinatorics and stuff like that so this should be easy for you. Add a few more fundamental subjects (design and analysis of algorithms, distributed systems, OSes) and you will be well prepared to tackle really challenging problems. And of course try to build on the strengths you have - digital audio processing, voice communication systems, codecs, etc. -- it all sounds like really green pastures for you ;)

There is also a third side of the problem (disclaimer: don't have any experience here, speaking theoretically) and it's about project management for software projects. Good curricula include such subjects and it might be a tremendous help later when you know how some fundamental issues are approached without the need to test and make mistakes yourself.

Whatever you decide - good luck!

Krystian
+2  A: 

Best programmer I've ever met has no formal CS training... and very few employers in Britain at least will insist on a CS degree.

I've heard that some banks require at least 10 years of commercial experience from jobseekers that don't have a CS degree - I'm not sure how widespread that requirement is though...

Bear in mind that CS, programming and commercial programming aren't the same thing at all - although there's an overlap.

I know of quite a few CS lecturers and professors who wouldn't be able to walk into commercial programming jobs - even ones who research programming languages(!)

Having said all that there are some CS subjects that are quite relevant - maybe not all the time but they do help to create a well-rounded understanding of what you're doing when you program: algorithms, discrete maths, database design, compiler technology, basic hardware concepts...

Then there are courses that whilst they may be scientifically interesting are of practically no use to practising programmers: computational complexity theory, model theory, formal verification of software

It sounds like you'd be better off looking for a job in a company that really mentors its developers. Look for companies that treat their software development as a profit centre rather than a cost - that indicates that they care about the software rather than just let it be in whatever horrendous state so long as they make money...

You could always do a conversion MSc later in your career if you really wanted that but doing it now honestly isn't going to help you that much.

cartoonfox
+5  A: 

Yes I think it is worth it, especially if you lack a BS in CS.

Computer Science is not about programming or "software engineering" however.

What CS is: It's about learning how to build, analyze, and use algorithms to solve complex programs (like machine learning, AI, image processing, natural language processing, symbolic math, bioinformatics). It's about discrete mathematics, and statistical methods.

What CS is not: CS is not how to write simple data-driven business apps or make web sites which is a big part of what the computer industry does today. CS is not about rote learning some framework or API.

CS prepares for you stuff like writing a video codec, or developing software which can detect cancer based on the input of a bunch of sensors and machine learning algorithms. This is a small minority of what software engineers actually do though. Most jobs involve writing business apps (LoB apps), or CRUD apps. Or some kind of web development. So CS is not a preparation for this, but it can be useful in some ways.

joemoe
+1  A: 

Yes it is. But make sure you go to a good university where you will be challenged, and select a project/thesis that is substantial and will give you good experience in seeing something from start to the finish, and doing it yourself. You'll feel proud if you succeed. Aim to publish.

Don't do it for the money, most employers don't really pay you more because you have a MSc.

navigator
+1  A: 

I enjoyed my Master's program and I'm very glad I did it. I didn't learn much practical software engineering, but the theory and math gave me a greater appreciation for Compuer Science as a field.

Stephen Newell
+3  A: 

Do NOT take a Master's degree in Computer Science just because you want to get into programming. You will take on a lot of expense, and gain relatively little.

If you want to get into programming, then program. Join an open-source project that you like. Fix bugs, then add features. Use that experience to create a portfolio of what you've done. After one year of doing this, you'll know more about programming than a Master's degree will teach -- and you won't have to pay back academic loans.

There's very good reasons to get a Master's degree in Computer Science. But your phrase "I really don't want to do another degree - too much time and money." tells me that a Master's degree would not be a good fit.

Good luck!

Chip Uni
+1  A: 

Whatever you do, keep on learning. That is easiest to do in a class, but be wary of lazy professors who just want you to do things "their way".

I can remember that I used to have attitudes and approaches to problems that I have since moved beyond, and I can recognize them in my younger colleagues, such as:

  • Thinking data structure was very interesting, so more of it was always better. This is a perfect recipe for making mountains out of molehills.

  • Thinking if I wrote the compiler, I would have it optimize so thoroughly that my code would outrun that of every other compiler. Later I found out that that matters in at most a few dozen lines of code, while there could be thousands or millions of lines around it, and 99% of performance tuning has nothing at all to do with low-level optimization.

What I've learned along the way is that basic CS, including automata theory and information theory, gives tools for thinking about problems so one can better classify problems to find the best solutions to them. This is a two-edged sword. While it can make one a better programmer, it can also make one harder to follow by those who have not climbed a similar learning curve.

Mike Dunlavey