This article was written by Vincent Russo, the author of Educative’s beloved course Data Structures and Algorithms in Python. Vincent has a BS, MS, and Ph.D. in computer science and is a full-time security software developer and runs LucidProgramming, a YouTube channel to help individuals improve their software skills and value as developers.
Vincent is an experience Python developer and has extensive experiences with natural language processing, data structures, web scraping, and more.
Today, he offers his expert advice for beginner Python devs.
I have been programming Python for the better part of a decade. Throughout that time I have taught Python courses and provided tutoring and consulting services for individuals wanting to improve their Python skills. I have also spent time investing in creating educational tools and resources including my YouTube channel, LucidProgramming, along with a course on Educative that focuses on data structures and algorithms in Python.
As I’ve spent a lot of time teaching Python, I’ve noticed a number of common patterns and pitfalls in my students that prevent them from taking their skills to the next level. I have attempted to distill some of these lessons here so that a wider audience of people can benefit from me spotting these, and optimistically, benefit from them in their own journey to learn and develop themselves as Python programmers.
I tend to get a lot of emails and comments on my YouTube channel that are some variation of:
I want to learn Python. Please teach me!
While I commend the enthusiasm, my follow-up question is almost always
Well, why do you want to learn Python?
Python, like any programming language, is a tool. You generally don’t see people walking into the hardware store saying:
I want to learn the hammer. Please teach me!
Generally, one learns a tool as a means to an end to build something. The outcome is the goal. Learning Python is no different. It is also much easier to stay motivated and consistent if the reason you’re learning how to use a tool gets you closer to building whatever it is you want to use the tool to build.
Practicing different hammer swings and hammer techniques will only be so interesting for so long if you have nothing to directly apply the swings to. In the same way, working on programming drills and practice problems will only be so helpful for a brief period of time before you may ask yourself what value learning this skill is adding to your life.
You ideally want to adopt the Python programming language into your arsenal to solve a problem. And Python can solve many problems. It’s a versatile language that can be used for all kinds of programming needs, everything from web development to gaming to machine learning. Understanding your end goal will help you learn Python in a more focused, project-oriented way.
So, do you want to use Python as a tool to build websites? Perhaps looking into the Django framework would serve you well. Do you want to leverage the tools in the Python community for exploring a question in your research area? Perhaps searching existing open-source Python projects on GitHub will guide your focus to projects that are solving problems that you find interesting and engaging.
These are some of the questions that you may want to ask yourself to clarify your goals and outcome objectives.
We live in a time where access to the internet is abundant and cost-effective. There has never been a larger supply of online learning resources for self-motivated learners to benefit from. Python is also one of the most popular programming languages, and as a result, there is no shortage of resource material for learning the skills necessary to become proficient in Python.
To briefly toot my own horn, I have an entire YouTube channel dedicated to teaching various concepts in Python. I also partnered with Educative to develop a course on learning data structures and algorithms in Python.
This is, of course, a drop in the bucket in comparison to the vast amount of resources that exist in the wild to learn Python. Educative offers even more extensive offerings to learn Python. Even free blogs, forums, and online dictionaries can serve to fill in the blanks and get you up to speed with Python quickly.
The only limiting factor here is your own motivation and discipline to sit down and spend the time to engage in the material. So, yes, take advantage of online, self-directed learning, but be sure to do so in an organized and consistent way. You won’t learn Python passively; you have to actively engage and structure your learning.
Learning any skill takes consistent time and energy. It is far better to spend 30 minutes to an hour each day consistently over the course of several months as opposed to a handful of sporadic and heroic all-nighter binge sessions. Doing those every now and again can have some benefit, but without the force of consistency, this is largely a useless endeavor.
To make an analogy, a farmer goes out to water the crops and feed their animals each day. If the farmer does not do this consistently, the crops and animals do not thrive and he is by all definitions a poor farmer. The farmer simply can’t ignore their farm for the majority of the week only to make up for the neglect by spending 8 hours in one day watering the crops. In order to cultivate the garden of your skills, it is imperative that you approach your discipline with the same consistency and tenacity of the farmer to ensure a bountiful yield.
It sounds trite, but avoid the temptation to compare yourself to others, and instead, compare yourself to your previous self. In MarioKart, there are time trial races where you race a course and then race against your previous best time in the form of a ghost racer. You should be aiming at ignoring how well the other racers on the road are doing and instead obsessively and exclusively focus on “beating your race ghost”. This is the same for learning Python.
Not comparing yourself to others is difficult, especially when you find yourself in a classroom setting with other students who may possess a much more extensive background in programming than yourself. This can be disheartening and frustrating, but it’s important to remember that everyone starts off somewhere. Every Python developer, even myself, started with almost no knowledge or experience.
This, of course, applies not just to the pursuit of programming but also the pursuit of learning just about anything. For my own embarrassing anecdotal experience, when I initially picked up the guitar, I was not aware that one had to press down their fingers on the frets to illicit a sound from the instrument. Furthermore, I hadn’t even considered the possibility of doing both down and upstrokes with my picking hand. Once these silly oversights were addressed through kind mentors and teachers, I was able to make much more progress on my guitar playing.
It’s important that when you begin your Python journey, you do not let what will inevitably be retrospectively humorous oversights deter your progress and prevent you from improving your craft. You will make mistakes, but these mistakes have nothing to do with others. They are your unique learning opportunities, and down the line, you can “beat your race ghost” with advanced Python skills you learn from practice and error.
To summarize my advice:
Clarify why you want to learn Python
Take advantage of self-directed education
Compare yourself to your previous self
This list of advice is not extensive, but it does seem to characterize many of the situations I have found myself when mentoring individuals who wish to progress in their Python programming goals.
If you are considering delving into the Python programming language, if you feel like you’re plateauing and want to take your skills to the next level, or if you need help with a specific Python programming task or concept, I encourage you to reach out to me directly.
I obtain an immense amount of satisfaction from helping others attain their goals and reach their potential through technology. Even if you wish to reach out and say “Hello”, I sincerely appreciate all of the wonderful correspondence I receive each day from viewers and students. You all enrich my life, and I hope I am able to do the same for you all as well.
Vincent is an Educative course contributor who is also a full-time software developer and runs LucidProgramming, a YouTube channel to help individuals improve their software skills and value as developers. LucidProgramming offers content centered on Python development where the topics covered include data structures, algorithms, web scraping, natural language processing, and many more.
Join a community of more than 1 million readers. A free, bi-monthly email with a roundup of Educative's top articles and coding tips.