How to Level Up Your Python Skills by Learning From These Professionals
Disclaimer: I'm not affiliated with any of the courses or people mentioned in this article, and I'm not financially supported by any organization or individuals mentioned in this article.
The internet is full of courses and other material to start learning Python. The most famous ones are e.g. 100 Days of Code: The Complete Python Pro Bootcamp for 2023, codeacademy and freeCodeCamp. However, after completing one (or several) of these courses a lot of people get stuck at the same level: the level of a junior Python developer.
In Europe, on March 4, 2023, there are almost twice as many job vacancies on LinkedIn for medior/senior Python developer roles than there are for entry-level Python developer roles (respectively 23,739 versus 12,720).
The reason why a lot of people who (want to) learn Python don't make it past the junior level, even after years of programming, is that you need to keep learning new aspects and theory after reaching the level where you can start programming yourself. Simply put there are three principles related to keeping improving your programming level, and you need to apply at least two of them to see significant growth in your code quality.
- Practice programming yourself.
- Learn from working on projects with more experienced developers.
- Keep learning yourself by actively searching for more advanced programming concepts and applying them in work-related or personal projects.
The first principle is unavoidable, of course. Just like you can't learn tennis through reading theory about where you should hit the ball optimally, you can't learn programming by just reading and watching content about it. If you have a job which involves programming, this is pretty easy, as your boss expects you to program. If you program on a personal basis only, you might have to actively search for projects to work on. Luckily, there are many websites which offer programming projects to take on, such as:
— Advent of Code: here you can find almost 200 programming challenges, ranging from beginner to expert.
— Kaggle: an online community for data scientists with many data sets to practice on and competitions to participate in.
Or take a look on here on Insane, where 70+ Python projects are suggested, accompanied by code solutions and explanations, and some even include tutorials!
Besides actively programming yourself, at least one of the second and third principles is necessary as well to eventually surpass the junior level. However, the second principle (working together with more experienced developers) is more tricky to achieve, as you have less influence on it. I've been the most experienced in Python in a Data Science team while I was still a junior myself, which I noticed made growth in my coding skills difficult. Eventually, I left that team to join a team where I could learn from colleagues who were more senior than me. I learned more about Python in the first few months while being surrounded by seniors than I learned in one year being the most senior myself.
On March 5, 2023, salaries for Python developer positions on glassdoor range from $50k to $127k a year for entry-level positions, while ranging from $77k to $250k a year for mid-senior level positions.
While I was the most senior in Python in the data science team but still a junior myself, I started to search the internet for advanced Python content to learn advanced concepts, as there were no colleagues to teach me but I still wanted to improve my Programming skills.
I noticed that the amount of online material that teaches more advanced Python concepts is significantly less, and of lesser quality, than most of the introductory courses. However, there is still some excellent online material to help you pass the ‘glass ceiling' level of a junior Python developer. I like to highlight the following two Python experts whose content is perfect for junior programmers who are already comfortable with the basic concepts taught in introductory courses.
Arjan Egges
One of my favourite resources for learning how to increase the professionality of Python programs is the content of ArjanCodes by Arjan Egges. Arjan Egges is a Dutch Python developer who teaches more advanced Python concepts from a software design and software development perspective in a very clear and pleasant manner. From him, I learned many concepts which weren't taught in my Python-focused Master's at the University of Groningen.
I especially like his free-to-watch Youtube videos on e.g. Data Classes, A/B Testing and Abstract Base Classes, but he also has his own websites with much more content:
Next-Level Python: Become a Python Expert | ArjanCodes | Skillshare
In this video, Arjan suggests 14 projects, in which you can apply the concepts that you learn from his tutorial videos to apply them yourself. I'd highly recommend doing this, because compared to other projects, in which you are very much steered towards a specific solution, Arjan gives you a lot of space to think for yourself, which actually forces you to think a project through, from design all the way to implementation.
I believe that that's one of the biggest flaws of most Python courses found online: they're often too focused on syntax only, while actually having to come up with the right solution and design for a problem is most often the trickiest part of being a developer. Arjan, instead, focuses much more on software design than syntax, which in my opinion is a very welcome different approach to teaching Python.
By interchangeably watching his tutorial videos and working on these projects, if you finish them all, you'll definitely be significantly better at Python programming than your fellow Pythoneers who only did the standard entry-level Python courses like this one on datacamp, which is more syntax-focused.
On March 5, 2023, there are over 6500 English Python beginner courses on Udemy, while there are only 315 English expert-level Python courses.
Fred Baptiste
Another Python developer who teaches high-quality advanced Python development content is Fred Baptiste. I strongly recommend his courses to you if you'd like to really understand what is going on when you run certain Python code. Rather than just teaching you "you can use this function or method for this problem", he dives deep into what actually is being executed when that function or method is called, and how this code works in the background, on a lower level, as well.
Therefore you can, for example, take computational costs and memory efficiency properly into account when writing your code, which can be very useful or even a necessity; applying the knowledge we learned from Fred, a colleague and I managed to successfully optimize a previously unusable Time Series Cross-validator because it often resulted in out-of-memory errors or a seemingly endless runtime:
A highly anticipated Time Series Cross-validator is finally here
Fred Baptiste has published four advanced Python courses on Udemy which you can often buy at a discount for around $15 each (with a 30-Day Money-Back Guarantee policy):
- Python 3: Deep Dive (Part One – Functional)
- Python 3: Deep Dive (Part Two – Iteration, Generators)
- Python 3: Deep Dive (Part Three – Hash Maps, JSON Serialization)
- Python 3: Deep Dive (Part Four – Object-Oriented Programming)
Make sure to read the course prerequisites of each course, as these are definetly not beginner courses!
To get the most out of these courses, as Fred suggests himself, make sure to code along and try to come up with the solutions yourself before watching his own solutions.
Besides offering these courses on Udemy, Fred also runs a Youtube channel called the MathByte Academy with free-to-watch videos about Python, including on advanced concepts such as Pydantic Data Models, and Async Producer-Consumer Models.
Learn, practice, apply, repeat
Of course, only watching Arjan's and Fred's videos and doing their exercises won't immediately change your junior level. However, if you actively apply the concepts they teach e.g. at your work, or on your personal projects, you'll definitely significantly distinguish yourself from other Python developers who've only done the standard introductory courses I mentioned at the beginning of this article. Through Arjan, you'll learn to properly think about the design of a Python program, while Fred helps you to have a much deeper understanding of Python code than ever before.
I firmly believe that by completing all their videos and exercises, you have a high chance of being a better Python developer than the average graduate who just finished their studies containing several Python courses, as a lot of concepts taught by Arjan and Fred are more advanced than what I've encountered at my Master's.
That's it! Good luck in finding your way out of the junior level of Python programming with the help of Arjan and Fred! Feel free to contact me if you have any questions or want more tips on e.g. which projects to take on first.
If you want to see actual coding examples of how senior developers distinguish themselves from junior developers, e.g. in coding challenges, see this other article of mine:
5 Python Tricks That Distinguish Senior Developers From Juniors