Don't want to get left behind? Learn to build with A.I. now 🤖

Learn Python for Free, Get Hired, and (maybe) Change the World!

Jayson Lennon
Jayson Lennon
hero image

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 as a beginner this year.

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:

  • Why you should learn Python this year
  • How to get started as a software developer with efficient and effective learning techniques
  • How to learn Python for free and build projects that stand out to employers so that you can get hired

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!

Wait, Why Should I Listen 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.

jayson lennon ztm instructor

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!

Part 1: Why Is Python A Good Language To Learn?

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 this year.

GIF video

1. Python Is In High Demand

Seriously, Python is used in almost everything:

  • Desktop apps
  • Data Science
  • AI
  • Machine Learning
  • System admin
  • Data Analytics
  • Game Development and more

And thanks to it being a general purpose language, it can be used on both frontend and backend projects.

GIF video

2. Python Roles Pay Well

Because it's in high demand, the salary for Python developers is very competitive.

According to Zip Recruiter, there are currently 91,174 Python developer jobs available (at time of writing) with a salary range of $121,932 USD per year.

average python developer salary

This puts Python at a higher average salary than the majority of programming languages right now, even for junior developers.

3. Is Python hard to learn?

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!

Python 3 has a built in help feature

This accessibility means that you can learn Python relatively quickly, especially if you follow a set learning path or bootcamp.

4. Python Is Incredibly Popular

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. In fact, it's been in the #1 spot for a few years now!

python tiobe index ranking

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.

5. Python Offers Extensive Libraries & Frameworks

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.


6. Python Is Open Source

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.

7. Python Is The Go-To "Glue" Language

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?

GIF video

To me, it sounds like Python is the best programming language to learn this year, regardless of if you're a newbie starting your coding journey or a grizzled veteran looking to improve!

In fact, we actually wrote a guide on the top 10 most valuable languages to learn this year, and assessed their availability, earnings, future growth and more, and Python came out #1.

How long does it take to learn Python?

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).

Part 2: How To Get Started As A Software Developer - 7 Steps For Beginners

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:

1. Find Your Why

2. Don't Go It Alone

3. Learn To Learn

4. Improve Your Time Management

5. Change Your Habits If You Want To Succeed

6. Exercise

7. Learn Programming Fundamentals

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.

Let's go!

#1. Find Your Why

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’:

  • Why do you want to learn?
  • What will it mean to your life once you’ve learned Python?
  • How will it affect your day and how you feel?

Attaching a vision to an end goal can help you stick to it and achieve success.

#2. Don’t Go It Alone

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.

ztm discord in 2024

With over 480,000 developers working at places like Google, Tesla, Amazon and more, it’s a gold mine of information, support, and just a wonderful community.

#3. Learn To Learn

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.

unlearn what you have learned

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.

The Feynman Technique (So You Can Learn More Effectively)

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.

GIF video

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.

the feynman technique


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.

#4. Improve Your Time Management

Time management is extremely important when learning or working from home. With this in mind, I highly recommend the Pomodoro Technique.

software engineers should use 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.

ultradian Rythm

#5. Change Your Habits If You Want To Succeed

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.

  • Have your phone nearby and you’ll check it every 15 minutes.
  • Don’t buy cookies and you’ll lose a few lbs without even trying, simply because they’re not an easy option.

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.

#6. Exercise

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!

GIF video

#7. Learn Programming Fundamentals and Coding Basics

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).

So Where Can You Learn These Fundamentals?

My opinion on the best free resource to learn the fundamentals is from Isaac Computer Science.

isaac computer science centre

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?!

Part 3: How To Learn Python For Free

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:

Step 1: Get The Tools

Step 2: Get Some Python Reference Resources

Step 3: Build Simple Projects

Step 4: Stand Out From Your Competition + Build Bigger, More Sophisticated Python Projects

Step 5: Polish Up 2 Or 3 Of Your Favorite Projects

Step 6: Expand Your Knowledge With Specific, In Demand Python Skills

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:

Step 1: Get The Tools

Start off by getting the tools that you’ll need.

Download Python 3

You can download Python for any operating system from the website.

download Python

I recommend that you download Python 3 instead of Python 2, as this is the updated version and Python 2 is being phased out.

Get a Code Editor or IDE

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.

Step 2: Get Some Python Reference Resources

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.

GIF video

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.

Step 3: Build Simple Projects

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.

There are also multiple other places to find project ideas.

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!

Step 4: Stand Out From Your Competition + Build Bigger, More Sophisticated Python Projects

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.

GIF video

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!

Editors Note:

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.

Build Your Portfolio

I recommend that you use a popular Python web framework called Django to build your portfolio, and this tutorial will get you started with creating your own portfolio website.

You can get some more essential details about Django by going through this tutorial from Mozilla to solidify your understanding.

Add Projects To Your Portfolio

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.

This list has some great project ideas and explains how you would go about implementing such ideas, and there are some more here.

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.

While working on your projects, you'll also want to make sure that they are open source, with your code posted regularly to GitHub so that it can track all the changes and updates.

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!

Improve Your Portfolio Design

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.

GIF video

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!

Step 5: Polish Up 2 Or 3 Of Your Favorite Projects

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.

GIF video

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

Step 6: Expand Your Knowledge With Specific, In Demand Python Skills

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:

Web 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.

ZTM's Lead Instructor, Andrei, has a fantastic guide about how to learn web technologies and become a web developer for free.

learn to code for free

It's packed with resources on web design, web programming, and everything else needed to make a great website.

Database Technologies

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. sqlbolt

It's interactive too, so you can check your work in real-time as you learn.

Predictive Data Analytics

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, and others. These are all industry leaders - thanks in part to tracking and understanding their metrics.

GIF video

If you want to be in high demand and predict the future, then it’s worth learning Python for Business Data Analytics.

Machine Learning + Data Science

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.

GIF video

Having some knowledge of this field will make you extremely valuable to organizations, and demand is just going up, up, up.

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, as well as this video series by MIT on Deep Learning.

Next, some details on neural networks and how they work is in order. You'll have enough information to create a neural network using a popular Python Machine Learning library called Keras.

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.

To Do Now…

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 480,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!

More from Zero To Mastery

4 Reasons To Become a Freelance Programmer preview
4 Reasons To Become a Freelance Programmer

Freelancing is in your future. Learn why you need to become a freelancer, how to start freelancing fast and cost-effectively, and how to land your first freelance jobs. Plus, how to quickly gain skills for the most profitable freelance jobs available.

Career change at 38: Transitioning to Software Developer in 6 months & scouted by Google! preview
Career change at 38: Transitioning to Software Developer in 6 months & scouted by Google!

How I taught myself to code and changed careers to become a Software Developer at 38 years old.

Getting Hired by Amazon as a Software Developer with a 2.9 GPA preview
Getting Hired by Amazon as a Software Developer with a 2.9 GPA

Part of our Zero To Mastery Student Interview series, we speak with Justin Lin about how Zero To Mastery helped him land internships with JP Morgan and Amazon and what advice he has for others that want to do the same.