Hi all,

Not sure if this is entirely on topic, but it seemed just as relevant as questions about programming books, etc., so here goes.

I'm about to be a junior in college, planning on majoring in Computing and the Arts, which will be roughly half computer science and half music. I've programmed in my spare time for years, last year got into iPhone development, and now have a summer internship at a music software company writing for iPhone and iPad.

I was wondering if any of you (preferably professional software developers) have any advice on how to have a successful and productive career in development, probably somewhere in the music field? Specifically:

  • Would it be worthwhile to go to grad school, and if so, what types of programs and degrees should I consider?

  • Should I try to get a job at a software company for a while before going to grad school?

  • Should I continue my plan to get a B.A. in Computing and the Arts, which fits what I'm interested in, or grit my teeth and get a B.A. or B.S. in Computer Science? Will grad schools shy away from an applicant who doesn't have a degree in CS?

  • Am I learning anything valuable by writing simple apps for the iPhone and iPad in my spare time, or should I spend my time on something less immediately rewarding but that involves more difficult and educational programming? What languages should I dive into?

Don't worry, I'm not going to base my entire life path on what is said on an online forum - just thought I'd toss this out there and see if anything interesting is said.


AS a developer and a musician, I don't think you can go too far wrong with doing both the music and computer science degrees. Having this training background will probably differentiate you in the job market if you're aiming to target a particular niche, as you've described.

No matter what you study in school, you're generally in for a few years of hard yards and less-exciting work before you get the really meaty projects to play with. This is actually a good thing though as it teaches you at least as much as you'd learn in school about how things work in the "real world" and some general business-oriented aspects of programming.

Stick to playing around with the stuff you enjoy in your spare time. This is a valuable way to learn and will likely give you something to show prospective employers when you don't really have a lot of actual industry experience.


What you should concentrate on not getting BAs is BSs or any other paper material with letters on it stating that you "are" something or someone, especially in the arts.

Just choose something that you LIKE doing when nobody is pushing you. In the long run, passion wins over determination or commitment.

You might want a BA now, but when all the BAs and BSs are in you pocket, what will you want then. 99% of firms out there will not hire you to do anything you like, they will hire you to do a job.

If "the best job" is what you want, then getting any and all "papers" will help you in that feat.

What you do in your spare time always wins out as being... well... what you actually want to do.


Here's my experience -- our situations aren't identical but there are similarities...

I started college with a focus on Graphic Design and wound up getting a BFA in Visual Communication. Immediately following undergrad I got a job at a large corporation in Los Angeles because I knew design and some Flash animation. While on the job I started learning ActionScript in my down time as a way to build cooler interactive stuff. At that time Flash developers were as in-demand then as iPhone/iPad developers are now (and still are, despite Steve Jobs).

Advertisers pour lots of dollars into marketing their products, and they always need people to make cool stuff. At a big agency, these people get paid well. Learning ActionScript has helped me more than double my income in 3 years. I'm considered a Senior Interactive Developer where I work despite the fact that I didn't go to school for Computer Science and I'm 27. I'm no genius programmer, quite the opposite, but I can make the cool doodads that clients want and that's what matters in this space.

If your interest is in world-changing medical imaging software or something, then learning about iPad development is going to steer you in the other direction. You probably want to get a PhD and grow a bald spot for that. However, If you're interested in making money so you can focus on music, specializing in hot web technologies could be perfect for you.

I sometimes wish I would have gone the CS route. But when I think about it more, I realize that everything I have learned about programming has come from hobbying, Professor Google (and now StackOverflow for solid Q&A), and my own aspiration. A degree is just a piece of paper unless you want a job that absolutely requires it. I would spend some time really thinking about where you want to be in 5, 10, and 20 years. If your 20 year goal requires a PhD in some specialized Computer Science related field, you had better get on that path now. If not, or if you're unsure, then earning good income will free you up to do what you want, including going back to school once you figure it out.

Personally, I'm starting to realize that web technology is not my 20 year goal and take appropriate action. I don't regret my career path at all, but lately my hobbying is steering a lot more in other directions. I've investigated local CS programs in the area (UCLA, USC,CalTech) and some are more receptive to grad students without CS degrees than others. Your mileage may vary. However, in my opinion any program that won't consider a strong applicant (GRE & rec's) that doesn't have a BS in CS is not a program I want to be part of anyway.

Good luck,


+2  A: 

Speaking only from personally experience, I have a B.S. in Computer Science. I would certainly say it was valuable, I learnt plenty of good stuff in the 3 years I spent doing it. However, I probably learnt double that about practical real world software development in my first year of employment.

What you learn doing a degree is very different to what you learn working. Both are valuable in different ways.

Now, as a more experienced developer who has been directly involved in the hiring process, I certinaly have no problem in hiring candidates who don't have degrees at all, provided that they have proven themselves in some way (through past experience, existing projects, code samples and tests).

To address your queries directly:

  1. If you are able (time/money/whatever), I definatly think it's worth doing a degree.

  2. If you are going to do a degree, just do it now. Once you start working you won't come back. Besides, getting a first software dev job without experience or a degree may be hard, Most people I have known that have managed this have started in a regular office job, and begin by spotting a need and writing a program to meet that need in the office.

  3. I don't think it really matters exactly what the degree is, do what you are most interested in and most passionate about. B.A Music/Comp should be fine. If you do something you are not fully excited/interested in then you are much more likely to run out of steam and stop before you finish.

  4. The most valuable thing you can possibly do is write lots of code. It doesn't matter what platform, language or OS you target, but the more apps you write, the more you have to demonstrate your skill to a future employer. Keep writing IPhone apps. Publish them on your website and write articles/blogs about how you built them.

[Good luck.]

Simon P Stevens
Excellent answer! +1 for "Once you start working you won't come back." Add a family to that and it's very hard to go back.
Thanks for the advice! Going straight into grad school seems to be a common thread in these responses, along with sticking with what I find interesting. I'll keep this in mind.

From my experience you need to do what you enjoy doing. If you are going to do something you do not enjoy doing then you wont do it well. My example was i had the option to do a bachelors in software engineering but i choose computer science and math because that is what i liked. I did not want to do all the bull crap engineering core courses.

Grad school is ok, but it's more research oriented (well CS grad school).

I would recommend you do you BA in computing and arts if you enjoy the music. Program a lot and i am sure you will be able to get a job when you graduate. These days if you have no work experience then a bachelors will get you an interview. And if you are a good programmer then you will get the job. Just do not go through university without programming anything you can think of. I know a lot of graduates who can't program if there life depended on it.

Good luck!

Thanks - I'll program as much as I can, that seems to be the main source of real-world skill that people have mentioned.

Speaking as a recent graduate with a BS in Computer Science (and just recently landed a programming job), I would say a lot of what I did in school was irrelevant.

Not in the sense that the technologies/techniques I learned were unimportant, just that it did very little to truly prepare me for the job market, other than to introduce me to various languages. The assignments I had to do barely carried over, and most I couldn't even demo as anything spectacular. In the 3-4 months that I've had my new job, I've picked up on (and had to learn) so many new programming techniques that I would love to go back a few years and force myself to read up on certain things.

Unfortunately, since that's not possible, here's what I would recommend doing.

  1. Any and all projects/assignments that you do, go back to it once you're done and spend a good day or two just changing it to be stand-alone somehow. Combine several programs together into a single tool to post up on the web. Something you can demo without having to offer any sort of background information will go a long way when trying to find a job.

  2. RESEARCH. For the love of god, I wish I had done this when I was going to school. I always just did whatever was asked of me in the most brute-force, straightforward manner and never bothered asking/researching for easier/clever ways. Sure, I got things done, but I got very little out of it in the long-run other than a little more free time during school.

  3. Capstone/independent project. This was probably the number one reason I got hired in the first place. Your senior project can be viewed as the pinnacle of everything you've learned in school, and a well-planned, well-designed, yet complex application shows more than just the know-how. It can show creativity, business-sense, problem-solving, almost any trait that an employer might find desirable. My project was a 3D tetris game utilizing the XNA framework. However, it was in the complexity, and yet the simplicity of the code that I later found my boss really liked about me.

Honestly, you can never do too much to prepare for the real world. Just don't expect everything you're doing for school now to help you too much, and take some initiative. Do something out of the ordinary. Do something difficult. Do SOMETHING that sets you above the average degree seeking student.

What you've said about projects and a senior project in particular is very interesting. Having programs ready to show a potential employer at a moment's notice is something I'll aim for.

I would definitely read the book Making it Big in Software: Get the Job. Work the Org. Become Great by Sam Lightstone. You'll find it both motivational and eye-opening into a successful career in software engineering.