Stories about Software


How to Get a Programming Job without a Degree

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.

No Fields Found.
Newest Most Voted
Inline Feedbacks
View all comments
6 years ago

Nice article! I don’t have a degree and have writing code professionally for 17 years. I had to eat $#% for the first few years of my career and took a job that paid like garbage. That first job was an amazing experience. I have warm fuzzy memories of that job. So don’t over look a low paying job, think of the experience you will get. I would add one more thing to my list on how to get a job. As much as I try to avoid using industry jargon, it is helpful learning some terms. You may know… Read more »

Erik Dietrich
Erik Dietrich
6 years ago
Reply to  Jeremy

What were you doing for the first few years, prior to the job in question?

6 years ago
Reply to  Erik Dietrich

I was carrying luggage at a hotel. Ha. I was playing around with VB6/VBA in my spare time. Until I got my first software job making web apps (I think we called them web pages back in the early 2000s) with PHP and MySQL. I was the first hire at the company. I didn’t even know HTML at the time. Got paid like $9 a hour.

Mark Johnston
Mark Johnston
6 years ago

Great post, as always, Erik! I also have a non-CS degree (music) and I’ve been a developer for 18+ years. One thing I’ve found helpful in the past was putting together a professional portfolio, similar to what an artist or photographer would show potential clients. Since the bulk of my work lives behind corporate firewalls, I’ve summarized a few key projects, showing both technical and business value. Passing out a nicely-bound copy of the portfolio during my last in-person interview seemed to make a big impression – I got the job at a company that is VERY degree-focused. Granted, Erik’s… Read more »

Erik Dietrich
Erik Dietrich
6 years ago
Reply to  Mark Johnston

I’d say that certainly makes sense, particularly if you have a lot of experience that employers are twitchy about you describing.

Phil Vuollet
Phil Vuollet
6 years ago

I’ve heard something like 40% non-CS degrees, but that was largely anecdotal. My undergrad is a BA in Audio Arts and Acoustics. There are a lot of musical people in software BTW (@Mark). Got into the development as a second career. I built a couple web sites pro-bono, took a couple core CS courses to lay a foundation and got a first opening via a non-programmer friend. It’s more about having drive and passion than being 17 years old and picking something to study that pays relatively well. Doesn’t matter how you get there, just as long as you have… Read more »

Damien L.
Damien L.
6 years ago

I’m not in the U.S. so I don’t know how things play out there, but in Europe I did a biology degree => development career switch almost 10 years ago. I did already know programming, but chose to take some form of accelerated training (different tech stack from what I knew, certification delivered after an internship) This has been a great choice, opening the doors of interviews right away. You have to find the right “accelerator” though, as their reputation vary. And you have to be able to afford it. (where I live we have some form of “training rights”… Read more »

Damien L.
Damien L.
6 years ago
Reply to  Erik Dietrich

Hum, we have a different set of options. When working, part of our salary goes to an unemployment fund, which feeds a national public agency. This agency has several roles, basic one is to provide you with a salary in case of layoff (if you quit, it’s different), and it’s supposed to help you find a job back. Depending on your situation (age, number of years you’ve worked, resources you own) they provide different services, one of them being training with government-approved training company. In that case the courses are free. While we work, we also have an account where… Read more »