Are you looking for the best way of becoming a professional Python developer? After reading this article, you will have a crystal clear plan of how to start learning Python. You don’t need any programming skills for this plan to work. In short, you invest 70% of your learning time in practical projects and 30% in theory to understand code better.

Why to learn to code with Python?

Coding is one of the best-paid professions in the world. The average salary of a Python developer in the US is $116,379 (source). Learning to code could easily be the most profitable decision in your life.

The reason that coding is well-paid is that it is in high demand by industry and academia.

In industry, coding is a crucial skill to leverage the productivity gain of virtual and physical machines.

  • You need software (e.g., CAD programs) to manufacture millions of products such as cars, toys, skyscrapers, and smartphones.
  • You need software (e.g., artificial intelligence apps) to create humanoid robots, self-driving cars, manufacturing robots, recommendation systems, and myriads of smart devices in the Internet of Things.
  • You need software to run search engines like Google, e-commerce players like Amazon, and social networks like Facebook.

Software is not yet another industry – it’s an unstoppable force that disrupts any other industry in the global economy.

In academia, you have to search hard to find a research group that does not use software within its research process. In the last decades, software enabled powerful scientific research in computer science and artificial intelligence. Semantically close research areas such as mathematics, physics, and electrical engineering are already relying on software as an integral research part. But software has had a lasting impact on remote areas as well such as linguistics, history, and music.

Do you see why learning to code is a good idea? Do you see the benefit of entering this area full-time, as a software developer? As a coder, you will have a foot in the door into any area you would like to enter. It doesn’t matter whether you want to get a Ph.D. in any scientific area, create web applications, start your own business, or study foreign languages. Software is your ticket to success.

How long does it take for a newbie to learn Python?

So let’s say you do know little about coding, you are bad at maths and you don’t know any algorithm. To make it even worse, you have no clue about how to learn efficiently?

It will take you 219 x 25-minute slots to learn Python (source). That’s 5,475 minutes, 92 hours, or 12 eight-hour-days of focused learning.

Of course, you could debate whether you could consider yourself to be an advanced coder at this stage. Even so, you will be able to create practical projects, sell your services as a freelancer, and solve most of your practical coding problems. (That is – if you are patient and willing to learn). In fact, 92 hours is more than four times the time investment proposed in a famous TED talk titled “The first 20 hours — how to learn anything”.

One of the key takeaways of the talk is to learn in a probabilistic manner! Focus on practical skills. Don’t waste your learning time on indirect skills such as maths, logic, or algorithmic theory. Doing this will certainly boost your skills in these areas. But your main goal is to learn Python, isn’t it? If you want to learn Python, start and end your day with coding Python doing practical projects. Learn the fundamentals as you push your practical projects.

How much money can you earn with Python?

One way to earn money with Python is to sell your Python skills on the free market by becoming a freelance Python developer. As a freelance Python developer, you can expect to earn between $10 and $80 per hour with an average salary of $51 (source). Your lifestyle will be different when earning $10 versus earning $80. It’s driving a Volkswagen versus driving a Porsche. But the quality difference of Python freelancers on the open market is at least as huge. To get a reasonable expectation of your income, take the average salary as a starting point and add up to +/- 50% to account for your individual expertise.

Let’s say you do some freelancing on the side for 8 hours each Saturday. You can expect to earn an extra $400 per week or $1600 per month (before taxes). Your actual income will be a bit lower because you have to market your services to find paying clients.

Another path to earn an income from your Python skills is to get a position as a Python developer. In other words, you are working as an employee for an established company. Again, the average salary of a Python developer in the US is $116,379. The average worker works 2,078 hours per year (source).  Using the 2,078 hour divisor, we calculate the hourly wage as $116,379 / 2,078 hours = $56. Surprisingly, this is even more as the average salary of a Python freelancer. So you should consider this option until you became an above-average Python developer.

What is a solid Python training plan?

The goal of this training plan is to push you from the Python beginner level to the intermediate level. Being an intermediate coder, you can start earning money as a Python freelancer. There are 3 main paths of monetizing your Python skills. First, apply for Python positions. Second, sell your skills on the free market. And third, develop your own Python projects.

In any case, I have developed a training plan that suits your need. But before we dive into it, you need to fix how many minutes you want to invest into Python every day. What is your number?

The plan is practical: reserve 70% of your time for practical projects. Either select an own project, an archived freelance project for training purposes, or a real freelance project. The next section describes in detail how to find practical code projects.

Start with a simple project and finish it. Let me repeat: it’s critical that you finish each project you have started. You need to build self-confidence to achieve any success in your career. Don’t stop working on a project because it gets ugly! Work on the project until you have a minimum viable product (MVP)! Coding ALWAYS gets ugly. Your best ally is your persistence. Keep pushing until all resistance falls apart.

Finally, here is the practical training plan. Divide your training time into four blocks. First, work on a practical Python project until you achieve your minimum viable product. Second, solve code puzzles and watch educative videos. Third, work on a Python course. And fourth, read the docs and browse the libraries that are relevant to your practical project. Divide the time like 70% / 10% / 10% / 10%. You can use the first time block to get the knowledge you need to finish the project. I have added resources that help you to complete any of them.

Training plan

  1. (70%)    Work on practical Python projects
  2. (10%)    Solve code puzzles and watch educative videos
  3. (10%)    Complete a Python course
  4. (10%)    Read relevant docs and libraries

How to find good practice problems?

Selecting a good practice problem is the most important thing you can do to become a better Python developer. As described above, you should spend 70% of your Python time implementing a single practice problem until completion.

Working on practice problems will inject meaning and a sense of accomplishment into your daily Python time. It ensures that your motivation to learn Python persists. Without persistence, you have no chance of becoming even an average Python developer.

Following this plan, you will spend your main time investment solving real-world problems. People’s lives will improve because of your code. As soon as others start to acknowledge your efforts, you will become addicted to coding. You will solve harder and harder problems. An upwards spiral towards becoming a Python master begins. This motivation cycle is a powerful engine to drive your persistence for decades to come.

So how do you find good Python projects to solve? It’s simple. Have a look at the world around you. Where do people suffer? Watch out for the little pains and inefficiencies in your daily life. You don’t have to look further. There are myriads of opportunities in your immediate environment.

  • Your email inbox is bursting. Write a Python script that uses simple machine learning techniques to sort your emails.
  • You observe yourself doing similar tasks again and again. For example, you migrate customer data into an excel file. Then, you calculate the customer lifetime value. Finally, you copy the result into your company’s database. Now, write a Python script that does it for you.
  • You constantly look up the stock price of the Apple stock you own. For example, you want to be ready to sell after the stock price climbs above a certain threshold. Write a Python trading bot that does it for you.
  • You need to get notified as soon as somebody mentions you in a large news site. Write a web crawler bot in Python.

Make it a habit to watch out for opportunities using your Python skills to solve real-world problems.

I know that you don’t like this answer. You have to constantly watch out for these problems. And developing new habits is hard. Although solving your own problems is the single best way of learning Python, you prefer the easy solution, don’t you?

Here is the easy way of finding practical Python problems: browse archived Python freelance projects. If you are a beginner programmer, watch out for the small projects ($5 – $30). If you are an advanced programmer, watch out for medium-sized problems ($100 – $400). In any case, you will find problems in your difficulty range. And the good thing is that they are as practical as they can be.

Would like to have an example? Here is a project description for a small project in the $25-$50 range.

“Content Analysis in Python (data mining, dictionary analysis, frequency of word analysis). This script would be written in Python.

It should read in a .csv (pandas?) and then for a column (specified as column_name) in each row perform content analysis based on a dictionary.

This should create a new CSV with categories for each row and frequency counts.

I have already added in sentiment analysis, but am struggling with the dictionary-based content analysis.”

Note that the CSV files are already given in the project description. Thus, you have everything you need to start implementing a solution for training purposes.

Which are 5 best Python cheat sheets?

Ok, so you decided to learn Python. You know that you should invest the bulk of your time in solving practice projects. But what about the rest?

Cheat sheets are a great way to absorb a large amount of information in a short amount of time. I always call them the 80/20 principle of learning Python: learn 80% of the language in 20% of the time.

Because of the density of information, cheat sheets are the #1 resource for your 30% learning time. You will never (yes, NEVER) feel that studying a cheat sheet in depth was a waste of your time. In fact, it’s hard to find any other use of your time that tops the learning efficiency of studying cheat sheets.

These are the 5 best Python cheat sheets.

Which are 5 best Python books?

A few years ago during my computer science studies, I asked my fellow students about their preferred computer science book. More than half of them admitted that they have not even read a single textbook! Shocking.

Computer science textbooks serve an important purpose. They push you deep into the rabbit hole. They give you a conceptual understanding of the foundations and methods you apply every day. Without textbooks, you won’t develop a deep understanding of any topic.

Some book authors do not seem to understand this important role of diving deep, of teaching underlying concepts. They write shallow books providing compilations of existing online resources.

But if you read the right books, you will reach a level of code understanding that you can not easily reach through browsing online resources and blog posts.

To dive deep into Python, read the following 5 Python books in your 30% learning time. Each of the book authors spent hours optimizing their book descriptions. So I take their words to tell you what their books are about. Decide for yourself which one you want to read first.


Learning Python by Mark Lutz:

“Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz’s popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It’s an ideal way to begin, whether you’re new to programming or a professional developer versed in other languages.”


Python Crash Course by Eric Matthes:

“Python Crash Course is a fast-paced, thorough introduction to Python that will have you writing programs, solving problems, and making things that work in no time.In the first half of the book, you’ll learn about basic programming concepts, such as lists, dictionaries, classes, and loops, and practice writing clean and readable code with exercises for each topic. You’ll also learn how to make your programs interactive and how to test your code safely before adding it to a project. In the second half of the book, you’ll put your new knowledge into practice with three substantial projects: a Space Invaders–inspired arcade game, data visualizations with Python’s super-handy libraries, and a simple web app you can deploy online.”


Think Python: How to Think Like a Computer Scientist by Allen Downey:

“If you want to learn how to program, working with Python is an excellent way to start. This hands-on guide takes you through the language a step at a time, beginning with basic programming concepts before moving on to functions, recursion, data structures, and object-oriented design. This second edition and its supporting code have been updated for Python 3.

Through exercises in each chapter, you’ll try out programming concepts as you learn them. Think Python is ideal for students at the high school or college level, as well as self-learners, home-schooled students, and professionals who need to learn programming basics. Beginners just getting their feet wet will learn how to start with Python in a browser.”


A Smarter Way to Learn Python: Learn it faster. Remember it longer. by Mark Myers:

“I wasn’t smart enough to learn a computer language like Python—until I got smart about how to learn it.

I was smart enough to earn an honors degree in philosophy from Harvard, but an aptitude test told me to avoid computer programming. I’m sure it was right. But then I designed a learning system for myself that quadrupled my aptitude for learning computer languages. It worked so well for me that I’ve used it to teach coding to grandmothers, cab drivers, musicians, and 50,000 other newbies.”


Coffee Break Python: 50 Workouts to Kickstart Your Rapid Code Understanding in Python by Christian Mayer:

“Little time to learn Python?

Python puzzles help you to learn faster, smarter, and better. This book offers 50 educative code puzzles, 10 tips for efficient learning, 5 Python cheat sheets, and 1 accurate way to measure your coding skills. 21,000 Python students have already improved their coding skills on our puzzle-based learning academy Finxter.com.”

Which are the 5 best Python courses?

First of all, let’s clarify characteristics of high-quality courses.

  • A great course offers a transformation – it leads you from point A to point B. Thus, the best course clearly defines point A and point B.
  • A great course involves practice projects. So a course is usually much more interactive than a book.
  • A great course leverages multiple mediums including video, text, quizzes, and audio material.

We use these characteristics to classify the following 5 popular courses on 5 different platforms (Coursera, Udemy, Udacity, Youtube, and Teachable).


Python for Everybody:

What’s the platform? Coursera was founded in 2012 by Andrew Ng and has more than 33 million registered users (2018).

Who is the provider? University of Michigan

How much does it cost? $415

What’s your transformation (A → B)?

  • Start point A: “Beginner Specialization. No prior experience required.”
  • End point B: “This Specialization will prepare you to take other courses and develop advanced skills.”

Are practical projects part of the curriculum? Yes

Which learning media are leveraged? Video, Text, Quizzes, Practice Projects


Complete Python Bootcamp: Go from zero to hero in Python 3

What’s the platform? In contrast to Coursera, the platform Udemy focuses on courses provided by experienced individuals rather than large academic institutions. It’s more a peer-to-peer system for education.

Who is the provider? Jose Portilla

How much does it cost? $11.99

What’s your transformation? “Go from zero to hero in Python 3”

Are practical projects part of the curriculum? Yes

Which learning media are leveraged? Video, Text, Quizzes, Practice Projects


Intro to Computer Science

What’s the platform? Udacity is a for-profit education platform founded by Stanford professor Sebastian Thrun in 2011. They offer technical courses created by industry leaders with a tendency towards practicality.

Who is the provider of the course? Dave Evans

How much does it cost? $0

What’s your transformation (A → B)?

  • Start point A: “You are not expected to have any previous programming experience entering the class.”
  • End point B: “By the end of the class you will understand the big ideas of search engines as well as how to read and write your own computer programs.”

Are practical projects part of the curriculum? Yes

Which learning media are leveraged? Video, Text, Quizzes, Practice Projects


Learn Python – Full Course for Beginners

What’s the platform? Youtube is a fully decentralized and free platform to share all kinds of videos.

Who is the provider? freeCodeCamp.org

How much does it cost? $0

What’s your transformation?

  • Start point A: “Beginner.”
  • End point B: “Follow along with the videos and you’ll be a python programmer in no time!.”

Are practical projects part of the curriculum? No

Which learning media are leveraged? Video

Learn Python in Your Coffee Break 

What’s the platform? Teachable is a decentralized platform for self-hosting courses about any topic. It’s from individuals to individuals.

Who is the provider? Christian Mayer

How much does it cost? $49 / month

What’s your transformation? “How to Become a Python Developer in Less Than 2 Months (One Coffee at a Time)”

  • Start point: Beginner in Python
  • End point: Being able to sell your skills as a Python freelancer

Are practical projects part of the curriculum? No, the focus is on quizzes and rapid code understanding rather than practical code projects.

Which learning media are leveraged? Quiz-based, text, some video material, premium access to code puzzles @Finxter.com.

Which are 5 best free online training platforms?

You can quickstart your Python skills easily via these online resources:

  • The official Python tutorial. This tutorial is comprehensive, understandable, and practicable.
  • Codeacademy. This online platform provides free courses for different programming languages such as Python, Java, JavaScript, and HTML / CSS.
  • Topcoder. This platform to improve your Python skills is not only free, it even pays you for doing freelance work in the form of coding contests.
  • Python Tutorial. It’s a collection of free in-depth articles about various topics such as Python lists, data structures, and functions.
  • Coffee Break Python (Finxter). Our free online Python training room is all about continuous improvement by solving rated Python puzzles. You can not only train your skills but also test and compare your Python skills against other programmers.

Which are the top 10 tips for newbies?

  • Learning by doing. Always experience with code snippets. Run them in your own environment, change them, try to crash them.
  • Don’t rush over the fundamentals. Many coders use StackOverflow to look up the code snippet they need. They copy&paste what they found into their own project without properly understanding the code. Although this solves their problem in the short term, this behavior harms their long-term productivity. Decide now, once and for all, that you play the Python game for the long-term.
  • Seek help. Be active in online communities and forums. Ask – and you will get answers. By going out there, you will get to know new people, new opportunities, and new insights.
  • Master Google Search. Searching for relevant information is one of the core competencies of Python developers. It does not harm to read one or two articles about effective Google search. Learning about Google search tricks (e.g. why to use quotes) will boost your productivity.
  • Automate. As soon as you feel bored doing a process, again and again, watch out for ways to automate. Although you have to invest time now, you will get it back hundredfold later. The reason is two-fold: you become a better Python coder AND you will directly save time doing stupid tasks.
  • Have a walk. Seriously. I can not think how often I was stuck finding a bug four hours. Seeing my frustration, my colleague used to throw me out of the office and convinced me to have a walk. Coming back with a fresh mind, I was able to fix the bug within minutes.
  • KISS. Keep It Simple, Stupid! Keeping code simple is actually a difficult endeavor. You have to understand your code snippet on a deeper level. Ask yourself: how can I get rid of unnecessary complexity? How can I make it more readable by renaming function and variable names? Where is redundant code and how can I use functions to get rid of it? Remove stale code instead of commenting it out. Find concise ways of rewriting your code. Think about your code BEFORE hacking it into your keyboard. And find even better alternatives.
  • Have a side project you are passionate about. Nothing will keep you motivated to learn to code like something you care about deeply.
  • Focus on concepts, not programming languages. Languages and technology changes. Concepts are here to stay. The concept of deep neural networks has not fundamentally changed within the last decades. The hardware on which you train deep neural networks has changed a lot.
  • Stick to it. Don’t leave a problem until you have fixed it. Just don’t. There is something in the nature of hard problems. You can fix them only by leading a full-fledged, whole-hearted attack against them. Burn the bridges, go all-in, take all the time it takes, and be ready to learn.

Thanks for reading this article all the way to the end. So what’s your key-takeaway? Learn Python by solving 70% practice projects (e.g. archived freelancing projects) and 30% theory (e.g. solving code puzzles).

Where to go from here?

If you liked this article, I highly encourage you to check out my free Python email course. You will learn Python on autopilot.

  • 5 Python cheat sheets within the first week.
  • A new Python concept every 7 days.
  • The best Python learning resources.