Remarkably, you don’t need a degree to become a Software Engineer, nor is there only one way to break into this career. With Software Engineering, as long as you can do the job, you have a good shot at getting an offer and making a great salary.
Most careers paths are the opposite. They require special certificates and years of school to earn the right to have a seat at the table. So why are things different when it comes to coding?
Essentially, it’s supply and demand. There is a much greater demand for Software Engineers in the world right now than there is supply. So companies let down restrictions (degree requirements) and they pay a premium to attract talent.
Additionally, for any tech company, Software Engineers are the backbone. They’re vital and essential to the core of their business.
Let’s use the analogy of a construction company to explain this. If you had an incredibly hard time finding construction workers (skilled labor) to build buildings, then your construction company couldn’t do construction. In response, you would not only raise the salaries of good construction workers (to attract talent) but you would get creative on how you might could broaden your search (say, for workers without “construction degrees”).
Additionally, you might even go a step further and help to cultivate new construction workers. You might create your own “construction worker apprenticeship” where you can farm new talent to make up for the small supply.
This is Software Engineering. Talk to any given Software Engineer and you might find an “off the wall” story of how they got there. For example, I recently met someone who started as an account as his company and started to learn to code on the side. Eventually they hired him as a Software Engineer.
This is an awesome story, but it’s probably not reproducible. In other words, it’s unlikely that you could go get a job at his company as an account and become a Software Engineer.
Therefore, we’ve decided to narrow down the “paths” to learning to code and becoming a Software Engineer to the 4 that are reproducible.
1. Self Taught
At face value, the “self taught” path sounds like the ultimate story - teach yourself to code, get a great high-paying job, and re-start your career. It’s ideal and it’s where we advise every to start, but it’s also the path with the least chance of success.
Why You Should Start Here
Regardless of what path you end up taking to become a Software Engineer, we advise that everyone start of by learning on their own and teaching themselves to code for a few reasons:
1. Free Resources
There are a ton of free online resources! Don’t pay someone to teach you something you could learn for free on you own. Unsure of where to start? Check out our guide here.
Quickly, the online resources won’t be enough and you’ll need additional help and direction, but if you will give you an opportunity to start for free on your own time.2. Prove You Enjoy It
- We believe that the secret sauce to understanding if someone is going to be a great Software Engineer is determining whether or not they enjoy coding. That might sound simplistic, but if you enjoy coding, the rest is sort of downhill, not to say that it won’t still be hard and frustrating at times.
When we’re screening candidates for our code school, we give them a coding challenge just to see what they have learned on their own.
Our assumption is, you will only know if you enjoy coding if you’ve tried it. And if you’re committed to figuring out if you enjoy, then you would have taken the initiative to go online, do some Google searches and start teaching yourself.
With Self Taught, You’ll Likely Fail
Unfortunately, your chances to succeed by only teaching yourself are slim. You will surely hear stories of this, but it’s because those stories are celebrated and amplified. There is rarely a reproducible model to follow. Here are the main pain points that come with learning to code on your own:
1. It Takes Too Much Time
We recommend that you spend 1000 hours coding before you’re ready to apply for jobs. For most, this is unattainable in 1 year while holding a job.
After years of teaching coding in 3 different tech cities and running Raleigh-Durham’s largest “Learn to Code” Meetup, I’ve only ever met 2 people that have learned to code on their own and got jobs afterward. Both of them had the following circumstances:
- They were single with no kids and very little commitments outside of learning to code.
- They had some kind of job flexibility where they could take entire seasons of time off work to learn coding or they could learn to code at their current job.
- It took them both over a year to get there and upwards of 20+ hours a week of coding.
All that to say, the likely scenario here is that you either burn out and give up, or you choose to head down a different path.
2. There’s No Clear Path
- They were single with no kids and very little commitments outside of learning to code.
Speaking of path, with the “self taught” path, there actually is no path. There’s an endless amount of advice on “how to self teach” and “what you should learn”, but as a beginner, you’ll ill-equipped to sort through this on your own to figure out which advice you should follow.
Because of this, at some point you need to create some kind of formal relationship with someone who knows what they’re talking about. Again, this can happen, but there is no formula for it and therefore it’s not reproducible.
Finding a mentor that is knowledgeable, knows how to teach, has experience in helping people learn well enough to find jobs and is committed to helping you for free on a regular basis is ideal, but improbable.
3. It’s Expensive
This is probably the most surprising aspect of all of this. Folks start down the “self teach” path because it’s “free”. But it’s obviously not free.
There is a cost to spending 1000 hours learning to code. There is a cost to starting, stopping, reversing, editing and learning how to learn how to code. There is a cost to forfeiting relationships and even your job when it comes to the “self teach” path.
2. Computer Science Degree
At the complete opposite of “self taught” is the full-on Computer Science degree. There is a ton of misinformation about Computer Science degrees, namely that they’re a direct path to Software Engineering. But let’s explore both sides of this path.
1. A Clear Path
Show up for class, sit down and have someone tell you what you should learn. The hard part of being “self taught” is that you not only have to learn how to code, but you have to learn how to teach yourself and how to learn. It’s great to have clarity, but depending on the actually program you take, you may not be as prepared to get a job as a Software Engineer as you might think.
There are still a few larger companies these days that require a Computer Science degree. Luckily there are becoming fewer and fewer, but having this degree just might get your foot in the door a bit easier than if you didn’t have it.
But like any degree, the prestige of it depends on the prestige of the university that awarded the degree.
Obviously having a degree doesn’t necessarily mean you can code, but it’s sure to give you some confidence which will in turn drive you to push forward.
But is it the degree that encourages someone to learn to code well and pursue jobs or is the person who loves to code that motivates them to get the degree? In the next section, you’ll find that Computer Science degrees have less to do with coding than one might think.
1. Computer Science is Inconvenient
Whether you’re 18 or 35, going to school full-time for 4 years is not convenient. Of all the paths listed here, this one is the most time-consuming. And for a Software Engineer, you’ll be learning a ton of things you don’t need.
For example, here is a list of Computer Science degree requirements from Stanford that you do not need to become a Software Engineer:
- 26 units of mathematics, including 3 calculus courses
- 11 units of physics
- Then you need to choose 1 of the following tracks, which may or may not relate to Software Engineering. These include:
- Artificial Intelligence
- Computer Engineering (Electrical Engineering for CS)
- Human-Computer Interaction (how people use computers)
- Information (managing and processing data)
- Systems (compilers and operating systems)
2. Computer Science is Expensive
According to http://www.collegecalc.org, “The average annual out-of-state cost for a bachelor program in Computer Science is $41,992 with an estimated average four year degree total cost of $167,968.”
And that’s tuition alone, not to mention the cost of living, loss of salary during this time and the interest you’ll be paying back on your loans for the next 10 or 20 years.
3. Computer Science Will Not Prepare You for a Job
Perhaps the most surprising part of all this is that not only will you be learning things you don’t need with a Computer Science degree, but you’ll also not be learning many of the things you do need to become a Software Engineer. There are a few reasons for this:
Computer Science is not Software Engineering
A Computer Science degree is the most direct path in college to becoming a Software Engineer, but Computer Science degree tracks were not made for Software Engineers. Here are a few roles you may qualify for with a Computer Science degree:
- IT Consultant
- Information Systems Manager
- Database Administrator
- Technical Writer
If you qualify for all of this, there is no way that your Computer Science education can be uniquely focused on learning all the cutting edge tools, technologies and workflows required to contribute to today’s tech companies.
Business Moves Faster than Education
The reality is, universities are large institutions which act like slow steering ships. They can’t possibly keep up with what’s happening in the business world, much less the tech world.
And that’s not what they’re trying to do either. They make no apologies about teaching what they teach. Computer Science degrees aim to give you a deep foundation on the theory of “Computer Science”.
You have a couple of options. Either teach yourself, or hope that the company is willing to teach you.
But beyond languages is the real world art of creating software which will look much different than a classroom. Likely you need to know things like how to collaborate on an Agile team, keep track of your version with Git and Github and how to scope out projects on a timeline.
These are things that are not learned in a Computer Science program.
You Won’t Code Very Much
Lastly, you just won’t code very much. We’ve spoken to dozens of Computer Science students that apply for our program who are a year or more into their Computer Science degree and they still haven’t written any code.
In fact, many of the engineering leaders on our board who have advanced Computer Science degrees from some of the nations top universities (such as Carnegie Mellon) have attested that our students spend more time coding in their 13 weeks with us than an average student will spend during the entirety of their Computer Science degree.
3. Community College
Some see “Community College” as a good option in-between getting a full on Computer Science degree and going the “self teach” route. It provides you will somewhat of a path, but without the commitment of a 4 year degree.
With Community College, you can pick and choose the courses you take and pay as you go in order to get your Associate's degree. With that, keep these two hidden truths in mind.
- 1. A Certificate Is Irrelevant
- We meet with a ton of students who are enrolled in local coding classes at their community colleges and they’re all under the misnomer that employers will care about whether or not they have an Associates degree in some coding-related area of study.
The truth is, unless it’s a full on 4-year degree, certificates and accolades don’t mean anything when it comes to Software Engineering. This is both good and bad.
It’s bad because you can’t simply convince someone you can be a Software Engineer by showing them a piece of paper that says you can be a Software Engineer.
But it’s good because it means you don’t have to have one of those pieces of paper (neither an Associates degree or a Bachelors in Computer Science degree) to become a Software Engineer.
- You just need to be able to code and build software in a team.
4. Code School
Lastly, we arrive at perhaps the most controversial of paths, a “code school”, often synonymous with “coding bootcamp”. By “code school”, we could be talking about a variety of different alternative learning paths, but let's narrow down and define what we mean.
A History and Overview
Between 2011 and 2012, a phenomena erupted around the United States in which private companies were created around this idea of short, intensive coding programs where students could learn to code over 3 months in an insanely intense environment, and walk out on the other end with a high-paying job as a Software Engineer.
These types of schools have surged over the last few years, and according to Course Report, there are now over 108 full-time “coding bootcamps” in the United States.
Not All Code Schools Are The Same
Part of the controversy around these code schools is the fact that none of them are accredited by any kind of central body - they’re all just private companies and they’re not all the same. They’re not all getting their graduates great jobs, despite what their marketing may imply.
As we looked at previously, accolades don’t matter when it comes to getting a coding job. Coding bootcamps capitalize on this. They’re all about helping you prove to prospective employers what you know.
Some are incredibly advanced education institutions which ensure students have a clear path to a job, whereas others are near scams. So how can you tell the difference?
What Makes for a Good Code School?
- 1. Transparent Statistics
- The closest thing to accreditation come from organizations like CIRR (stands for the Council on Integrity in Results Reporting). CIRR is a non-profit organization which represents 19 code schools across the country that agree to reporting their graduate statistics (how many students find jobs as software engineers and how quickly) in a verifiable, standardized report.
Because in the end, all that matters for these schools is whether or not graduates are finding jobs.
If a school is reporting their statistics, they likely have a strict admissions process. Afterall, if you get into their program and you don’t do well and your failure becomes part of their statistics, it’s going to be bad for them.
In other words, it’s in the school’s best interest to not just “sell” you on their program, but to ensure there’s a good fit.
So does the code school require you to write code before they admit you? If not, it’s a red flag that you’re stepping into a program full of green beginners like yourself and the school isn’t too concerned about whether you get a job or not. They may have even got lack, had some great students and a few success stories in the past, but they’ll be riding on those marketing campaigns rather than publishing their data.
3. Qualified Instructors
Some schools will hire recent grads as instructors, rather than paying the high price of employing senior level software engineers. Even if the instructors are legitimate and experienced software engineers, it doesn’t mean they’re qualified to teach. See if you can meet them and see how they teach ahead of time.
Can you find reviews of the school’s alumni on websites like Course Report? Is it clear that these alumni have jobs and work as Software Engineers? A school’s stats should be enough to paint this story in broad strokes, but it’s great to find out that graduates not only have jobs but that their experience was rich.
The best code schools will have an expansive and employed alumni network that acts as a family, loyal to their alma mater.
A First Step
None of the paths above will mean anything unless you take a first step. Unsure of where to begin? Start by learning to code in just one language. This will ensure that you like programming, which is the first real task.
Unsure of which language to start with? Checkout out our guide on determining which programming language you should learn first.