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 mastering the basics and theory to make fewer mistakes and learn the concepts.
Why Learn Python?
Granted, before you invest hundreds of hours into learning a new programming language, you want to know that it’ll pay off. Let me assure you: it will!
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, most research groups use software within their 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. Python 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 math and you don’t know any algorithm. To make it even worse, you have no clue about how to learn efficiently?
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 +/- 50% to account for your individual expertise.
Freelancing Side Gig: 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.
Freelancing Full-Time: If you work for 8h per day and 5 days per week, you can earn six-figures — 2,078 hours per year x $51 = $105,987 per year — from home! How awesome is that for a cozy couch-based freelancing business?
Python Employee: Another path to earning 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 than the average salary of a Python freelancer. So you should consider this option until you become an above-average Python developer.
What’s a Good 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 to monetizing your Python skills.
- First, apply for Python positions.
- Second, sell your skills on the free market.
- 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’s 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.
InfoBox “MVP“: Think about how you can simplify the software, how you can get rid of all features but one, and how you can build a minimum viable product that accomplishes the same validation of your hypotheses as the “full” implementation of your ideas would have accomplished. Only if you know what features the marketplace accepts—and which hypotheses are true—should you add more features and more complexity. But at all costs, avoid complexity. Formulate an explicit hypothesis—such as users enjoy solving Python puzzles—and create a product that validates only this hypothesis. Remove all features that don’t help you validate this hypothesis.
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 educational 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.
- (70%) Work on practical Python projects
- (10%) Solve code puzzles and watch educative videos
- (10%) Complete a Python course
- (10%) Read relevant docs and libraries
The Top 3 Tricks to Become a Persistent Coder
Do you keep procrastinating on learning to code? Learn how to fix your problem next!
I remember vividly the lectures of one of the most popular computer science professors at my University. He used to spend half of his time motivating us to learn his topic (web services) — pulling every lever he can lay his hands on such as money, contribution, anecdotes, and fun. If it motivated us, he was using it.
As a result, students were not only motivated to go to the lectures, they learned the technical details thoroughly, too.
The key to effective learning is long-term motivation.
Let me share with you a motivational case study of one of my most active Finxter users Csiszer:
“In one of your previous e-mails you asked us about our goals, dreams…
In brief: I’ve started to learn to code in 2017. I have had some health issues and I felt that I have to do something in order to keep my mind busy […]
One of my friends suggested me to learn Python. And I’ve found your Finxter site. Your awesome puzzles helped me a lot to understand different concepts in programming.
Last week I took an entrance exam and I was accepted for a post-graduate programming training at Cluj Napoca Babes-Bolyai University. That’s what I’m going to do in the next one and a half year 🙂
It seems that I’ve found a path… I’m really curious to find out if I can compete with it. I haven’t used mathematics for 20 years 🙂 and I’m a bit afraid. It’ll start this Saturday.”
Csiszer keeps pushing to learn Python for a few months now. He has made enormous progress since starting out.
If you are a loyal reader of my “Coffee Break Python” email series, you know how much I value persistence. If you keep pushing long enough, there are not many obstacles you cannot overcome. The fact that this may sound
The key is to push long enough.
So here are my top three tips that ensure you keep pushing long enough:
1) Do Practical Code Projects
This ensures that you see results in the real world. If you take action, things are going to happen. And there’s nothing as addictive as real-world feedback.
2) Formulate a Clear Python Goal
“A 2015 study by psychologist Gail Matthews showed when people wrote down their goals, they were 33% more successful in achieving them than those who formulated outcomes in their heads.” 
For example, clearly define your target Elo rating level on the Finxter app. There are many other ways to set goals in the Python space. The key is to be specific and WRITE THEM DOWN. Seriously, before you read on, write your coding goals down NOW. You’ll immediately increase your chances of
3) Use the Power of Habits
I recommend a simple habit with a low barrier to weave coding into your daily life: “Write a single line of code every day!”
You will soon realize that if you write a single line of code, you’ll also write a second and a third line. The low psychological barrier of writing a single line of code will ensure that there is no excuse of NOT making progress every day. The constant positive reinforcement and continuous improvement will compound your learning progress over the months.
So what’s the secret for unlimited coding productivity?
Write at least a single line of code every day on a practical code project with real-world impact. Write down a clear goal of your learning progress.
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 on 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?
Archived Freelance Projects
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 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.
Which Are the 5 Best Python Cheat Sheets?
Cheat sheets are among the most efficient ways to acquire knowledge. A great cheat sheet focuses on the key learning material and skips the rest. If you read over them every day, you’ll quickly learn all the basics you need to know to master Python.
Related Article: [Collection] 11 Python Cheat Sheets Every Python Coder Must Own
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.
- Python 3 Cheat Sheet: Highly condensed 2-page cheat sheet.
- Python Beginner Cheat Sheet: A bit lengthy but comprehensive, 26-page cheat sheet.
- Python for Data Science: Strong focus on the numpy library.
- Python Cheatography Cheat Sheet: Just another Python cheat sheet.
- The Ultimate Python Cheat Sheet Course (5x Email Series): Cheat sheet course if you have little time to learn Python (see following graphics).
You can download all Finxter cheat sheets for free here:
Develop a Project-First Mindset
What’s most useful for your coding productivity?
Yesterday I have programmed on my Python training app Finxter.com for solving Python puzzles. To deploy this app I’m using Django which is a Python framework, too. I realized that the #1 challenge was not the Python part but to combine different technologies to make the larger objective work.
This whole stack is huge. And if you want to create your own applications and start earning money as a Python developer, you need to solve this problem altogether. You need to combine all these technologies, the whole stack, into a single application that works. And of course, doing this is often not very clean at all. It’s dirty and messy.
Where to invest your learning time? A multi-dimensional optimization problem — with a simple solution (read on).
While isolating some of these technologies or programming languages and learning them separately (e.g. learn Python by solving Python puzzles) generally makes sense, it’s still only the tip of the iceberg.
By doing this, you improve your skill level in a single area. But what you need to do is to take a step back, look at the global landscape, and learn what you need to know — at this moment — to finish the project.
That’s why Python students should not simply focus on Python, but focus on shipping a self-imposed code project.
One example is my puzzle-based learning project Finxter.com. But you can also select projects like “creating your own chatbot”, “creating your own cryptocurrency trading program”, “analyzing Twitter data to find trending topics”, and so on. Then you simply choose the technology that enables you to finish the project as fast as possible. You don’t focus too much on a single language because this will cause you to have a limited view and seriously restricts your coding productivity.
How to spend your learning time is a very important factor for your career — it may be the most important decision in your life. In my course “Reach Python Freelance Level in 3 Months”, I recommend dividing your time into 70% implementation of practical code projects and 30% theory.
So 70% of your learning time should actually be invested in implementing and finishing your own project (if you don’t know which one, read my article with 10 practical Python projects to get started). This ensures that you don’t lose sight of the overall goal — and learn only for the sake of learning. It’ll force you to take a global view and to focus on how the different pieces fit together.
The theory part exists only to fuel your progress in practical code projects. For example, you solve Python puzzles to increase your Python skills, to be more productive in coding your own Python-related project.
It’s like an optimization problem where you often got stuck in local minima. If you only solve practical projects, you’ll get stuck in a local minimum because you don’t feel like you’re making progress anymore. That’s why you have the theory part to push you out of this local minimum by increasing your skill level even more.
In summary, take a project-first mindset. The concrete technologies are really secondary (and constantly changing, too). For me, as a Python teacher, it would be easy to recommend focusing your learning time on Python. But I want you to make progress towards your goals of finishing practical code projects.
In the real world, learning only a single technology is not how it works. You should consider the whole picture. You select the technology that solves your problem in the fastest and easiest way. And then you solve the problem. And by doing this, you create value for society and the marketplace and earn money in the process by selling your services or your product.
If you want to learn about the state-of-the-art as a Python freelancer, check out my free webinar (links to the Finxter website) — you’ll get three hacks for super productivity to increase your hourly rate.
Which Are the 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.”
“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.”
“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). A complete resource about the best Python courses is given here.
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
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
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
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
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? $179
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 The 4 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.
- Python Tutorial. It’s a collection of free in-depth articles about various topics such as Python lists, data structures, and functions.
- 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.
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.
While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com. He’s author of the popular programming book Python One-Liners (NoStarch 2020), coauthor of the Coffee Break Python series of self-published books, computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.