I originally posted this on my blog about a year and a half ago. If it's interesting to you, I post new content there roughly weekly.
This week's reader question Tuesday is a look at how to get a programming job without a degree. It's probably a good one for me to hold forth on.
In my book, Developer Hegemony, I argue that, in spite of my own two CS degrees, I probably wouldn't recommend that course of action to prospective programmers nowadays. It'd be hard to justify ROI on it, especially at expensive schools.
So if you don't get the degree, then what? Here's the reader question.
How do I get a job without a CS degree? The only entry level postings I see require a CS degree. When I look for how to get a job without a CS degree I see lots of information on education. They say to read books and write code and that's great.
I've done all that. I know how to code. Now where do I apply? I don't see anyone hiring entry level without a degree.
First Things First: Why Don't Companies Make This Hire?
You might think that companies would at least give you a crack at the entry level via the interview. You tell them you can code and you understand if they don't simply take your word for it.
Isn't that what the interview is for? To allow you to prove it? And, wouldn't this be doubly true since the demand for programmers far outpaces the supply?
This makes sense at sort of a macroeconomic level. But it actually breaks down a bit when you look at any individual company.
Yes, an individual company probably needs more programmers than it has at any given moment. And yes, the the interview process, theoretically, should give any potentially qualified candidates the chance to prove themselves.
But individual companies are optimizing far more to avoid false positives than they are false negatives.
Companies Avoid Brillant Paulas
The job interview is, frankly, a terrible way to find talent. It consists of strangers seeing how generous they can be with the truth without technically lying to each other followed by gut feels, snap impulses, and other assorted non-scientific things.
And, while all companies like to kid themselves into thinking they're good at this, on some level they know they aren't. They know that, for all of their efforts, they're going to whiff occasionally and hire a Paula.
Hiring Paula is embarrassing.
So the candidate search process has evolved to optimize to minimize complete whiffs and make them understandable if they happen. If you hire someone with 2 "senior software engineer" titles on his resume and 10 years of experience, how were you to know? Likewise, if you're hiring at the entry level, and you hire someone with a CS degree... how were you to know?
But if you hire someone with no experience and no degree and they turn out to be Paula, well, then you look pretty silly.
So our mission here today is to figure out you can minimize the degree to which hiring you could look silly. That's what gets you interviews and eventually offers.
1. Start by Contributing to Open Source (with an Eye Toward Networking)
The first one is the easiest thing to start doing now. Get yourself over to Github and find a project to start contributing to. Heck, find a bunch of them.
For the sake of this post, I'm going to take at face value the "I know how to code" in the reader question. That's great, but the key is proving this to prospective employers. A great way to start that is literally by demonstrating it in public for all to see.
But I'll add a slight twist to this.
As you start contributing to projects, pick ones that you think might have the highest leverage with your job search.
- Is this an active project with a bunch of contributors that currently work at companies?
- The kinds of companies you might like to work for?
If you contribute and get to know these folks, they can provide you with valuable introductions.
So find some people on Github that work at places you might want to work. And then prove to them that you know your stuff.
2. Build a Thing
Here's another form of social proof, albeit a more labor intensive one. Rather than simply contributing to others' projects, you could start one of your own.
This is definitely a longer play and will involve more effort on your end. If you build something that nobody notices or cares about, you're not going to be significantly better off than you are now. The existence of some code on Github isn't enough to make a prospective employer go digging through it.
But, if you manage to build something that people start downloading and using, that can change in a hurry. I would also recommend building something for other developers to use, such as some kind of API, library, or developer-focused product. This just maximizes the chance that the people you most want to impress will notice your project.
3. Blog about Programming
Another option at your disposal is to start some kind of programming blog. Perhaps you're building your project or contributing to open source, and you blog about lessons from doing that. Maybe you start a tips and tricks blog, or you deep dive into some tech or framework.
Whatever the case may be, the idea is to start building credible authority.
Like building an application or a library, this is a longer play. No prospective employer is going to say "you have no degree or experience, but, hey, you've got a blog, so come on in."
But if you share your posts and start to gain followers and traction, you might start developing relationships with folks that will put in a good word for you somewhere.
4. Apply for a "Programming-Adjacent" Gig
The last three items are all longer play, social proof kinds of options. Expect to be at them for months to start realizing returns.
This fourth item, on the other hand, is a more tangible and immediate play. You can get yourself a non-programming job that you think will let you transition into programming.
My first job (with a degree, I might add) was technically titled "SQA Engineer," which theoretically made me a tester. Within about a year or so, they changed my title to software engineer.
Here are a few kinds of jobs that might fit the bill.
- Tech support at a company with a software product
- Software tester
- Scrum master
- Data entry positions (letting you automate and showcase your value)
It's hard for me to give an exhaustive list or a specific play book because this will vary a lot by situation. But you get the idea.
Expand your search for potential jobs to include jobs that give you a crack at programming later.
5. Invest in a Code Academy
This last one is sort of an "all else fails" kind of effort. If you don't have time to play the long game of the first three items here, and you can't or don't want to find a programming adjacent gig, you can always enroll in an intensive boot camp/code academy kind of program.
Yeah, that'll sting if you already have the skills. But it also gets you some validation in a fraction of the time that a degree will take.
And you can make the best of it, too. Pick a tech stack different than the one(s) that you already know, and you'll at least be learning and broadening your skill set while you're there. And then you'll have that on your resume as well as the help of their job placement resources when you graduate.
It's About Relationships, Not Job Applications
Getting a programming job without a degree or past experience isn't easy because the industry interviews in such a way as to let other companies take the risk on newbies. So the key is making yourself less risky.
I've talked about a series of different tactics here. But, really, it all comes down to relationships. You can program, but no companies believe you or will take your word for it. A degree or past experience can stand in for that proof, but you have neither. So you need to get creative and build relationships with people who will vouch for you in the form of a referral or some sort of reference.
The sooner you get started on building those sorts of relationships, the sooner you'll be gainfully employed as a programmer.
If you'd like to ask a reader question, you can do so at the "ask me" page.