I'm here to show you the best, most efficient way to become a Software Developer and learn Python for free.
But why learn Python?
Glad you asked! The short answer is that it's my pick for the best programming language to learn in 2022.
Plus it's your best bet to get hired and even work on projects that will help solve societal problems so that you can (maybe) even change the world.
What could be more exciting and fulfilling than that?
For the long answer, keep reading! I'm going to breakdown everything in detail so that you fully understand:
Feel free to jump or skip around this article using the hyperlinks above, though I recommend you read the whole article to maximize your knowledge and learning.
Now let’s dive in!
Actually, quickly before we get started, if you want a downloadable PDF version of this guide that includes the step-by-step "How To Learn Python For Free" section you'll find in Part 3, you can sign up below and Andrei will email it to you!
Before we jump into the guide I want to just quickly let you know about me and my experience. Not to show off, but simply so you can trust the advice I'm giving you and then take action on it.
My name is Jayson Lennon and I'm a Software Engineer.
I’ve been programming for many years, first as an enthusiast, and then on a professional level. I'm also an instructor here at Zero To Mastery.
Because of this, I'm always keeping tabs on the latest trends in coding and love trying out all the hot new tech.
My idea of having fun is trying out new programming languages and discovering the best ways to write code for the most efficient result possible. This provides me the opportunity to see what works, what doesn't, and to spot the difference between tech that is just hype versus tech that has long-term staying power.
I only put my name behind things I believe in and I hope you find this guide instrumental in your path to becoming a software developer and learning more about Python.
Okay now let's dive in!
Other than it being so awesome that it got its name from the cult comedy classic Monty Python, here are 7 other reasons why Python is a fantastic language to learn in 2023.
Seriously, Python is used in almost everything:
And thanks to it being a general purpose language, it can be used on both frontend and backend projects.
Because it's in high demand, the salary for Python developers is very competitive.
According to Zip Recruiter, there are currently 447,416 Python developer jobs available (at time of writing) with a salary range between $53k-$163k USD per year.
This puts Python at a higher average salary than the majority of programming languages right now, even for junior developers.
Nope! Python is actually incredibly beginner friendly.
Well, not only is Python a high-level language (meaning that it’s more similar to English than machine code), but it was actually designed to be easy to use, and even has its own built-in help feature!
This accessibility means that you can learn Python relatively quickly, especially if you follow a set learning path or bootcamp.
As of March 2022, Python ranks as the #1 language in the TIOBE Programming Language Popularity Index and has been climbing rapidly since 2018, overtaking many other popular languages.
This is even more outstanding when you realize that Python has been around for 21 years now (it was first launched in 2001)!
Large companies like Instagram, Google, Reddit, Netflix, Uber and Dropbox all use Python in some or all of their products. This means Python is a well-tested and production-grade language to use as a software developer.
There are tens of thousands of Python modules and scripts available to help you code, thanks to extensive libraries such as the Python Package Index.
This means Python and its source code are freely available without any cost, and that you can code cross-platform on any Windows, Mac or Linux machine.
Because Python works so well with other programming languages like C, Java, C#, .NET and others, Python is the go-to language that developers use when they need to stitch together large projects written in different programming languages.
This means that even if projects are built in other languages, companies still often need a Python developer to help integrate them.
How does all that sound to you?
To me, it sounds like Python is the best programming language to learn in 2022, regardless of if you're a newbie starting your coding journey or a grizzled veteran looking to improve!
You would be surprised just how fast you can pick it up.
I've seen people take 6 months to a year, but I've also seen people with zero previous experience pick it up and get hired in 2 months!
The trick is being able to follow a path (so you learn the right things and don't waste time), and to also learn how to learn more effectively. (More on this in a second).
So let's walk through how to actually learn this.
For the newbies, I'm now going to walk you through how to efficiently and effectively start learning as a new developer in Part 2 of this article.
For the grizzled veterans, feel free to jump ahead to Part 3 where I set out how to learn Python for free (although the tips in Part 2 will make you a better learner, and everyone can always become a better learner, so I recommend you still check it out).
So you want to become a software developer? Great choice!
Software developers have been, and will likely continue to be, one of the most in-demand jobs there is. And it has even higher growth projections over the next 6 years.
Demand is so high in fact that there is a shortage of developers to work on all the applications that power today's (and tomorrow's) society.
This gives software developers the ability to pick and choose where they want to work and what projects to work on.
Let's break down what this means for "future you":
a. You'll take home a really nice salary. Even if you live in an area with less demand than the norm, you'll still live a comfortable lifestyle.
b. You'll be able to spend more time with your family, save money on gas, and relax in your sweatpants by working from home. Remote work has always been available for many software developers, but recent events (you know what I'm talking about...) have caused this trend to skyrocket.
c. You won't have to worry about finding work. Since demand is so high, changing jobs every few years (for a big pay raise) is the norm.
d. You'll have increased well-being by working on something that is fulfilling to you. Maybe building a generic office application isn't your thing. Maybe you'd rather try and change the world by making an impact on society and working on a self-driving car, or helping detect cancer with your phone.
Software is everywhere and powers nearly everything, so you'll have no trouble finding something that you find meaning in and are passionate about.
e. You'll never be bored while working as a software developer. The industry moves fast and there is always something new to work on.
Now I know what you're thinking:
Jayson, these sound great, but what's the catch? Expensive degree? Lifelong commitment?
There's no catch! In fact, it's possible to become a software developer on your own, completely for free, by using resources that are publicly available online.
First thing's first though, we need a solid action plan so that we can be efficient and maximize our results:
Let's dive into each of these points in your action plan below.
I promise that once we go through these, I'm going to show you how to learn Python for free. But I genuinely feel it is incredibly important that you read and follow this action plan first.
I've seen too many newbies give up on their coding journey simply because they had inefficient strategies and ended up getting frustrated. This is a marathon, not a sprint.
Wanting to become a software developer (Python or otherwise) is not enough to make you follow through and make it happen.
It’s easy to have a goal, like when you make a New Years Resolution, and then fail at it - even if you have crazy strong will power.
Instead of relying on will power, try and find your ‘why’:
Attaching a vision to an end goal can help you stick to it and achieve success.
Another huge factor for your success and enjoyment when learning something new is the ability to work alongside a community of peers.
Think of if you tried a new sport or a game with a friend, compared to when you tried to start something on your own?
Community and accountability can help you stick to a goal and make it happen.
There are heaps of Python communities out there but I do have to recommend the ZTM Discord server.
With over 280,000 developers working at places like Google, Tesla, Amazon and more, it’s a gold mine of information, support, and just a wonderful community.
Once you become a software developer, you'll always be learning new things on every project that you’re involved with. The thing is, we don’t really learn ‘how to learn’ at school.
In fact, in school we’re usually focused on memorization and repetition, which isn’t ideal for learning to code. Having the most effective learning strategies is critical to your success, so let’s learn how to learn.
Learning is a skill like anything else, and there are tried and true methods for learning.
When learning to play basketball you wouldn't try to create a new technique of shooting the basketball, right? You'd use the shooting techniques used by the professionals. Same goes for learning.
When learning new things you'll want to use the learning technique used by the experts: the Feynman Technique.
Richard Feynman was an author and physicist who studied quantum mechanics and became something of a celebrity outside of his field.
Not so much for his research but for his ability to solve and break down complex topics and teach them to other people. There are tons of stories of him solving problems outside of his own field that had stumped other experts for years.
The TL;DR version is this:
Break down anything you want to learn into simplified language and concepts that anyone could understand.
Because the process of breaking down something complex into something simplified will help you to fully understand it. And once you understand it, then you'll have no problem explaining it!
This not only will help you to communicate to non-techies about your awesome software projects, it will also act as a self-check to confirm that you have actually learned the topic.
💡 Top Tip: Writing blog posts or recording YouTube videos explaining what you've learned is a great way to implement this technique, and it can help you build new connections with other developers and get you noticed.
Time management is extremely important when learning or working from home. With this in mind, I highly recommend the Pomodoro Technique.
It’s a method I use whenever I want to be as productive as possible, and not have tasks drag out for hours.
How It Works: The Pomodoro Technique breaks up your time into segments, each having varying amounts of break and work time.
Remembering to take breaks is crucial for software developers in order to give your mind time to digest all the information available.
It may seem counterintuitive to take so many breaks at first, but once you understand your personal ultradian rhythm, you can adjust your Pomodoro timers to maximize your productivity and thus, your effectiveness as a learner.
Habits can make or break us. The small things we do each day are what add up to our end results.
The thing is, our environment impacts our habits.
We call this ‘choice architecture’. By manipulating our choices through changes to our environment, we can actually manipulate our habits.
Minor alterations to your room, such as moving your desk or sitting in a chair instead of on the couch, can help break old habits and build new, more effective ones.
How can you remove the distractions in your learning environment?
What can you add to help you focus?
It seems simple but going from the couch to a dedicated space to learn can make a huge difference. Heck, it can even become a trigger so that once you sit at that desk you’re in ‘learning mode’.
Make it easy for you to win, not harder.
Now let's talk about another way to remove distractions and improve your focus: exercise.
Proper exercise (even if just 15 minutes!) changes your mind by increasing your attention, alertness, and motivation to complete a task.
You can even design your environment to make exercise easier.
Habits, time keeping, and environment will help greatly when learning the necessary materials to become a software developer. And as an added bonus, exercise will make you an overall healthier person.
Just be sure to make it fun!
So you've learned how to learn, managed your time, changed your environment to build good habits, and hopefully have included some exercise in your routine. Now it's time to focus on where you're going to start learning to code: the fundamentals.
I know what you’re thinking:
“Boo I want to get to the good stuff asap!”
But the thing is, to learn effectively you need to start with the fundamentals. The fundamentals are incredibly important.
It will make everything else go so much smoother and the fundamentals will be useful at every step of becoming a software developer, even during job interviews where you have to break down problems and solve them on the spot (or at least show how you would attempt to solve it using fundamental principles).
My opinion on the best free resource to learn the fundamentals is from Isaac Computer Science.
They have all of the information you'll need for a solid foundation as a software developer.
Make sure you cover not only the programming concepts section, but also subroutines, number representations, ASCII and Unicode, and data structures (including array, dictionary, list, stack, queue, tree, and graph).
The concepts presented here will apply to any programming language, so you'll be able to utilize them regardless of what technology you use in the future.
Still with me here? I bet you thought you'd already be deep into Python right? That's the approach most beginners take and then they get stuck and lost but not you because you're following this guide... right?!
Quick reminder: I get a lot of requests for a downloadable version of this guide so that you can print it off and check things off as you go or be able to send it to your Kindle/Phone. Sign up below and Andrei will email you this full guide as a PDF!
So far you've learned how to learn efficiently, how to change your habits, and you've learned about programming fundamentals.
Now is the moment you've all been waiting for!
Here is where you pick a programming language to learn.
If you've come this far, you already know that Python is the language that I recommend you learn first.
Now let’s walk you through a simple path to learn Python for free:
I recommend you follow the details of each steps I outline below, but if you want to get a different perspective and dive a little deeper, you can also watch this "Python Developer Roadmap" video below from ZTM's Lead Instructor, Andrei Neagoie:
Start off by getting the tools that you’ll need.
You can download Python for any operating system from the Python.org website.
I recommend that you download Python 3 instead of Python 2, as this is the updated version and Python 2 is being phased out.
In theory you could write your code in Notepad, but you’ll find it much easier and faster to use a dedicated code editor such as Sublime Text or Visual Studio Code, or even better, a dedicated IDE such as PyCharm.
Code editors have additional features to check for things like spelling errors and syntax highlighting, but Pycharm was specifically built to help Python developers.
A big part of learning any language is knowing and understanding the syntax that makes it run.
The problem of course is that until you have a lot of experience with the language, you’re not going to remember each keyword and detail, and so you’ll often have to refer back to reference materials.
You can grab our Python cheat sheet here which will be a great quick reference guide to use, particularly if you can print it out and keep it beside you while learning.
So now you have the tools and assets to write Python code, but it probably doesn’t make a lot of sense yet. The best way to get it to make sense is to get your hands dirty! And that means building some basic projects so that you can write and put code into action.
Now that you have the tools, it's time to start using Python to build. We're going to break this down into 3 stages.
Let’s start with some simple projects. These are fun and will help you get out of the learning phase and into the doing phase, while also learning essential skills and practising the fundamentals.
Here's some great starting projects:
Better still, by starting with simple projects now you’ll start to get a grasp of Python’s syntax and how it works, before getting into bigger projects later on.
Here’s a great Python project that is part of the Zero To Mastery Python Bootcamp, which we've made free for you to access:
My most important piece of advice is that I highly recommend you work on projects that are interesting to you. This will help keep you engaged, and you'll be excited to show them to your friends and family.
This enthusiasm for your projects will also be apparent when you ultimately start attending job interviews, and that enthusiasm will make you much more likely to land the job.
If you're struggling with this step and want to take things a little slower, then I recommend you start off by watching Andrei's Free Python Crash Course below. He'll teach you the basics of Python from scratch.
But once you finish this crash course, make sure to get back to building projects ASAP!
OK, so now that you have some basic projects created and built some confidence, it's time to take it to the next level so that you can get hired and get more experience.
Don't get me wrong, the small projects you 've been working on are great for practice, but now you'll need to create larger projects that utilize these technologies and add those to your portfolio.
This is fantastic practice to really solidify what you have learned and is essential to make you stand out, get an interview, and land a job.
Since you'll be making lots of projects, and you'll want to show those projects off to your friends and potential employers through a portfolio, what better 'more advanced' project to start with than actually building your portfolio itself!
It might sound obvious but actually creating a profile website online can actually separate you from a lot of people. It's not that hard and it's common advice but still, so many people just don't do it and simply rely on their resume and/or Linkedin profile.
You can get some more essential details about Django by going through this tutorial from Mozilla to solidify your understanding.
Building projects from tutorials like those I've listed above is great for your portfolio, but what you really want to do in order to stand out is create your own projects from scratch.
Ultimately though, you should create projects that are interesting to you! This will help keep you engaged with your work and it will be clear from the final result that this is something you are really passionate about.
Why post to GitHub?
Because having plenty of activity on your profile over a long period of time proves to employers that you are committed to programming and that you didn't just copy and paste your projects into your portfolio.
This video tutorial will get you set up using GitHub in less than an hour.
Once your portfolio is up and running, you can start adding your awesome projects!
There's some fun ways you can start to express your own style here.
For example you can create your own blog and document your progress towards becoming a professional software developer.
Blogging may seem like a weird sidequest on your coding journey, but it can actually be quite helpful. If you remember the Feynman Technique one of the core ideas is that teaching what you learn helps you to learn better, and it doesn’t hurt to have a blog to share with potential employers either!
You can also make a news aggregator to keep track of your favorite programming related articles, that way you have a convenient place to use for reference!
So you’re feeling great about what you've been creating so far, but what now?
I know you've already built basic and advanced projects and even a portfolio, but to really put yourself into the top 5% and stand out in interviews, you should take those hard projects and find a way to customize them to make them your own in some way. Or even better... build a project from scratch with your new skills.
Ultimately the job of a software developer is to deliver a product, so the best way to become highly skilled at a programming language is to keep creating and polishing projects.
I recommend you pick 2 or 3 of your favorite projects and then add new features to them, and polish them up. Not only will you learn more and get more comfortable, but it'll help ensure potential employers are wow'd by your projects when you show them to prospective employers.
Putting these on your portfolio site will be a key factoring to helping you stand out and get more job interviews
Want to make getting hired even easier?
By learning to work with indemand languages and specific Python skills, you can apply for roles with high demand and low competition.
Better still? These roles usually pay much more, simply because they have a need and a niche. Get your foot in the door now by starting to focus on Python plus in-demand technologies.
Here are 4 specific areas you could try out:
Regardless of what language you're using, web technologies are always in demand. You'll need to know how to make some basic web pages, even if you make them from templates.
It's packed with resources on web design, web programming, and everything else needed to make a great website.
Another high demand area to learn is database technologies.
Because we’re in the age of "big data," and understanding how to work with databases is an essential skill that every software developer needs to know.
This tutorial will get you started on creating and using a database in Python.
Once you are comfortable making databases in Python, you'll want to become more familiar with SQL, which is the language used by all relational databases and is extremely powerful and efficient.
One of the best resources to get up to speed on SQL is SQLBolt, which walks you through the process of writing SQL queries and explains how they work.
It's interactive too, so you can check your work in real-time as you learn.
There is huge demand right now for companies to not only collect data, but to analyze and understand what it means, and then try and predict future events based on that information.
Think Amazon, Airbnb, Booking.com and others. All industry leaders thanks to tracking and understanding their metrics.
If you want to be in high demand and predict the future, then it’s worth learning Python for Business Data Analytics.
Last but not least we have Machine Learning (also commonly referred to as AI or artificial intelligence) and Data Science, which is the specialization that makes machine learning possible.
Having some knowledge of this field will make you extremely valuable to organizations, and demand is just going up, up, up. In fact, Data Scientist is the #2 best job in 2021 and with very high compensation.
Our resident Machine Learning instructor also shares a lot of tips and advice on his blog and Youtube channel, which you can check out for more advice:
As for Machine Learning and Python projects, you can start with something like detecting car license plates or even something that has a positive impact on the world like identifying breast cancer. There are plenty of project ideas to choose from in order to get more practice and hone your skills.
And if you have a great idea, but don't have the necessary data, check out Kaggle for free data sets covering practically every industry.
Just like the fundamentals, you'll need to have a solid grasp of these topics before moving forward. The best way to accomplish this is to make small projects like you have been already, but adding these technologies in the mix.
You’ll be far more successful at being hired as a Python developer by learning these in demand topics, but I highly recommend that you only tackle one topic at a time. That way you can stay focused and don't get overloaded with too much information.
You can also think of these as specializations. It's likely that you'll only get hired to mainly focus on one area. So if you want to get hired ASAP, figure out which one interests you the most or where the biggest need currently is and then go all-in on that specialization (ex: python + machine learning).
Then once you get hired, you can expand your skill set and start skill stacking in these other areas.
So there you have it. A simple(ish) path to learning Python and becoming a software developer for free.
Find your reason why you want to learn, create an environment for success, follow a set path, have your resources ready, follow a deliberate practice, get out of your comfort zone and build more complex tools and continue to learn.
Oh and of course, have fun!
If you need any help along the way or want to take the next step, the Zero To Mastery Academy is here to help.
When you join the ZTM Academy you also get access to the ZTM community which consists of the complete team of instructors (myself included), a group of dedicated mentors, and over 350,000 developers and lifelong learners. If you join, please be sure to reach out and say hi to me!
We also have complete courses on everything you need to efficiently learn Python and take your skills to the next level, including our Complete Python Bootcamp and courses on web development, machine learning, Python for business data analytics, and even efficient learning.
Plus we have lots of other courses on cutting-edge topics like Rust Programming: The Complete Developer's Guide and Go Programming (Golang): The Complete Developer's Guide, both taught by yours truly!