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!
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 2022.
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.
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!
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.
So far you've learned how to learn efficiently, how to change your habits, and you've learned about programming fundamentals.
Now is where the fun begins!
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 read the details of each steps below, but you can also watch the video below from ZTM's Lead Instructor, Andrei Neagoie, if you'd prefer:
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.
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:
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, but 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.
So you wrote some basic projects and they work great, but will these help you to feel confident in your skills or get you employed?
Possibly, but you can set yourself up for even more success by learning to write Python programs that focus on technologies that are high in demand. These will take you out of your comfort zone and also help you stand out from your peers.
Here are some examples of in-demand technologies.
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.
To get a handle on Machine Learning, you'll first want to check out a high-level overview to get a handle on what it's all about.
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.
OK, so will learning web technology and neural networks give you that expert level confidence or get you a job as a Python software developer?
The small projects you have 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 a 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 project to start with than actually building your portfolio itself!
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.
After becoming comfortable with some Django projects, you could also dive into Machine Learning projects to add to your portfolio.
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.
Because having plenty of activity on your Github 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?
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, add features to them, and then 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.
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 280,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!