CS friends: please give me career advice!
Mar. 25th, 2013 05:06 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Wow, it's been so long since I've LJed, I had to hunt around for the "post" link!
So anyway, I'd really appreciate some input from my CS-y friends. You may or may not know that I've been using the opportunity of Zoe starting part-time preschool to effect a significant career change. I've had regrets for a long time about going into the social sciences, and figured this was a good chance to explore other options. After taking a bunch of MOOCs, I've decided that I really like programming and would like to become a programmer of some type. (No, I don't have much more of a career goal than that at this point.)
The question is, what's the best way to do that? The MOOCs I've been taking have been much higher calibre than I imagined possible, but I'm not entirely convinced I can MOOC my way to a new career. Here are the options I've come up with.
It may seem like it doesn't matter which of the above I'm aiming toward, since I should take the same next steps either way (learn C, take systems, take integral calc). However, it does affect the timing. If I go with the aggressive schedule, I have about six weeks to learn C and convince Kesden to let me take Systems this summer so that I can get a CMU grade before application season. If I go with the leisurely schedule, I'd probably take Coursera's Systems Class, which is $7500 cheaper but won't give CMU anything to evaluate me with. But which path is better depends on things I can't know, like whether grades or a portfolio are a better way to woo an admissions committee.
So, I would appreciate any thoughts my friends might have on what path you'd choose if you were me, or if nothing else what questions you'd be asking yourself to figure out what you should do. There may be other obvious options I'm not considering, too (like a master's in something other than straight CS?), so let me know if any of those come to mind.
If you want to read more about where I am so far before forming an opinion, the below catalogs the classes I've taken so far and the ones I think I still need to take.
(Awkward but probably necessary background: I got A's in all the classes listed above, except I'm on track for a high B in algo. And I'm pretty sure I can rock the GREs; my scores have expired, but I have previously gotten 800 quant/800 analytical and 790 quant/6 analytical. So I think my grad school applications would look very thin on background, but what IS there should look promising.)
So anyway, I'd really appreciate some input from my CS-y friends. You may or may not know that I've been using the opportunity of Zoe starting part-time preschool to effect a significant career change. I've had regrets for a long time about going into the social sciences, and figured this was a good chance to explore other options. After taking a bunch of MOOCs, I've decided that I really like programming and would like to become a programmer of some type. (No, I don't have much more of a career goal than that at this point.)
The question is, what's the best way to do that? The MOOCs I've been taking have been much higher calibre than I imagined possible, but I'm not entirely convinced I can MOOC my way to a new career. Here are the options I've come up with.
- Try to learn everything from MOOCs. It's certainly controversial to suggest that a MOOC education could replace a university education, but Coursera and Udacity do have classes in pretty much everything in the CS curriculum. (See below for what classes I've already taken/plan to take.)
Pros: Cheap, flexible, and I know the classes are high-quality. (And hey, if jcreed is enjoying his edX class right now, I can be sure there are good classes at every level, not just introductory ones.)
Cons: I can't prove I've learned anything. How hard will it be to get a decent job with no degree? (Coursera may eventually have some sort of certification process, which may or may not be helpful.) Also, even if I can replicate the coursework, Coursera doesn't give me access to internships, which I think is an important part of CS curricula. - Try to get a master's from a school that teaches CS to people with non-CS backgrounds. Some universities (e.g., Mills College) have programs intended for career-changers, and some (e.g., Pitt) provisionally admit non-CS people contingent on their completing the classes they haven't already.
Pros: Good compromise option: more "legit" than MOOC learning, with presumably more internship and job prospects -- but easier to get into than top-tier universities.
Cons: It would be distressing to abandon amazing, free MOOCs in favor of paid classes that aren't top-notch. I took mediocre CS classes as an undergrad, and I don't want to do that again. - Try to get a master's from a top-notch school. CMU, Stanford and Illinois (bonus: online!) have master's programs that are at least in theory open to people without a bachelor's in CS.
Pros: Get to learn cool stuff in depth from smart people. This is definitely the most appealing option if it's plausible.
Cons: Persuading a good school to let me in based on MOOC accomplishments may be even harder than convincing a good employer to hire me based on MOOC accomplishments! Also, freaking expensive (but may pay for itself if it enables a better career).
And, if I'm working toward a grad school that requires some CS background, I have two sub-options: - Aggressive plan: If I need to take around eight more classes before I'd be ready for master's level classes (see below), I could easily do that by fall 2014. However, that would mean spending all my available time on classes, with no time for side projects. Also, I'm uncertain of my ability to convince an admissions committee that I'm worth admitting by this Christmas.
- Leisurely plan: I could take more time and plan to apply in fall 2015, which would give me more time to work on open-source or other projects and be able to submit a portfolio instead of just a few grades. That's a lot less stressful to contemplate, but it also means not getting a real job till I'm freaking 39.
It may seem like it doesn't matter which of the above I'm aiming toward, since I should take the same next steps either way (learn C, take systems, take integral calc). However, it does affect the timing. If I go with the aggressive schedule, I have about six weeks to learn C and convince Kesden to let me take Systems this summer so that I can get a CMU grade before application season. If I go with the leisurely schedule, I'd probably take Coursera's Systems Class, which is $7500 cheaper but won't give CMU anything to evaluate me with. But which path is better depends on things I can't know, like whether grades or a portfolio are a better way to woo an admissions committee.
So, I would appreciate any thoughts my friends might have on what path you'd choose if you were me, or if nothing else what questions you'd be asking yourself to figure out what you should do. There may be other obvious options I'm not considering, too (like a master's in something other than straight CS?), so let me know if any of those come to mind.
If you want to read more about where I am so far before forming an opinion, the below catalogs the classes I've taken so far and the ones I think I still need to take.
Relevant classes so far: | Still need to take (open for revision): |
Actual classes * Intro to CS, in C++ (forever ago) * Data Structures, in C++ (forever ago) * Prob and Stats, crappy non-calc-based edition * Logic and Proofs (hi Doug!) * Differential Calculus MOOC (no real evidence of grade) * MIT's Intro to Programming * UW's Programming Languages * Princeton's Algo class (Sedgewick!) (in progress) |
* a systems class * a theory class * something like OS * integral calc (planned for this summer) * another semester or two of calc? * linear algebra * calc-based prob & stats * a bunch of applications classes |
(Awkward but probably necessary background: I got A's in all the classes listed above, except I'm on track for a high B in algo. And I'm pretty sure I can rock the GREs; my scores have expired, but I have previously gotten 800 quant/800 analytical and 790 quant/6 analytical. So I think my grad school applications would look very thin on background, but what IS there should look promising.)
no subject
Date: 2013-04-09 10:42 pm (UTC)If your goal is "get a cool programming job as soon as possible" and you're willing to move to NYC for three months, I would look hard at Hacker School. They seem like the real deal, and the only prerequisite is that you have to enjoy programming. (Edit: Oh, Akiva already mentioned this. I second him, then.)
master's programs that are at least in theory open to people without a bachelor's in CS
My understanding is that it would be very odd for a grad CS program to rule out applicants solely on the basis of them not having a bachelor's degree in CS. My school, for instance, says, "We do not require a bachelor’s degree in computer science, informatics, or a related field, but we are looking for background in key areas. For example, for computer science degrees, you should have had courses in data structures, machine organization and assembly language, and discrete structures." When you get there, people will expect you to have equivalent background to someone with a bachelor's degree, but how you actually came to have it doesn't matter.
There also exist programs like this one that are specifically intended for people without prior formal education in CS, and are furthermore designed so that you can continue working a 9-to-5 job while working on the degree (classes are held in the evening).
I will warn you, though, that in many cases, if you attend a master's program at a research university, whether it's the evening-classes kind or the classes-during-the-day kind, then a lot of people at the university are going to treat you like dirt. Master's programs bring in a lot of money for the university, so they admit (1) more students than the staff and faculty can reasonably handle, and (2) students who really aren't prepared to be there. So you're going to be dealing all the time with overworked staff and faculty who will distrust and assume the worst of you -- they will assume that you're going to plagiarize, for instance. For example, here's the mandatory introductory course for MS CS students at Northeastern. If you were taking that course, would you get the sense that the instructor trusted you at all?
Edit: Oh, one other thing:
If I need to take around eight more classes before I'd be ready for master's level classes (see below)
I only took eight CS classes total when I was in undergrad, and I was still admitted to a CS Ph.D. program. Although I guess I also took four math classes. But I never took any prob/stats, or any systems course other than OS, and I only took two semesters of calc. I strongly second Chris's recommendation to take less calc and more discrete math -- perhaps something like this.
no subject
Date: 2013-04-10 01:47 am (UTC)I've looked at the websites of lots of "programming boot camp" type things, but Hacker School is the only one that real programmers seem to tell me about. I may have to look into how I could rearrange life to make that possible sometime. The Chicago program sounds intriguing, too, but I am somewhat geographically constrained by Google office locations.
I'm sort of hoping that good schools admit sketchy master's students because they need our tuition dollars... I think it's my only real shot at a good degree. ;-)