My Dad was right.
January 22, 2010 5:33 AM   Subscribe

CareerSwitchFilter: I majored in Computer Science and Theater in college. I've been working in theater for the past two years and now want to switch to a career in the more lucrative major. Problem is I have no experience and no code samples, having deleted them all to make space on my computer for production photos. What's the best way to go about making this switch?

Take classes? Look up open source projects to join? Find an entry level tester job and work up from there? Any and all advice is appreciated. I did graduate with the B.S. in Computer Science, and I'm primarily a Java, C, C++ programmer, but have almost no real experience in a production environment. I've dabbled in PHP and mySQL. I'm also vaguly interested in web design and think that maybe all those design courses I took as a theater major might be helpful there. I guess my question is this, if I want to go any of these routes would I be better off taking a class or generating projects on my own to rebuild up a selection of code samples or joining an open source project?
posted by edbles to Work & Money (14 answers total) 6 users marked this as a favorite
 
Best answer: You say you are "primarily a Java, C, C++ programmer, but have almost no real experience in a production environment" -- sounds like you need experience, not a class.

Get eclipse, get maven, get git or svn, put together a build environment. Use maven to generate an appfuse project, either struts or wicket. This will give you a working web app, frontend, database, DAO layer, out of the box.

Now make your app do something interesting. This'll give you the confidence and experience to do well enough in an interview, so go interview for entry level coding positions.
posted by orthogonality at 5:40 AM on January 22, 2010 [2 favorites]


Best answer: And don't be surprised if you have to start in customer support and work your way up. A lot of shops have a "tactical" support position that require a fair amount of debugging and problem solving, and requires a fair amount of customer-facing activity.

Each shop is different, too, so most are used to retraining your raw knowledge to a local standard.

Other than coding skills, get used to things like POSIX tools, office tools like Excel (being able to massage data into graph form is an *invaluable* skill) and don't forget the "little" languages like Perl and Python. And get familiar with debuggers and IDEs. Even hard-core gear-heads don't use 10s of vi/Emacs windows anymore. Any real Java-based product is going to have a deep enough framework class structure that things like Eclipse are almost required, unless you want to waste your time instead of fixing bugs and adding features (or are *really* *really* good with vi/Emacs.)

And, for some sorts of shops, there is a skill that I have found will keep you employed when other stuff won't: being able to read and comprehend other people's code. Not just what it does, but what it is supposed to do, and what it might do in the future as things change. Software maintenance is what the majority of shops actually do, and having the skills to assist with that will keep you in demand.
posted by clvrmnky at 6:08 AM on January 22, 2010


What others are saying is probably right: You need to get up to speed on modern tools like Eclipse. Eclipse is just a development tool and it's pretty easy to use. A source control system, like SVN or Git are key as well.

Post the resume you have now on various jobs sites (like dice.com, monster, etc) and see what kind of contact you get. Recruiters still call me up out of the blue every six or seven months even though I haven't updated my online resume in years based on postings I made when I was looking for work.

Another thing, when you're interviewing, you want to make it sound like you're really passionate about CS. You don't sound that way here :) If you're being interviewed by someone who really likes programming they are going to worry if you don't enjoy doing it on your own that you only learned enough to pass your classes in school -- which isn't really enough (depending on what you're doing)
posted by delmoi at 6:30 AM on January 22, 2010 [1 favorite]


Delmoi makes a great point: there are thousands of people walking around with CS degrees they got because they thought it would be a nice safe career choice, even though they're not really into programming on a personal level.

These people don't get hired often, and when they do, they don't do very well, since more passionate programmers run circles around them.
posted by rokusan at 7:02 AM on January 22, 2010


Best answer: If you've deleted all your code samples, CODE MORE STUFF. Make something up, and write a program for it. It may sound like a pain in the ass, but not as much of a pain in the ass as being unemployed/underemployed.
posted by Jon_Evil at 7:09 AM on January 22, 2010


Best answer: You live in NYC? Here's what I would do: start up a project on my own, like everyone is suggesting, to brush up on skills and gain some confidence. Something you can show people would be great but you want to get those key skills (the language of course, but also Eclipse is good, and frankly if you can teach yourself basic unit testing that would go a LONG way). Then when you think you feel confident enough to start interviewing, see if you can get in with a recruiter/contracting firm that works with finance firms. They are absolutely desperate starving craving contractors right now, and judging the talent pool I have interviewed recently, if you are articulate and can hold up to writing a few lines of code in an interview you can probably find someone willing to hire you.
I make this offer occasionally on ask mefi and no one ever takes me up on it but: If you want help in this process, I am quite willing to offer it. Resume reviewing, interview help, possibly recruiter names. Memail me, for reals.
posted by ch1x0r at 7:17 AM on January 22, 2010


Don't mention to any prospective employer that you deleted your old code samples to make room for photos. (Because they'll think "didn't this person realize they could have compressed their code and stored 10 years worth of it in the space taken by a single photo?")
posted by BaxterG4 at 8:31 AM on January 22, 2010 [2 favorites]


(I didn't mean that to be snarky btw, just wanted to point it out as a red flag that would make people think "inexperience". Estimation and understanding of scale and when it's important is a big part of software engineering... people are highly valued who can see when the elegant way to write something is 1000 times slower but that it still runs in under a quarter-second (and, hell, it only gets run once a month) so there's absolutely no reason to write it the inelegant way.)
posted by BaxterG4 at 8:40 AM on January 22, 2010


I switched from working as a theater professional to being in a much more technical field. Aside from brushing up on Java or SQL. One important thing to remember is that you need to parse your theater experience into "real" work, whilst looking for new jobs. IE if you did production work, describe it as "working independently to bring key projects to completion under hard deadlines" acting: "working as part a of a diversely talented team" etc. I found this kind of deconstruction of theater tasks into core "work" elements helped a lot in interviews/resume.
As for the technical side of things I agree with others in that I would much rather hire someone who coded in their free time and created their own projects than someone who simply took classes. It shows a passion for the work that people want in an employee.
posted by French Fry at 9:21 AM on January 22, 2010


Does your theater group have any computer-related stuff - software for managing the front office, computerized light boards, whatever? Can you expand your theater job to include working/learning with these? That might be a small step in the right direction and would look good on the resume too.
posted by CathyG at 10:29 AM on January 22, 2010


Can you afford to take an internship this spring or summer? Lots of software companies pay very livable wages (even though it's lower than they'd pay a full-time newbie). I graduated in May '09 and I've seen a lot of classmates hired for internships based solely on their experience in classwork or in a 2-month research project with a professor.
posted by tantivy at 11:37 AM on January 22, 2010


Best answer: Don't waste your time with a course. I imagine there are some really good software engineering courses somewhere, but they won't be easy to find. Real world programming happens at a larger scale than is usually encountered in the classroom, and that makes all the difference. If you want a textbook, buy Code Complete 2.

It sounds been away from coding for a while, so I'd recommend starting by writing a program on your own. Something ambitious but not overwhelming. CathyG's advice to find something that "scratches an itch" for you professionally is excellent. As you're building it, learn to use tools like source control (Subversion is pretty standard) and an IDE like Xcode, Visual Studio or Eclipse. If the project starts to get too big, you can first write smaller programs to learn a specific technology ("how do I put together a GUI in .NET?", "how do store things into a database with this web framework?"). Expect to spend a lot of time reading about the libraries and tools you're using.

If your personal project is a success and demos well, it can be a real asset on your résumé. It helped me get my last job, when I didn't have much relevant professional experience in the area.

I think that once you've gotten back into the groove of programming, you can learn a lot from working on well-managed open source projects. It's less fun than writing projects from scratch, and it can be harder to describe your contributions, but it shows you can work collaboratively on a large codebase, which is what most real world employers want to see. (In fact, for many contributors to the biggest name projects the work is part of their day job.) Some projects have lists of small tasks newbies can help with, and everyone has a huge bug database that needs addressing. The tricky thing here is to understand the existing code well enough that your changes and fixes don't introduce new bugs.

If you do both these things (hell, either of these things) you'll be in better shape than most entry level CS grads and there'd be no need to take a QA job first, which might not help in any case.
posted by serathen at 11:43 AM on January 22, 2010


Expect to spend a lot of time reading about the libraries and tools you're using.
Oh, yes, this. If you aren't already super passionate about programming and are worried about potential stumbling blocks, this is an easy thing to get discouraged about. Don't sweat it if it takes you a while, especially when you're first starting up again.

Just FYI, it's somewhat common, but not every company will have QAs as a junior position. Sometimes it's a separate but roughly parallel track.
posted by tantivy at 6:53 PM on January 22, 2010


I second CathyG's suggestion. You'll have solved a real-world problem with not too much disruption to your daily life.

Oxford runs a part-time MSc in Software Engineering which is slanted towards the needs of real developers working in industry. (Whether you can get potential employers to believe this is another matter, but it is true.) You can do this by distance learning, travelling up for a week at a time, several times a year.
posted by tel3path at 10:36 AM on January 23, 2010


« Older How much to spend on baby shower hostess gifts...   |   Where to go in Seattle? Newer »
This thread is closed to new comments.