Photo by David Clode on Unsplash
Python is perhaps one of the most popular programming languages among the young, hip, and cool developers on the internet. It has a syntax that is easy to get started with and a bunch of wonderful libraries that can help with many computer-related tasks ranging from simple scripting to production-ready games and applications.
In this article, I will tell how I went from a Python novice to an advanced practitioner in 6 months during the late spring, summer, and early autumn months of 2023.
Starting point
Previous experiences
When starting on this adventure I had more than 3 years of experience working full-time as a web developer building webpages with PHP backends that were built on top of frameworks such as Laravel, Yii2, and Symphony. For front-end work, I mostly used vanilla JavaScript, but also Vue.js when reactive components were needed. I also had some experience with hobby projects creating Arduino projects writing C++ and simple Android apps writing Java. Up until this point I had only dabbled a little in Python. Making very simple command-line applications, tools, and a few basic games with the PyGame library.
Despite having in total more than 4 years of experience in programming, I never felt that I truly mastered and had learned the true basics and foundational knowledge surrounding programming. The main reason for this came from the fact that I was completely self-thought and therefore learned based on what I needed to know on the job. If the problem never presented itself, I never spent time learning about it.
Why?
Why Pyton? Why now?
My initial motivation came from participating in the "Network and Information Security" program at Noroff Vocational College, where I studied part-time. This program had a programming class based on Python. Because the program had a summer vacation in the middle of the programming class, it spanned 6 months.
As I stated in the introduction, Python seemed to be a very popular programming language. This made me intrigued to learn more about it and why it was popular. This made me motivated to get good at a programming language that I did not use every day at work or at home.
I wanted to really get my hands dirty, and use Noroff's class as an opportunity to master some of the more basic and complex parts of programming. In addition, I thought it would be a nice opportunity to add some more variety to my GitHub portfolio. This was my chance to backtrack a bit, and become the programming master I always dreamed of becoming!
In addition to my own ambition, one of my kids was aspiring to become a programmer. This made me even more motivated to learn Python programming since it would help me become a better teacher.
HackerRank
Gamified learning
After spending time on TryHackMe, where I learned a lot of cyber security basics, I wanted to spend time on a similar platform honing my Python and general programming skills. After some time researching, I found that the structure of the challenges and the GUI of hackerrank.com was the platform that seemed to fit my needs best.
I wanted a platform where I was motivated to keep on learning in order to gain a rank compared to other learners. This competitive drive is important to me, and I thought it could prove valuable if I ever got into a situation where I needed to "prove" my skills, in addition to my GitHub account. Plus, I wanted a GUI with a proper dark mode for my sore night-dweller vampire eyes. 😎
Python
Rank: 118 603
Score: 625
Databases
Rank: 13 896
Score: 94
SQL
Rank: 294 187
Score: 570
HackerRank proved to be much more and better than I ever could have imagined. The challenges were at just the right spot where I was challenged on both my Python syntax skills, but also my problem-solving skills.
During later classes at Noroff, I continued working on related problem categories.
GitHub projects
Real-world skills
Creating programs to solve real-life problems is always fun and will provide amazing learning opportunities. I wanted to learn how to create a GUI application that could be shipped as executables for Windows and Linux.
The first app I created was MathHaxor. A simple GUI program where the user can create PDFs with math problems designed for kids in the age range of 8 to 12 years. The program is open-source and available for free on the project's GitHub page. I use this daily to generate simple math problems for my kids.
The second program I created was Joy2Mouse. This program converts joystick inputs into mouse movement on the computer. Unlike normal applications designed to solve this problem, Joy2mouse is a tool for absolute aim. The mouse will follow the exact position of the mouse. This was designed to solve my own need to have a proper mouse-aim using a joystick in MechWarrior5 for PC. This mod made me enjoy the game a lot more because it mimicked the way Steel Battalion for the original Xbox was controlled. Although crude and simple, the program was noticed by some mech enthusiasts on the web.
Joy 2 Mouse
Joy 2 Mouse was designed specifically to work with MechWarrior 5, but it can be used for any other application where you want to precisely control mouse input with a joystick. Read about it in this article
Books
Books are great for spending focused time studying subjects. When doing my deep dive into Python and programming as a whole, I read a couple of books to deepen and broaden my understanding.
Beginning Programming with Python For Dummies
John Paul Mueller - 408 sider
An introduction to Python programming, where the reader learns basic functional and object-oriented programming using Python. This book focused only on writing shell scripts.
"This book was structured just like all other "For Dummies" books I have read, but I'm not sure how beginner-friendly it actually was"
Python in easy steps
Mike McGrath - 192 sider
A short, sweet and colorful introduction book to the Python3 programming language.
"I really loved how easy the book was to read, and how it explained everything in a way that was easy to digest..."
The art of clean code
Christian Mayer - 176 sider
Learn eight principles to simplify your code and become a more effective (and successful) programmer.
"This was a fantastic and straightforward book written in a typical self-help book but for programmers trying to become better at their craft."
Courses
Since the Noroff course I was following was very basic, I decided to brush up and fill in the gaps by following a couple of extracurricular courses. I especially fell in love with the learning material provided by the OpenEDG Python Institute Certifications.
Programming
- FJ Botha, Bertram Haskins, Philip Blunt - 496t, 0m
An introduction course to programming with Python. It took us from complete beginners to building fully functional tools that run in the terminal.
"This period in my studies was a blast, and really helped me grow as both a programmer and an IT professional in general."
Python Essentials - Part 1 (Basics)
- Python Institute - 42t, 0m
A course designed to guide you from complete programming illiteracy to a level of programming knowledge that allows you to design, write, debug, and run programs encoded in the Python language, and to understand the basic concepts of software development technology.
"An absolutely perfect fundamentals course in Python."
Python Essentials - Part 2 (Intermediate)
- Python Institute - 58t, 0m
A short and sweet course that aligns with the PCAP (Certified Associate in Python Programming) certification from the Python institute.
"This course is in no way enough to pass the certification exam."
Python Advanced 1 (OOP)
- Python Institute - 42t, 0m
A long and thorough course on advanced OOP concepts like abstract base classes, metaclasses, decorator design patterns, and Python decorators. It also discussed how Python handles encapsulation, drilled hard on exception chaining, and touched upon the pickle and shelve module.
"The course helped me fall even more in love with Python than I previously was."
Python Advanced 2 (Best Practices and Standardization)
- Python Institute - 10t, 0m
A short course that taught me about best practices, standardization, and coding conventions in the Python Language. Specifically PEP-8, PEP-20 and PEP-257.
"If you have not been exposed to the PEPs, this is a great starting point."
Python Advanced 3 (GUI Programming)
- Python Institute - 21t, 0m
Thorough deep dive into building GUI applications with Python and TKinter.
"The labs were great and helped me understand the nuances of the widgets..."
Python Advanced 4 (RESTful APIs)
- Python Institute - 21t, 0m
A good introduction course on how to use web services using the sockets and request Python packages. It also touches upon serialization and deserialization using JSON and XML.
"For me, this course was a great repetition of the basics of the web and a nice introduction to the sockets package."
Python Advanced 5 (File processing)
- Python Institute - 21t, 0m
A good introduction course on how to user Pyton to process data files such as SQLi databases, JSON, XML, logs, and config-files.
"This was another great course by the Python Institute."
REST APIs with Flask and Python in 2023
- Jose Salvatierra - 12t, 0m
A fast-paced introduction to medium to advanced API development with the Python web framework Flask
"I liked that the course included the use of Docker for hosting the API."
Certifications
Since the OpenEDG Python Institute Certification courses were so good I decided to go all in and pursue the certifications the material was designed to make me pass.
I love to study for certifications because they help me stay on track, and force myself to learn all the boring but important stuff that I would otherwise never have been able to force myself to learn.
The OpenEDG Python Institute Certification exam syllabus for the PCEP and PCAP aligned somewhat well with the Programming class on Noroff, and the Cisco DevNet Associate certification I intended to pursue at a later stage. Because of this I initially intended to just take these two certifications. But my inner completionist could not resist the urge to take the final cert.
The PCEP and PCAP certifications were not that hard because of my previous experience with programming in general, but the Professional-level PCPP1 certificate was a very big certificate that really helped (or perhaps forced) me to dig deeper into, and really understand the core principles of object-oriented programming and GUI development using event-driven programming. Since Python was perhaps the most object-oriented programming language I had ever used, I went from feeling proficient enough to "get the job done", to feeling really confident with OOP.
OpenEDG Python Institute Certifications
OpenEDG Python Institute provides free training and high-stakes exams that validate insight and experience with the Python programming language.