Mastering any kind of skill in life takes time, and every talent has to be supported by practice. Programming, like any other discipline, is a process but after some breaking points, when you are finally able to find alternative ways to solve problems you'll know, that the victory is a summary of small steps (lines of code) made every single day.
The process of learning programming
So you want to know how top Python developers made it? Or, to be precise, how and where are they still learning? The key to success and the winner's mindset is based on doing' approach. Even if you feel already quite comfy with the vast majority of Python syntax and semantics, there is always a room to improve. No matter if your final goal is to get the job of your dreams, getting a raise at your current work, personal development or you need to get to know better the Python programming to finish a side project.
If you are already familiar with any programming language then you know, that this isn't a piece of cake and it needs time to become better in it. Regardless of the way, you will pursue your dream to master a programming language or finally build fully functional web applications with Python, it will take time and patience. Here are few ways to improve from a Junior or Mid-level Python developer to a total coding rockstar.
Seems so obvious, right? Let's start with this most typical answer which in fact is so true. The best way to get better in programming is to actually code. Period.
Learning by doing approach can get you from a nubie to a senior python developer.
If you are already dropping some lines of code at work but you would like to find a new way to use Python or maybe you want to dig into Flask while at work you are using Django, then practice in your free time. No matter how many courses, meetups or hackathons will you attend, there is no other way to do that than simply code.
2. Be active in the programming community
The best way to improve is to learn from those who are more experienced. Of course you can do it even if you don't want to leave your home but first let's focus on events tailor-made for developers.
Meetups, hackathons, conferences, and workshops - where the coding magic happens. You can boost your motivation, talk with other programs, grow your network and find new problems to solve. There is no better way to improve your skills than constantly pushing yourself to the limits. Moreover, while working together with other developers, you can always learn something new not only due to the main project but because their approach might be totally different than yours. Some events like DevCollege, Django Hotspot or PyCon are recurring, others are occasional and cozier, usually as a grassroots initiative based on location, particular programming language or a meeting in a coworking space for freelance devs. Meetups like this are usually announced on Facebook groups or services like meetup (for the international community).
3. Additional courses and webinars
The amount of online courses is insane - some of them are for free (YouTube videos, blogs), others are paid. If you are lacking the knowledge and you know exactly what you want to learn - find an expert on services like Udemy or Coursera and for a small fee (usually there are discounts), get the knowledge you are craving for.
4. Teach and get taught
As simple as it is, gets involved in online communities like StackOverflow, GitHub, HackerRank or even Quora. You can work there on some open source projects or just answer questions to people that are not at your level, yet.
Basically the more valuable knowledge you can put out there, the higher your reputation as an uprising expert will be. Also, well-known truth is, you can deeply understand something only if you are able to explain it in the simplest words. Obviously, it works both ways - whenever you have a question, most likely there is someone that can answer it and help you solve a particular problem. You might also find mentors dig in the code of services and applications you are charmed by or check the best Python content and its source code to learn how they did it.
5. Find your niche.
If you feel like you have gained enough knowledge in general use of a particular language, try to find what gives you the most joy. Some devs are more into building apps, others prefer data analysis or machine learning and AI. In Python programming, there are plenty of areas in which you can apply the language. However, if you feel like i.e. particular framework doesn't suit you well, just learn a different one. Ever thought about switching to Django? Furthermore, programming languages are constantly changing so you can't get bored! However, not to get crazy with new updates which are happening constantly, focus on particular aspects of the Python development and master it. Become an expert in the field that interests you the most, instead of trying to learn it all. In the end, programming is more about the process path than learned-by-heart commands'.
Do great stuff
For those that are searching for knowledge, there are many possibilities to get it. However, no matter if you choose a conference or decide to follow the #python thread on StackOverflow, the most important aspect is to DO. There is nothing that could replace the experience gained by trial and error method. The only way to learn by experience is to actually code, so find a project that thrills you and starts writing!