Python Learning Roadmap

Learning programming has always proven to be taxing especially for first time Python learners. It's like a journey, you need a roadmap to guide you and makes your journey run smoothly. Given its multi-paradigm structure (including procedural, functional and  object-oriented programming), Python poses a major challenge on where to begin and how. Likely, its structure contains unique concepts that may need ingestion of influx information.

Python programming is the perfect choice for a beginner. Begin with the master of its clear syntax and readability. Common issues encountered while undergoing this process can be anticipated when you know your own ultimate goal. In short, you have to pass over a few phases to succeed. First and foremost, you must start by setting a definite goal. Begin your journey by learning the basic of the language, and then continue understanding the object oriented programming paradigm. Finally, practice what you know by building a project and boost your confidence by joining an existing project and teaching it. Here is the python learning roadmap that you can follow.


Mistakes That I Made

There are a lot of stories about how a person learned Python or another language within four, six, nine or ten months and he/she became a full time developer. And I experienced learning basic Python for less than three months. But I need more than two years before I really able to build something by using Python.

Start learning Python from UNLIMITED Books, Videos and Tutorials!

If it is added to the time I started trying different tutorials without any success, it would be more than three years.

When I look back and look for what was wrong with my learning process, then I can say that my ultimate mistake was I learned Python without a clear roadmap. I started learning Python with a definite goal, but I changed the goal when I finished basic Python tutorials.

Furthermore, I didn't do enough research about the best learning materials from beginner to advance level. Subsequently, my learning journey didn't progress really well.

Sometime I brought my learning to a halt because I haven't found materials that I need. What's worse, my confusion led me learning another language (Javascript) and wasting more than four months abandoning Python.

I made another silly mistake when I changed my target from learning Python for data science to Python for web development. And again, I switched from learning Flask to Django web frameworks when I was not really skillful with Flask.

Focus on one aspect of Python is super important during your learning process.

That was an awful learning experience. I wish I could find a guidance that navigate me to learn Python on my own from novice to expert.

If you are a new Python learner, you surely want to avoid my rancorous experiences and make a smoother learning journey. Bellow are steps you can follow which will guide you learn Python language comfortably.

Python learning roadmap

Set a Definite Goal: Pick an Application You Really Like

Python programming is an excessively versatile language, you can build almost anything with Python. This also means that you can become whatever you like when you become a Python expert: web developer, data scientist, network engineer, GUI programmer, game developer or others. Python certainly offers you a bright career prospect.

However, you must be aware that you cannot become an expert in all of Python applications. You can be really good at three or four Python applications when you really proficient with this language. And for the beginning, you need to select one skill and stick to it until you become an advance programmer.

If you are unsure which Python skill you want to study, I suggest you to choose one of this: web development, GUI programming or data science.

You must also understand that there are plentiful libraries or frameworks that you can use to build a Python application. Once again you have to concentrate to only one framework. Suppose you prefer Python for web development, you can learn Flask web framework until you really good at it.

Changing the framework you learn before you are fully understood with it, will make your learning process take longer time.

Learn the Basic

If you want to become a Python expert, then you have to start from the basics. Diving deeper into a Python application without good understanding of fundamental functions is always a common discouragement. You may have to spend half of your python learning time on this phase.

First of all, you have to know your best learning style. Do you love learning from textbooks, practical blog tutorials, interactive web or video tutorials?

Videos from YouTube has been more and more popular as the source to learn any knowledge. You can check five YouTube channels which I have followed to learn basic Python.

For some people, book is irreplaceable. Books provide comprehensive explanation and practical examples that its fans really need. If you are one of them, you can start learning the very essence of Python programming from Lean Python book. You will learn only the core of Python without needing to learn something you'll never use.

Other great Python book you can use are Automate the Boring Stuff with PythonPython Crash Course and Learn Python Programming.

Alternatively, you can learn Python fundamental from interactive web platform such as Codecademy or a MOOC provider such as edX (Introduction to Computer Science and Programming Using Python). Mobile app similar to Sololearn is also a good place to learn Python basic.

Based on my experience, you need to take at least three Python basic tutorials. Every tutorial has its strengths and weaknesses. By following several tutorials, you will get full insights of this language. Some concepts which you don't adequately comprehend from the first tutorial, can be better understood from another source.

Don't be hasty, studiously work here will go a long way to determine your future coding skills. 

All said and done, consistency is a must have. Making solid commitments to accomplish a given phase is vital. Mastery can only be achieved through a commitment to code every day.

Understand Python Object Oriented Programming

Python is a multi-paradigm programming language. It means that you can build a program in Python by following different styles of programming (read this wiki to understand programming paradigms). Object oriented programming (OOP) is one of programming paradigms that you need to be adept at it.

When you learn basic Python, you would probably write less than 50 lines of code in a lesson. On the contrary, professional Python programmers must be able to build apps that contain hundreds of thousands or even millions of lines of code to build a software.

Originally, people broke down complex problems into smaller chunks and solving each parts in separate units of code. In contrast, OOP concept offers a new way of solving problems. In OOP, you create a class which contains variables and functions. You can then instantiate objects from a class in more interactive ways.

In brief, OOP is a better way to model and organize a huge application. Object-oriented programming imitates the real world behavior of how things work. This programming paradigm has become the most commonly used approach in software development. Almost all programming language accommodate OOP.

You can find out the benefits of object-oriented programming from this website.  Learning OOP in Python could be strenuous for a beginner, you can start learning this concept by following several YouTube tutorials.

For book lovers, there is a book for learning Python OOP, Mastering Object-oriented Python. This book provides a clear and coherent learning journey and designed to make this sophisticated approach to programming easier to learn quickly.

Python learning roadmap

Put Python Programming Into Practice: Build Projects

At this level, I am sure you have what it takes to build a simple program, but have you tested your Python skills? If not, then take into practice. Projects are an easy, great and practical way to apply what you would have learned. You know well that knowledge can only be retained if you put it to the intended use.

This is where you need to look back to the goal you have set. And it is most likely that you must pick a framework or library to build an application. Remember, stick to a framework until you are really competent with Python.

The best framework for this stage is a framework which keeps you busy building something with Python code. Flask is a good example supposing that your goal is to develop websites by using Python.

In addition, you must have an extra goal in this phase. You have to create an application which would become your first portfolio!

In my opinion this is the most crucial and rewarding stage of your Python learning journey. You should put all of your efforts to use most of Python syntax you've learned to build something useful. If you need more Python projects ideas to build a portfolio, you can check this link.

Here are a few books you can look at to get ideas of common projects in Python:

  1. Flask By Examples
  2. wxPython 2.8 Application Development CookBook
  3. Learning Scrapy

Join Python Communities

From the projects, you must have learned dozens of lessons. How do you keep and excel them? Join communities, off-line and online Python communities.

I didn't have a privilege to join an offline Python community because I couldn't find one in my city. You can read a story which shows how beneficial to have an offline community with weekly meetup in this web.

Alternatively, you can find a friend who is learning Python in the same level with you. You can organize a pair programming with him/her. With pair programming, you have the opportunity to have somebody thinking with you. Also, he/she reviews your code as you study his/hers.

Pair programming can also be done with someone who has higher Python skill than you. Your partner will act like a mentor who reviews and gives suggestions on how to write a better code. You can search online someone who is ready to give you guidance, but surely they charge you for their service.

Enroll Nanodegree in Programming with Python Now!

On the other hand, online communities offer different benefits. You can ask problems you encountered anytime and from literally anywhere. You have a great chance that you will get answers.
Don't get confused when you receive different answers, Python like other languages, offers various ways to solve a problem. It is your chance to learn the best solution you can use.

By following online communities, I learned so many Python tricks you can't find from books or video tutorials. There are so many avid Pythonistas who are so generous in sharing their knowledge. You can find them on Facebook group, Telegram group or other online forums.

Exceed Your Python Skill by Sharing It

Congratulation, you are a proficient Python programmer when you reach this step. You already have several portfolios, and you are ready to apply for Python jobs.

However your learning journey is far from over. Python is a very vast language, there is always something new to learn, new tricks to be revealed. The funny thing is you can achieve it by sharing your knowledge.

First of all, you can contribute to an open source project. This is a one stop learning processes. You can learn other contributors skills, find mentors, teach your skill to beginners and enrich your experiences in the same time. However, the most rewarding things being involved in an open source project are you can meet like-minded people and showcase your expertise to increase your reputation.

Discover an open source project that really engage you from GitHub Explorer or Open Source Friday. Examine whether the project is active and accepting contributors or not. This blog provides a checklist how to inspect a good project and step by step guide to make contributions.

One more thing to remember, contributing to an open source project doesn't always mean that you have to fix bugs and create new functions. It's far beyond coding. Documentation is one element of a project that so often being overlooked. This is a good place for you to start contributing.

Other aspects of a project you can commit your time and expertise include, but not limited to design improvement, organizing issues, answering questions about the project, organize meetups and workshops, write a translation and create tutorials.

Secondly, you can teach your Python knowledge to new learners. Organize meetups or coding community in your own city and inspire newcomers to stay motivated mastering Python.

Teaching is learning twice over. By teaching Python, you have to prepare materials, deliver the lessons and be prepared to answer questions. You are not only revising what you have learned, you will also encounter new problems to solve. That's when you go back to communities, ask the problems you find and get new insights.

I did this activity by teaching high school students in my neighborhood. I feel it's so gratifying to have small Python community in my city.


Lean Python
Learn only the essential aspects of Python

Conclusion

Coding is really exciting and rewarding, don't let any difficulties stop you from learning to program. Python is the right language to start with. Nevertheless, being a general-purpose programming language Python is a really big subject.

Prepare yourself for each step you need to get through. If you pass them and set up something of your own, you will never get bored. Lastly, legitimately claiming a high level of Python proficiency requires untamed motivation. Remember to start small so as to gain confidence.