Career change to programming

This is an Ask a Geek Feminist question for our commenters. This is the last post from round 4. Round 5 will run in the second half of 2011.

I have a 24 year old niece who is currently working as a fashion designer but is thinking about changing careers and getting a Computer Science degree. After two years in her job she has discovered that she doesn’t fit in very well with the culture or with her co-workers. She does really well with the graphic design programs (while all her co-workers are computer phobic), and she took some programming classes back in high school, so I think she can do it.

Since I’m an old geek feminist myself I’d like to encourage her in whatever way I can. Unfortunately, I’ve been unable to work for more than 10 years due to health issues so my knowledge of what skills are needed, and what job opportunities exist out there, is pretty outdated. My question is this (and I hope it can be phrased in a way that provides general help for anyone in this situation, not just my niece) -

Any advice on how to make this career change easier? She’s looking at going back to get a master’s in computer science (she would have to take a lot of basic math/science first) but I’d love to hear other suggestions. Are there informal venues where she could learn? Conferences or clubs or something like that? What are the best online places where newbies can hang out and learn? What programming projects could a beginner work on to get some hands-on experience that would make them more employable? What would help to give her confidence in her ability?

For example, back when I got my own degree (1978–1982), I worked at several different programming jobs on campus, mostly to pay my way through school, but it turned out that the work experience was invaluable when I started looking for a full-time job. Is this type of thing still relevant or is it hopelessly old fashioned?

8 thoughts on “Career change to programming

  1. the scrum mistress

    Does she want to be a developer/programmer or a computer scientist?

    I made a very early career change from Art History into information technology and web development. If she wants to go deep into the subject then there may be some mileage in a computer science degree but if she wants to get started in infotech or application development then I would suggest that such a degree (especially a masters) would be much to much.

    There are many dimploma courses that do not require the heavy grounding in math that a compsci degree would entail, though a sound foundation in the basics of logic is helpful. This was the option I went for. At 9 months it got me up and running and into a job in the industry fairly quickly.

    Most of the developers I work with do not have a formal degree in compsci but rather a vocational background. A degree is four or five years and at the end of it you are still entry level. Four or five years on the job makes you an intermediate to senior developer. Start with the graphic design in a web dev house and work up from there. The sooner she gets into a job in the sector the better.

    Pick a language, get a book, and go through the lessons. Or take some night courses. That should give someone with a lot of drive enough to interview for entry level positions.

    Good luck with the change. I know it is one of the best decisions I ever made.

  2. enne

    I would really suggest that they get involved in an open source project that they find interesting. Aside from just being a great learning experience, it makes good resume bullet points, provides references, and gives documentable evidence of work quality. For projects that have commercial companies sponsoring folks working on it, it can also provide job opportunities.

    Aaron Boodman makes a lot of similar suggestions here about working on the Chrome browser: http://www.aaronboodman.com/2010/10/wherein-i-help-you-get-good-job.html

  3. wren ng thornton

    If she’s indeed interested in going into computer science (cf. above), one good place to hang out is in the Haskell community. There are a lot of smart folks in the community, and many of them are prolific sharers of wisdom (e.g., Planet Haskell, Haskell Cafe). We also have an IRC channel which is renowned for actually being helpful, on-topic, and welcoming of newcomers. The Haskell community tends towards the math-/theory-heavy end of CS, which is good for folks interested in learning the math since a lot of the blogs are geared towards “how non-mathematicians can understand X” or on “how theory applies to designing web-servers (or similar)”. And, of course, Haskell itself is becoming quite a marketable skill these days.

    Depending on where she’s located, she may also want to check out the local college to see what sort of non-curricular opportunities it offers. For example, at Portland State there’s the CAT which is in charge of system administration for all the CS, EE, ECE,… departments. Each year they offer “the Braindump”— a series of presentations explaining all the stuff that computer geeks should know that CS programs never teach. Things like how X11 and monitors actually work, or how networking, routing, and email works, or how tech companies are structured (e.g., the difference between CTOs and CIOs, the difference between customer support and tech support), or how to write shell scripts and use the command line effectively.

    Also, depending on how much experience she has with computers already, she should seriously consider trying to test out of any prerequisites she thinks she can. CS programs tend to be pretty linearly structured in undergrad, and masters programs tend to be suspicious of people transferring in without a BS in CS. When I started my masters I’d been programming for years already, and I was able to use that to get out of a lot of the prereqs they wanted before accepting me into the MS program. She should definitely talk to the Graduate Coordinator about her background and try to figure out what kind of background/prereqs the department really cares about vs which ones are just bureaucratic.

  4. Mike H

    So I’d like to come out in favor of the CS degree – I’m an ex-web developer turned CS educator. I was employed at Amazon, and I can definitely tell you that at places like Amazon, Google and Microsoft, they are only looking at folks with CS degrees (and generally at the top 5-10% of the class…as measured by performance in programming oriented interviews). I’m not sure if that’s where you’re niece is aiming, but even if you’re looking at a level down I think a CS degree is some of the best programming training you can get.

    For someone in your niece’s situation, I’d be concerned about a couple things:
    a. So schools can be very different when it comes to a CS masters degree. In particular, many places offer a small number of super-accelerated courses that attempt to combine the 1st 2.5 years of a CS undergrad degree into 1 or 2 semesters and then try to shoe-horn students into the normal CS masters courses. The results are really high attrition and (I’m guessing) superficial knowledge of the subject matter.

    I’m guessing your niece is much more motivated than the average undergraduate, but I would definitely recommend a program that will allow her to take intro CS at a sane pace. Best to start slow and then you can always ramp up the difficultly later. I would even consider a 2nd bacheor’s degree…at least at amazon the MS was only worth a few thousand on your starting salary…a BS student who knows her stuff is a million times better than an MS who is shaky.
    b. At least at schools I’m familiar with, students are much more likely to fail Calculus II than their intro programming classes. So treat those required math and science courses with respect!

    Best wishes to your niece!

  5. Erik

    I think she should go for it! My mom did just this…. went back and got a Masters in Computer Science after having done her undergrad in linguistics. She was a bit older… around 40, I think… and had already had three kids. So it’s totally doable, and she’s a very well paid Sr. Software Engineer now, some 15-20 years later.

    She had to take a couple of undergrad computer science courses in order to get in to the program. The big takeaway I got from listening to her talk about her experiences was that she worked her butt off in classes, and it really paid off…. she impressed her professors enough that she got offered a Teaching Assistantship which helped financially, but also really helped her learn the material inside and out… she was eventually teaching entire classes I think.

    She also got involved with a research lab, which seemed like great experience. Programming robots. :) And she was able to get a good starting job pretty much straight out of the program, and just worked her way up. She had a family to support, so I’m sure that was a pretty strong incentive to go for it. And I think being a mom definitely helped with the time management and such.

    I’ll email her and see if she can post any tips…

  6. Medivh

    The most important thing to judge about one’s self before going into a programming job, from my perspective, is this:
    Do you love working out puzzles using only logic?

    This is supposedly what Job Interview 2.0 is all about. But the people who implemented it failed miserably in two ways. They forgot to test for programming aptitude (which can be learned), and they used lateral thinking puzzles (which don’t really test anything except your ability to google and remember trivia).

    Programming will become as much of a problem as fashion design if you don’t love using logic to solve puzzles. If your niece’s answer to the above question is “yes”, and she could envision herself still loving it in a decade? Programming is a good fit.

    Other aspects of IT that may not have been considered are: Testing, for the patient and stalwart; business analysis, for the social and understanding; and documenting/tech writing, for the precise and verbose. A BA role is especially handy for someone who isn’t a puzzle fanatic, as you still need the knowledge but don’t have to use it to solve logic puzzles all day. More social puzzles, such as “what does the client really want when they say they want x?”

    Please note: the culture of many IT-only shops is painfully bad. If the career-switch is purely about culture, your niece will want to stay away. If she’s set on some sort of techy career, it might be better to stick to big corporations with an IT department, as they tend to have better cultures. Not good, but better.

    As for what knowledge would be good going in, .NET is where most development is at now. Java is useful, but harder to get a job with (which I curse semiannually – Java is what I trained on), python is extremely useful and extremely easy to learn. C/C++ will not get you a job any more, but it will make sure that you know how to program if you learn it first. Pointers are getting more and more hidden, but you still need to know how they work to understand the difference between a reference and a shallow copy.

  7. takingitoutside

    It sounds like she needs to update some of her skills (one way or another) before jumping whole hog into a new career or degree, so I’d suggest checking out her local community college or state school. They tend to offer assorted CS certificates – web design, for example – that are sort of like mini-degrees. I started one at my local cc before I moved, and it was a great way to expand your skills while still working at your old job. The certificate I was working on took six or eight courses, and they offered multiple ways to take the courses. I opted for a compressed, two-day schedule: I showed up for five-six hours on two Saturdays for each course. The courses were offered regularly, and only some of them had to be done in a certain order, so when I decided that I needed a breather, I just took a break. Easy.

    It was also pretty cheap, and I learned a lot. Plus, it lets your niece acquire a qualification before she leaves her old job, a not-inconsiderable benefit in this economy. Finally, a fair proportion of cc professors in that field are also practitioners, which means they have plenty of real-world advice and connections. In contrast, if she goes for a certificate at a state school, she would be building a reputation with the professors who would be deciding whether to let her into the master’s program, which could help her a lot.

    One more suggestion – whatever subsection of CS your niece chooses, why not volunteer her services to local non-profits while she’s getting established? I have yet to meet a local non-profit that couldn’t use some free tech-related help, and they’d probably be more than willing to give recommendations in exchange for whatever she offered. Like getting involved in open source, it’s a way to build some credibility.

    Good luck!

  8. Jen

    I would reiterate what some others have already said along the lines of choosing between a programming career OR a computer science one. In the modern landscape, those are different things, especially considering the different aspects and forms of programming. As a former CS student who has a career as a web designer, I’m now moving into more web development. The current web dev field is a world apart from what is in most CS programs (not good or bad, just the way it is).

    If she is interested in jumping into work, I’ll pass along a bit of advice I recently received myself in my own move: just make something. Make an app, no matter how small or useless. Just find a project to use for practice and learning, and also so you have something to show when you want to seek out an entry-level job or internship.

    I’ll also mention that if she has a design sense, cultivating that in addition to programming skills would be very, very beneficial. The secret of what success I’ve had is being a well-rounded web designer who isn’t scared of development. Most people in the industry are only one or the other and a combination of the two is greatly valued.

Comments are closed.