How To Become a Software Engineer Without a Degree in 2024
No degree? No problem. Here's my guide on how to start your software engineering career in 2024, as a developer with 15 years of experience.
Did you know: the average software engineer salary in the USA is $175k - which is ridiculous tbh... So I don't blame you for ending up on this article 😉
As a dev with 15 years of experience, I can confidently say:
It's 100% possible to become a Software Engineer with no experience in just 3-6 months. In fact my friend did this - he worked as a delivery driver before becoming a software engineer in ~20 weeks (after taking an intense bootcamp).
With all this in mind, here's my guide for starting your software engineer career 👇
1. Do an "Intro to Computer Science" Course
To build a good house, you need solid foundations - and it's exactly the same with your career. So before you start writing any code, you must understand (roughly) how a computer works:
- What is a CPU?
- What is memory?
- How do RAM and solid state memory differ?
- What actually are programming languages? etc
My top pick to get a solid foundation? This Introduction to Computer Science course on Udemy. At 4.7 rating out of 5 - you can't go wrong.
2. Learn HTML and CSS
HTML and CSS are two of the building blocks in every (single) website out there. Learning HTML and CSS will give you the power to create simple, static websites.
And when I say "static" - think of it like a brochure or a poster - what you see is what you get. Static means the website looks the same for everyone who views it (e.g. no login etc).
To learn these two skillsets (which aren't programming languages btw) check out this course on Udemy. Perfect for beginners and you'll be building real websites faster than you can say "cascading style sheets" 🤓
Action Items:
- ☐ Learn the basic structure and syntax of HTML documents
- ☐ Use HTML tags to structure content like headings, paragraphs, lists, and links
- ☐ Understand CSS selectors for targeting and styling specific HTML elements
- ☐ Use CSS properties to control layout, colors, fonts, and spacing
- ☐ Implement responsive design techniques for different screen sizes
- ☐ Try out frameworks like Tailwind to speed up development
Would you like a 4 day work week?
3. Learn JavaScript
JavaScript is the secret sauce that brings websites to life. It's the language that adds interactivity to web pages.
For example, let's say you have a simple button on a webpage. With just HTML and CSS, that button might look pretty, but it won't actually do anything when you click it. That's where JavaScript comes in... With a few lines of JavaScript code, you can make that button come alive - maybe it triggers a pop-up, sends data to a server etc.
The nice thing about Javascript is that it's super versatile - you can use it for the frontend and the backend.
Hold up... what is this "frontend" and "backend" you speak of? Well... Imagine you're at a fancy restaurant:
Frontend: The frontend is like the part of the restaurant that you see and interact with - the beautiful decor, the well-dressed waitstaff, the delicious food, and the carefully crafted menu. In web development terms, the frontend is everything that the user sees and interacts with in their browser - it's the HTML, CSS and Javascript.
Backend: The backend is like the kitchen. It's where all the behind-the-scenes magic happens. The chefs are hard at work cooking up delicious dishes, the dishwashers are keeping everything clean, and the inventory manager is making sure there's enough food to serve all the customers. In web development, the backend refers to everything that happens on the server, behind the scenes. It's the databases that store information, the server-side scripts that process requests and send responses, and the APIs that allow different systems to communicate with each other. Backend programming languages include: NodeJS (written exactly like Javascript!), Python, PHP etc.
To learn Javascript I highly recommend the The Complete JavaScript Course on Udemy.
Action Items:
- ☐ Learn the basics of JavaScript syntax, variables, data types, and operators
- ☐ Understand control flow with conditionals, loops, and functions
- ☐ Work with arrays, objects, and manipulate data structures
- ☐ Grasp the concepts of scope, closures, and "this" keyword
- ☐ Master DOM manipulation and event handling for interactive web pages
- ☐ Understand asynchronous programming with callbacks, promises, and async/await
- ☐ Explore error handling and debugging techniques
- ☐ Dive into ES6+ features like arrow functions, destructuring, and modules
4. Learn Databases and SQL
What is one of the most important parts of a website? Data.
For example, let's say you're running an online store. You'll need to keep track of:
- User accounts: names, email addresses, passwords, etc.
- Product details: names, descriptions, prices, images, etc.
- Orders: who bought what, when, and for how much
- Reviews: who said what about which product
And if you want to create a database, you'll need to know SQL (Structured Query Language). SQL lets your website communicate with the database e.g. insert data, fetch data, update rows etc. It allows you to do all the things your website needs to do.
And what database should you use? Well... imo: PostgreSQL. Just use PostgreSQL (pronounced "post-gress"). Most of the modern internet runs on it.
And to learn SQL, I recommend the 15 Days of SQL course.
Action Items:
- ☐ Learn SQL syntax and basic commands (SELECT, INSERT, UPDATE, DELETE)
- ☐ Understand relational database concepts (tables, columns, rows, keys)
- ☐ Write queries with WHERE, ORDER BY, and LIMIT clauses
- ☐ Use aggregate functions (COUNT, SUM, AVG, MIN, MAX)
- ☐ Perform joins to combine data from multiple tables
- ☐ Utilize subqueries and derived tables
- ☐ Understand indexing and optimize query performance
- ☐ Learn about transactions and ACID properties
- ☐ Explore stored procedures, triggers, and views
5. Learn a JavaScript Framework
Here is something that might blow your mind:
Most websites aren't written using plain Javascript. Instead they are built using a higher level framework, such as ReactJS, Vue or NextJS.
- Can you build a website using plain Javascript? Absolutely!
- Should you build a (slightly complex) website using plain Javascript? Probably not.
If you do, your code could end up like this:
aka "Spaghetti code": a mess of tangled logic that's hard to follow and maintain, like trying to untangle a bowl of spaghetti.
Benefits of using a Javascript Framework:
- Structure: Frameworks provide an organized approach for building complex applications.
- Reusability: Components in frameworks can be reused, speeding up development.
- Compatibility: Frameworks handle cross-browser issues and optimize performance.
- Ecosystem: Popular frameworks have a wide range of tools, libraries, and community support.
So if you're ready to upgrade your plain JS skills to using a framework, checkout these courses below:
6. Build a Passion Project
As always:
The best way to learn, is to do.
Pick a project that makes you want to jump out of bed in the morning. Whether it's a personal blog, a movie review site, or a clone of your fav app, the key is to choose a project that you'll want to see through to the end.
The first projects you build don't need to make money, they just need to make new skills ✨
7. Build Another Project
You know what's better than doing a pet project? Doing 2 pet projects.
I'm telling ya, the problems you'll face when building custom projects will help you learn 10x faster than any YouTube video could.
p.s. use ChatGPT to help you build your project - it will make this process 10x easier.
8. Apply and Interview
You've now got a couple of (hopefully online) projects in your back pocket, now it's time to hit the job market...
To give yourself the best chance of getting an interview, your resume needs to be perfect - it needs to grab the attention of the recruiter. And how do you grab their attention? You should:
- Make your resume ATS-compliant to pass through the initial screening processes.
- Make each resume job specific (e.g. match the keywords in the job description with your resume)
Tools like AiApply make this process much easier (see below).
p.s. the resume should be one-page resume and it should showcase your software skills front and center (i.e. in a table at the top)
Once you start applying and land your first interview (p.s. it could take a while - sorry), use HackerRank to practise for your big day.
Conclusion
That's it ladies and gentlemen - my guide on how I'd get started in software engineering within 3-6 months - starting with no experience. It's not going to be a cakewalk, but with some determination, resilience and ChatGPT (lol), you can 100% make it happen.
So what are you waiting for? Dive into the wonderful world of coding and let the good times (and the job offers) roll - happy learning friends!