I’m interested in a career in software development. How should I pursue this?
I graduated from a pretty well-regarded college several years ago with a degree in the natural sciences, and went into an unrelated field. I quit my job about six months ago and went traveling with the intention of figuring out what I really want to do or at least something that I won’t hate.
So, I’ve been considering different things, and I’m interested in software development. I’ve done some programming on my own – pretty basic stuff, using C and Python - but I like it. I’m very good at math and like solving problems. I like the mix of structured, logical thinking and creativity required of a good software developer. Problem is, I don’t have any formal training in computer science, programming, or advanced math. I’ve taken college level Calculus I and II and Statistics – all actually completed in high school (AP credit), and also Physics I and II taken in college. That is the extent of my computer science-related background. I have some savings and am willing to invest in more education provided there will be a ROI.
I’ve done a bit of research, and as I see it there are three options:
1. Go back and get a second undergraduate degree in Computer Science. I’ve looked at the requirements for my alma mater’s program and it looks like I could get through the requirements for a BS (14 courses that I haven’t previously completed) in three semesters or a BA (8 courses) in two semesters. If this is my best option, a few follow up questions:
- How important is pedigree in CS? My alma mater is ranked about 20 in US News in CS. Are the opportunities (higher salary or better placements) coming from a top 10 program like CMU or UM markedly different than those from a 20ish program like UNC? I don’t really care about working at one of the super-sexy tech firms, I’m just wondering if the average salary differences are going to be large, in which case it might make more sense to go to a higher ranked program even if tuition is higher. I’m coming from an industry where pedigree is very important, so perhaps I’m a little paranoid, but I don’t know how things work in tech.
- How about BA vs BS, for software development? Is it worth the extra semester to get the BS?
2. Master’s programs. Most CS programs won’t accept students without an undergrad CS or related degree, which I don’t have. Here are three that I have found:
Masters in Computer Science at UChicago
MCIT at UPenn
MSIT at Carnegie Mellon
Only the first seems to be a “pure” CS degree; the last seems more geared towards IT, although it has great placement stats. I’m not sure whether anyone will be familiar with these programs, but if so, how would this compare to getting a second BS?
Another option would be to complete the prerequisites for a Master’s as an extension student at my undergraduate college, then apply for admissions to a Master’s program. I’m not sure if a Master’s degree is preferable to a bachelors for an entry-level software development job, though.
3. Finally, option three: Self-teach myself programming, get involved in some open-source projects, then apply for jobs on that basis. Inspired by this post
. Frankly, I don’t know how to compare this option with the others. While it makes sense to build relevant, applicable skills, I feel like I would be missing some of the formal structure that a CS program would provide. I don’t really know, though, whether the stuff you learn at school is stuff you really need to know in the real world, or just part of the program. From a monetary perspective, I'd also guess that starting salary would be substantially higher for someone with a degree in computer science and thus worth the investment...but I don't really know.
Any advice is greatly appreciated.