What's the best way to get a job in software development with no previous experience?
December 29, 2011 1:55 PM   Subscribe

What's the best way to get a job in software development with no previous experience? More details inside..

I'm posting this semi-on behalf of a friend.

A friend of mine graduated from college four years ago with a degree in biology. After working in a field for some time, he decided that he didn't want to do that anymore, and has recently decided that he wants to be a software developer. I'm in the same field so I've been trying to help him along as best I can. I started working in development right after school, so I've got years of experience already; by comparison, my friend has exactly zero professional development experience. (He did a small private site for a family member.)

He's worked with a recruiter or two that got him a few interviews that never panned out, presumably because of his lack of work experience. He's in a major US city that has a huge amount of software companies, so it's not like there aren't jobs available. I guess I'm just trying to point my friend in the right direction, but I don't know how to actually do that. So my question is, how does one get a job in software development with basically no experience? What are some ways in which he can build legitimate experience on his own, beyond just mentioning that he's tinkered on his own with something? Are freelancing sites like oDesk and elance really the only option here?
posted by gchucky to Work & Money (18 answers total) 8 users marked this as a favorite
Can he actually program? What makes him think he's worth hiring? I think it's optimistic to say that his interviews didn't on out "for lack of work experience". Maybe he can't interview well, or doesn't know what they were asking about. If he got to the interview stage he's checked the necessary paperwork boxes, so that isn't the barrier. He should do some fake interviews, with you or your more experienced friends, and might get some good feedback from that.
posted by jacalata at 2:11 PM on December 29, 2011 [1 favorite]

He's going to need to be able to pass an interview.

Coding a web site ... Well, that can (charitably) mean a lot of different things.
posted by rr at 2:18 PM on December 29, 2011 [1 favorite]

He should probably start by narrowing his focus to a particular technology stack. Rails, PHP, .NET, whatever fits the bill of being both in demand and interesting. Once that's done, take a few courses, look for some sort of certification if possible. These things are not meaningful once you've started your career but it might be the missing ingredient for getting an entry level job.
posted by feloniousmonk at 2:21 PM on December 29, 2011 [2 favorites]

Sorry, to clarify some more: your question gives me the impression that he cannot actually program, and that his claim to any experience is 'he built a website for a family member', which could mean 'knows how to install wordpress'. If this is the case, then he probably can't get a job as a software developer because he can't develop software, and there aren't many places that hire people who've never done it. His immediate problem is then 'how does one learn to be a software developer'.

This may be a misreading, but it is still important to know where he is now before anyone can tell him what he should do next. Has he heard of data structures? Has he ever worked with source control? Does he contribute to open source, or has he ever worked on a software project with another person? Does he actually mean he wants to be a web developer? What languages/frameworks is he familiar with?
posted by jacalata at 2:24 PM on December 29, 2011 [3 favorites]

Don't assume that there are many jobs in your area just because there are many software companies. Especially absolute beginner entry-level jobs. A few interviews (2? 3?) is not that many. If he's dead-set on software dev, he needs to cast net wider to other cities.

If he hasn't already, he needs to start focusing on programming as a hobby - working on personal projects, taking on freelance gigs, classes, online tutorials, whatever - and begin building up a solid skill set and sellable resume/portfolio.
posted by gnutron at 2:25 PM on December 29, 2011 [1 favorite]

These days a lot of people are creating project on GitHub or similar and pointing prospective employers to those.
posted by rhizome at 3:09 PM on December 29, 2011

He has no formal education, so he needs to prove that he has the equivalent skills. This is demonstrated via previous work experience (he has none) and personal projects (a la Github as mentioned earlier).

Find an area/technology of interest, then find open source projects and start contributing. A lot. Fix bugs, add features, clean up documentation, and LEARN. Read the project's source to see how/what was done, look at the checkin history to see why it was done. Participate in the forums.

This is a poor substitute for real work, but it's the best he can do right now. As for real work, don't aim for a software development position, that's a high bar. Look for support engineer, testing, and QA roles, the bar is lower/different and he'll still gain good experience that will help him rise to the software development role.

A hiring manager is not only looking for software skills, but also project management skills - knowing how to code is worthless if can't deliver it.

Finally, DOES he know how to code? I mean beyond for loops and class declarations. Does he know how to design applications (OOP and otherwise), can he discuss the pros/cons of various data structures and algorithms, does he have knowledge of more than one language? Does he know any compiled languages, or only scripting languages? Can he calculate complexity, memory usage, network I/O?

You need to have an honest talk with him to evaluate his actual skill level - you need to interview him, and then give him feedback on what he's lacking so he can improve.

I have a math degree originally, and got hired as a support engineer with my limited programming knowledge. Four years later I finally made it as a software developer; it's possible to make the jump but it's not going to be quick or easy.

p.s. Why does he want to be a software developer? The money? The challenge? The employability? The women?
posted by jpeacock at 3:27 PM on December 29, 2011 [1 favorite]

Response by poster: To clarify a few points: he's focused on PHP, but has touched Python a bit. He can program decently well for someone with no formal experience. He knows the concepts behind OO and such, has a grasp on databases, and is actually pretty good at frontend work. (He draws on the side, does photography, etc.) He's learning git now, but hasn't done any open source work. Basically he's at the level that I'd expect from someone who, say, minored in computer science at a university.

I guess my question from here is, can you really go into an interview and say, "No, I've got no formal education - but here's some code that I've written. I used X, Y and Z to do it" and really get a position over someone who has gone through the rigors of a university degree?
posted by gchucky at 4:36 PM on December 29, 2011

I know people who got started that way, so it's possible, but that was also a long time ago. I think today it's still possible but as the industry matures, it changes the types of companies willing to hire someone like this. The last real company I worked at hired people that met this description. The positions will inevitably be very low paid and essentially one notch above an intern, and maybe in some cases where they actually do have interns, below that. It's going to be a long hard road to get to the point where he could get a job that doesn't consist of doing whatever everyone else doesn't want to be bothered to do.

That said, I don't mean to discourage your friend. It's certainly possible. If you're in a city with an established tech industry, I wouldn't bother with the big boys. I think the most type of business most likely to hire someone in this situation is either a small startup looking for someone who's willing to do literally anything to help pick up slack for the founders or maybe an interactive agency who is looking for someone to convert designs to HTML.

Most of the people I know who went this route started at agencies doing HTML wrangling stuff. It's not an awesome job but it's possible.

Lack of credentials per se is not a road block though, it's all about demonstrable capability.
posted by feloniousmonk at 5:01 PM on December 29, 2011

It's entirely possible to get programming jobs without a degree, especially at smaller companies and for contract work.* (Lately, I've been throwing out resumes with only degrees but no experience. I've been horrified too often by the work that only a CS degree has provided.)

But you must must be able to show their work if they want a chance at it. Here are a few ideas. The more of these the better:

- GitHub resume. Let me look at your code–-And your documentation. It doesn't have to be the cleanest code in the world, but it needs to be readable. And it lets me see what kind of problems you like to solve.

- Link to StackOverflow account. I want to see what kind of questions you're asking and what kind of questions you're answering. How a person answers questions is also incredibly valuable. Are you a snob or are you gracious? Contentious or generous?

- Open Source software contributions. You don't need a lot of contributions but if you've contributed a feature or fixed a bug in software that I use, you're on the top of the pile.

- Blog. Do you love programming? Love solving problems or working in a specific environment or with a specific toolset? Blog about it. If you're passionate enough to go and chase down problems on your own I want to get a closer look at you. In once case I found out I was interviewing someone who's blog I had read before.

- Cheat Sheets and quick references. Research a list of common problems and solutions in a niche and post 'em on your site. I know someone who gets headhunted regularly because he simply posted a quick FAQ on HTML5 audio.

*It somewhat depends where you are. If you're near Silicon Valley right now and you can't find a job you're probably not trying hard enough.
posted by Ookseer at 7:25 PM on December 29, 2011 [7 favorites]

I am a professional software developer, and I don't have a CS degree, although I did study CS in college (I have most of a CS degree by courses completed).

If he's getting interviews (which you say he is), then he's not failing for lack of experience, but lack of skill. If a company's willing to bring you in to interview after seeing your resume, then the content of your resume, which would indicate your lack of experience, is not the blocker, or they wouldn't bring you in.

Could he answer the following interview question?
A) Describe to me what a linked list is.
B) Implement "insert" for a linked list.
C) Assuming your list is a list of integers, implement "getListTotal()" that returns the sum of all the integers in the list.
D) Do part C again, but recursively (or iteratively, if the original answer was recursive).

This is a real interview question that I have been given, it is not a particularly difficult question. It is the type of thing he'll have to be able to answer to get jobs in this field.

Really, software companies care a lot more about experience than degrees. I could get an interview pretty much anywhere probably, and I don't have a degree, but do have a dozen years of experience. Once you've gotten an interview, your qualifications don't matter anymore, just your interview performance. I actually just accepted a new job recently, and so the interview process is fresh in my mind, and it can be difficult. An interview at Google, for example, is essentially a five hour comprehensive final exam for a whole Computer Science program. Being moderately passable at PHP does you little good, especially since (in Google's case) they're going to ask you to work in C++ or Java anyway (I didn't get an offer from Google).

Also, I live in the San Francisco area, and so that's me benchmark for "lots of software companies". If he's somewhere else, just say the actual metro area so that we know what we're dealing with.
posted by tylerkaraszewski at 8:41 PM on December 29, 2011

The above advice is correct, to be sure, but also: don't forget to network! I am 10 weeks into a new career in software development, with no CS degree and very little prior work experience in development.

I met my current manager through a local Python interest group, and he looked at some code I'd thrown on Github. He pushed hard for his company to hire me despite my lack of experience, and gave me my big break, so to speak. My interest in the community group indicated a kind of passion that not everyone with a CS degree happens to have; and while I certainly have a lot to learn, my manager believed strongly enough that I had the chops for it, that he not only convinced his company to hire me, but also persuaded me to leave my previous career so that I could give this a try -- and so far, I'm really glad he did!

At this stage, my job is sort of like an apprenticeship, and I'm learning SO MUCH now that I can spend a full work day thinking about code, and of course I'm building up experience as I go. The best way to get better is by working on projects and making things (and then throwing them on GitHub!)
posted by estherbester at 9:19 PM on December 29, 2011 [1 favorite]

Response by poster: First off, he's in Seattle. Certainly the companies up there already have a decent flow of people from schools like UW, which is why I'm thinking he's at a disadvantage right off the bad.

I hadn't really considered the possibility that he's not doing well at interviewing. I'm not really good at judging that sort of thing, I guess. He's very articulate in social and academic situations, but maybe not when it comes to interviews..
posted by gchucky at 10:10 PM on December 29, 2011

I would advise him to consider obtaining proficiency with .NET or some other Microsoft-oriented stack (not to derail, but anything associated with Azure, which includes stuff like Node.js). Of course there are other companies in Seattle, but the MS family tree is pretty dominant and a lot of the smaller companies are going to have former employees or other ties.

It's hard to say whether it's an interview thing or not. The bar for getting an interview if you come in through a recruiter is very low sometimes, in some cases it's even automatic. Is he making it past phone screens? Since a recruiter has been involved I would also be wary of them misrepresenting experience or skill set. I probably would avoid recruiters unless there's a pre-existing personal relationship.
posted by feloniousmonk at 10:35 PM on December 29, 2011

With his background and the current labor market, he would be lucky to get a low paid junior web developer job, and he will have trouble getting new jobs until he has 10 to 15 years of experience.

Programmers in general are ten-a-penny, but programmers with domain knowledge in a difficult science like biology are much harder to find. I'd advise him to use his biology knowledge to get a job in something like Bioinformatics. the best way of doing this, if he's willing to spend a little more time in school, he should get a Bioinformatics Masters degree.
posted by monotreme at 11:21 PM on December 29, 2011

How well does he know the field of study? If he can find a scratch to itch and build a software tool that is useful in the field of Biology he may have a platform to pitch himself in that domain. It is entirely possible to get a career in programming with out formal training. I know successful programmers with degrees in humanities and plenty who didn't go to college (as well as unsuccessful ones who did).
posted by dgran at 5:57 AM on December 30, 2011

It is possible to get a job w/o an education. You need a portfolio of real work though. Get an account on github, fork an existing project of interest, and start working on it and feeding them patches.

It's like "unpaid interning" at other white collar jobs. Not glamorous but it's how you learn your way around.

Also work through the exercises of a basic CS curriculum as found online. You have to know data structures and algorithms. At least the 1st + 2nd year versions.
posted by ead at 8:04 AM on December 30, 2011

gchucky: "I guess my question from here is, can you really go into an interview and say, "No, I've got no formal education - but here's some code that I've written. I used X, Y and Z to do it" and really get a position over someone who has gone through the rigors of a university degree?"

I've done it. The problem is, you can give a fantastic interview, but if your skills aren't up to the level that the company is expecting, a lot of stress is sure to follow. It helps a lot to be an expert in a domain that the other developers at the company aren't.
posted by klanawa at 12:27 PM on December 30, 2011

« Older The Thick of My Life   |   How can I get my sex drive back? Newer »
This thread is closed to new comments.