DEV Community

loading...

How to Get a Programming Job without a Degree

Erik Dietrich
Former software developer, architect, dev manager, CIO, and IT management consultant. Occasional writer. More than occasional remote business owner.
Originally published at daedtech.com ・7 min read

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.

Discussion (13)

Collapse
pachicodes profile image
Pachi 🪐 (she/her/ela)

Very good post, thank you. I had never thought about that, but the idea of making hiring me less risky makes a lot of sense! I already write, but I have to start doing more open source contributions!

Thanks again :)

Collapse
daedtech profile image
Erik Dietrich Author

Thanks for the note, and glad if it helped. Best of luck with finding that first gig!

(As an aside, I have a business that pairs dev community contributors with tech companies to write for their blogs. Feel free to DM me if you'd like to learn more about doing that as a side hustle.)

Collapse
pachicodes profile image
Pachi 🪐 (she/her/ela)

I am totally DMing you about that! Thanks!!!

Collapse
akinhwan profile image
Akinhwan • Edited

4 is a good point. I majored in film. Went to a UX Bootcamp, and was hired as a UX Designer. There I learned Javascript while getting paid. Caviat: I knew html/css since high school and was kind of coming full circle back to it. Still no CS degree, although I've had some brief periods where I felt imposter syndrome (namely only when prepping for coding interviews, not for day to day stuff).

I'd also recommend broadening your scope to Smaller businesses who still need digital technology/website devs. Not all companies you work at will have prestige, but they will take a chance on you and can lead to bigger better things if you so choose.

Collapse
daedtech profile image
Erik Dietrich Author

Applying to smaller businesses is a great point. (Personally, if I were still a workaday dev I'd have less than zero interest in FAANG companies and would almost exclusively want to work for smaller businesses, so it didn't occur to me to even make that distinction while writing.)

Collapse
stevematdavies profile image
Stephen Matthew Davies • Edited

Very Intersting read! I've been in Software for over 20 years, I have degrees but in nothing based in Computers / Engineering / Mathematics, in fact they are all Environmental Law related (including most of a PhD). I began in Ireland during the tech boom (Celtic Tiger) and have ended up the past 15 years in Finland, and I can say in that time, about 95% of all those people I encountered in my career, Software people, Agile Managers etc had almost no related edcucation in Software, and those that did found the degrees to be largley out of date by the time they left academia and entered the job market.

CS degrees, particularly in Finland, at least previously, tended to focus on the engineering and networking side of things, there was very little coding. In fact, a friend of mine undertook a Bachelors in CS here (a rather less common degree, most are Masters) and he had only 6 weeks of Java as the software aspect in the entire course! Wanting to go into software, he took a further Masters in Software Engineeering after, but still has trouble finding work as the time he had completed the course, technology had moved on somewhat.

I am entirely self taught, I threw in a few bootcamps when I could, but I landed my first junior role many moons ago on the back of a self studied Java course, and a bootcamp, and now I am a senior Software developer with a range of languages and skills under my belt, no official cs education.

Things do seem to be progressing though, the advent of the internet, online education and the sheer range of technology needs (such as the rise of AI) mean that several colleges and instiutions here are pushing a more softwatre centric curriculum in CS and other courses, and there is a greater structure for industry involvement in the Universities, giving students some experience of real life work in actual real projects and research.

One thing that pushes this was the Finnish Governments move to reduce public funding for universities and encourage better industry ties for funding, this has led to some great interactions, which is great for making CS and other academic study more relevant and up tpo date with technology, and to keep industry in touch with the next generation of software developers and engineers.

Now I am seeing younger people coming into the industry with a far greater range of skills and knowledge than before which is pretty exciting.

Collapse
daedtech profile image
Erik Dietrich Author

The focus of CS degrees is an interesting topic. I feel like a lot of them are probably making concerted efforts to include more relevant/applicable coursework for actual work as a software engineer.

Personally, my bachelor's in CS (graduated in 2001) involved a lot of programming in C and C++ with a little assembly language. I remember projects that involved building lexers and parsers, implementing TCP/IP, implementing memory allocation and freeing, encryption algorithms -- stuff like that. So it was code-heavy, but not the kind of stuff you'd do in the real world, for the most part (too wheel-reinventing, with the exception of what we did for a database course I took).

By the time I got a master's (graduation 2011 or so, IIRC), there was at least available coursework that was specifically designed more to coincide with the corporate world. I took a couple of software engineering courses that touched on project management methodologies and code maintenance techniques/patterns, for instance. But it was still largely academic (with the code we'd write being the same).

With all of the years I spent in CS programs, it seemed like the main thrust was to give you the mathematical underpinnings of programming concepts. The merits of this approach are certainly up for debate, but I wonder if the pendulum can possibly swing much further as long as FAANG companies model their interivew process after my CS-451 Alogrithms midterm exam.

In other words, Silicon Valley seems to fetishize theoretical/non-practical knowledge into its qualification processes, which probably puts a natural governor on how practically useful CS degrees can make themselves. At least, as long as companies insist on conducting interviews this way.

Collapse
ianwijma profile image
Ian Wijma

Really interesting read. Even for people looking for a new job!
Cheers 🍻

Collapse
daedtech profile image
Erik Dietrich Author

Thanks for the kind words!

Collapse
joy3184 profile image
Elmacardor

Just going through the learning stage, I just started coding and I'll be doing my best to build up relationships from today.
Great write up

Collapse
daedtech profile image
Erik Dietrich Author

Thanks! And yeah, this is absolutely the best time to start. It looks like you're one step ahead of the game, too. Just being on a site like this and interacting with folks is a great start.

Collapse
mcnaveen profile image
MC Naveen

Nice Read Bro. 😍

Thanks for writing.

Collapse
daedtech profile image
Erik Dietrich Author

Thanks for the kind words -- glad you liked!