A lot of new developers ask the question "How long to learn python?". We have a 100% working answer - "learn python until you will have one project on GitHub with >1k Stars". I believe that opensource coding is the best way to learn python and to estimate the level of your knowledge because:

  1. To know what exactly to learn you need a real task – without having a task you will most likely do something not needed in real development
  2. You will learn python with the permanent idea that you are doing something that will be useful for other users and it will feed your motivation
  3. To become good at something you need to make mistakes and when your opensource popularity will grow, community members will help you find your mistakes and put you on the right way for free - just because they are also interested in using your project
  4. Getting stars is only possible if your project is used by real people which is already great criteria that you are ready to code for a money
  5. Repository visitors will start creating issues so you will boost your communication skill which is a must for every real development
  6. Strongpoint to your CV. As a CEO of a development company I would like much more to hire a person who has open source popular project because it is guaranteed that developers know how to code and how to reach goals

You can ask is not it a hard way to learn python. Probably yes. But it is best one.

What is GitHub

Website https://github.com is a platform for code hosting. It suggests free services for Open Source projects so you even don't need to pay for it when you are learning python. It has a very huge community and most of the open-source packages from PyPI (pip packages) and npm host their source-code on GitHub.

Other users will see your project and put stars if they think it is valuable:

Image for a hint

Developers also know that the popularity of a project determines better support, that is why when I see a package on git which I use in my production projects - I always put a star on it to support maintainers.

How to select and idea

Length of your learning depends directly on your motivation level - you are human and you can easily break your target if you will say "I am such, I am doing things which will not lead me to success, nothing works, etc". To feed your motivation you need to have a strong faith about someone else will use your project. So don't hurry uptake you time to understand what you will do, find forums, understand what you love to do and what people need, talk with potential users. You can select one from:

- some pip package which will do the very useful thing

- stand-alone project which users will be able to download to their server (e.g. some web app) or computer and run

Keep im mind how many users, probably your friends will use it.

Create a unique creative brand name. E.g. if you are going to do some vector-to raster convertor, dont call it python-vector-pixelyzer, it might be much better if it will be pyxelyze

How to create a successful opensource project

  • Deliver simpler. At the final phase make sure you are delivering your project to users (e.g. your pip package) to final users in the simplest way. Publish a nice PyPI package. Provide the simplest API interface with a minimally required set of arguments.
  • Define the right version. When you will publish new package releases - follow Semantic Versioning 2.0.0 - in other words, bump minor if you broke backward compatibility.
  • Be responsive to community and look at versions

I will not post conclusion, to save your time and start doing it. It is hard way to learn python - but it is worth it. It is not important how long to learn python, from now it is important how fast you will be able to reach your goal.