← Back to list

How I became a software engineer without a degree, or hardly any formal training

I didn’t believe it was possible (or at least, likely) to get a software engineering job without a degree.

Nathanial Labrake · 2024-11-04 14:40 · 0 claps · 8.0 min read paywalled
#software-engineer #software-engineering-job #computer-science-degree #computer-science-topics #coding
Open on Medium ↗
Wiki topics: 💻 · Programming 🔬 · Science · General

How I became a software engineer without a degree, or hardly any formal training

I didn’t believe it was possible (or at least, likely) to get a software engineering job without a degree.

But after a few years of gaining experience as a freelance web developer and taking a few online courses, I did just that.

No coding bootcamps, and I only took 2 college courses on software / programming.

And I’ve still managed to land six-figure jobs.

The reality is: having a computer science or software engineering degree is great, but not necessary. You can get a job in software without one. It just takes a lot of dedication, and you might need to gain experience through freelancing.

A good percentage of what you learn in computer science / software engineering degrees doesn’t directly apply to the job. Even when it does, the content is usually outdated.

In the one of the online college courses I took on programming with Java back in 2015, the slides in the lectures were from 2008!

I’m not saying a degree can’t be worth it. The good thing about college is that it teaches you the fundamentals, such as programming basics, data structures and algorithms, and sometimes about software architecture. But it often does a terrible job at teaching you the latest tech that companies usually require you to know.

And then there’s that huge chunk of what you learn that you won’t need at all for most software jobs.

I’m going to tell you my own story, and to demonstrate how I built a software engineering career without a degree, and how you can make that possible for yourself as well.

Plus, I can show you how you can learn any of these computer science topics on your own, without spending $100,000 on a degree.

Here’s how I got started, and what you can learn from my journey

When I started out, all I knew how to do was design websites, which I had taught myself to do using free online tutorials and from building my own websites. I didn’t know much about programming.

In 2012, I decided to take the skills I had and start building websites for clients. I mocked the website in Photoshop, and then coded it using HTML, CSS, and, if necessary, JavaScript.

In the beginning, I wasn’t great at it, but I also didn’t charge very much. It was ultimately a way to get my foot in the door.

I wasn’t getting very many clients until about 1 year later, when I finally decided to start taking paid courses from Team Treehouse. This was when I realized the gaps in my knowledge, and was able to improve my skills to a point where I could start charging more.

It also gave me a deeper introduction into backend programming — particularly with PHP and WordPress.

When I finally started taking paid courses, it made me wish I had done it sooner. While there are plenty of free resources online for learning web development, it’s not a good way to learn. Most of what you find online are tutorials that don’t do a good job of teaching you the foundational stuff, which you need to understand. They are mostly resources you can use once you already understand the foundations, as references while you’re coding. Once you understand the foundations, everything else is easy.

And some of the paid courses, such as Team Treehouse, are fairly cheap, and worth the price. You don’t have to spend $20,000 on a coding bootcamp to get the skills you need. I’m not convinced that coding bootcamps are worth it.

That year, in 2014, I started making some money with my freelance work. I had gigs on Fiverr that were paying me a little over $1,000 per month, plus a couple other clients that were paying me another $1,200 to $1,500 per month. With all the work I was doing, I was also gaining some experience.

Here’s how I landed my first tech job

While I had wanted to get an actual tech job, I didn’t feel I had a strong chance of getting one, being that I didn’t have a degree. While I had heard that you could get a tech job without a degree, I had thought it was extremely difficult.

Since I felt I couldn’t get into tech any time soon, and I wasn’t entirely confident that my freelance gigs would make money forever, I applied for a job at Boeing as a tool maker that year. I had taken a course the previous year just for that.

However, I quickly found that the job was extremely mundane. Every day you did the same task, and parts of the job were dangerous. There was a risk of falls all over the place. I still did a lot of freelance web development work on the side, with a plan to make that my full-time career — hopefully getting a job in software.

The benefit of working there was that I could take college courses for free. During my time there, I took 2 courses: one on programming with Java, and another on an introduction to data structures and algorithms.

But I didn’t complete my degree. I only completed those 2 courses. After 3 years of working at Boeing, I couldn’t take it anymore, so I left. I had wanted to get back into doing freelance web development work, but quickly found I wasn’t getting quite as many clients as I used to — and not nearly enough to earn a living on.

I started applying to tech jobs all around. Fortunately, I lived only about an hour north of Seattle — an area with an abundance of tech jobs. Eventually, one of the jobs lead to an interview. The site I would be working on was built on WordPress — and so it used the full stack I was familiar with: HTML, CSS, jQuery, PHP, and mySQL.

To my surprise, I ended up getting the job. No degree, mostly self-taught, and most of my experience came from freelancing.

It’s very likely I could have gotten a job years before that, I just never tried, and didn’t realize I could do it. It’s also possible that being able to show 5 years of experience on my resume (from freelance work) was helpful in landing that job.

That’s one of the benefits of freelancing — if you are having trouble landing your first job, freelancing can give you the experience you need

It’s not uncommon that entry-level software jobs ask for 1–3 years of experience.

That’s not always a hard requirement, and sometimes they will still hire you even if you have minimal experience. But if they find someone who already has a couple years of experience, they’ll probably choose them over someone with no experience.

Just to note — I wasn’t working full time as a freelance web developer for all 5 of those years. If you already have a full-time job, or you’re in college, you can always gain experience doing freelance work on the side and put that on your resume. You don’t have to wait to get an internship or until you get your first job to gain real-world experience.

Now, getting clients isn’t always easy, but it’s a great way to learn to market yourself and your abilities.

How do you get freelance clients if you’ve never freelanced before?

I personally got clients in two different ways: I built my own website and advertised it using free traffic exchanges and put up some Fiverr gigs. However, if you’re wanting to earn decent money from your freelancing work, I wouldn’t recommend either of these strategies. But if you’re doing it for experience, sites like Fiverr can help you get your foot in the door.

Another way to get clients is to use freelancing sites such as Upwork or Freelancer. You can find lots of jobs that you can submit proposals to, and if you have a portfolio, sometimes you might have clients contact you there. The problem with freelancing sites (along with Fiverr) is that it’s very saturated with people offering the same thing you do, sometimes at very low rates. So as with Fiverr, using Upwork and Freelancer does leave the opportunity to be underpaid, and expect to work hard to get your first client. Just be aware that there some job postings are from scammers.

The reality is, unless you know how to market your skills very well and attract high quality clients, you’ll be underpaid. And learning marketing skills isn’t a bad idea. But if all you want is the experience so you can use that to land a software engineering job, then getting started this way isn’t a bad idea.

What would I do differently?

If I could start over, I would have bought courses on programming / web development from the very beginning. While I didn’t have much money at the time, it would have been worth it because I could have been better at what I did.

Another mistake I made was trying to do everything. I designed websites, coded them, often did the back end, and on top of that, I even made videos. The problem is that it’s very difficult to become good at so many different things, and you end up spreading yourself thin.

While it’s not a terrible thing to try different things to see what you like doing, it’s best to choose one thing you’re interested in, and do that.

If I could go back in time, here’s what I would have done step by step:

  • Choose a focus area based on your goals. Are you aiming to become a designer, frontend developer, backend developer, or general software engineer? There’s a difference between these areas.
  • Take paid courses in your chosen area until you’re confident offering it as a service. This may take months, but it’s worth it. Build skills further with personal projects.
  • Learn computer science fundamentals: While not all CS topics are essential, focus on data structures, algorithms, computer networking, and databases — especially if you’re aiming to be a software engineer, not just a frontend developer. More details below.
  • Use a few different ways to get clients: Don’t rely too much on a single source to get clients. Use Fiverr, Freelancer, Upwork, and build your own website that advertises your skills. Also try social media.
  • Develop basic marketing and communication skills: Marketing and effective communication are essential for freelancing and job interviews. Understanding marketing helps you grasp the psychology of persuasion and decision-making, allowing you to address the needs and problems of clients or interviewers. Experience with clients also improves your communication, which strengthens your interview skills.
  • Don’t wait too long to start applying for jobs: I waited 5 years before I even attempted applying for tech jobs. You don’t need to wait that long, especially for junior level software engineering positions, which usually only ask for at most a couple years of experience.

How do you learn computer science topics on your own? What should you focus on?

Here’s a quick breakdown of topics covered in traditional computer science and software engineering programs (you don’t need to know them all):

  1. Programming fundamentals
  2. Data structures and algorithms
  3. Discrete mathematics
  4. Computer architecture
  5. Operating systems
  6. Computer networks
  7. Databases
  8. Theory of computation
  9. Compilers and language theory
  10. Software design and architecture
  11. Calculus and linear algebra
  12. Probability and statistics
  13. General degree requirements (like humanities)

When it comes to getting a tech job, you don’t need to know most of these. In fact, if you just learn a tech stack — for example, C#, Blazor, SQL Server, Redis, Docker, and Kubernetes — you have a good chance at getting a junior level software engineering position.

If you want to dive deeper, and want to learn on your own, focus on:

  • Programming fundamentals
  • Data structures and algorithms
  • Software design and architecture
  • Computer networks
  • Databases
  • Operating systems

Other topics, like compilers, are interesting but often optional. I recommend checking out the textbooks used in degree programs or finding well-reviewed books online. Learning independently also means you can choose books that present concepts in a more digestible way.

For job preparation, a degree can help you stand out, especially for jobs requiring a deep understanding of CS topics, but it’s not necessary to succeed in software engineering. You’ll mostly be building applications, which doesn’t require knowledge of computer organization or calculus — knowing a tech stack is usually enough.

For learning a tech stack, there are several options, such as Udemy, Coursera, edx.org, among others.


메타데이터
post_id
31e3854b55a2
slug
how-i-became-a-software-engineer-without-a-degree-or-hardly-any-formal-training-31e3854b55a2
url
https://medium.com/@nathan_labrake/how-i-became-a-software-engineer-without-a-degree-or-hardly-any-formal-training-31e3854b55a2
canonical_url
https://medium.com/@nathan_labrake/how-i-became-a-software-engineer-without-a-degree-or-hardly-any-formal-training-31e3854b55a2
author_url
https://medium.com/@nathan_labrake
status
ok
fetched_at
2026-09-16 03:20:48