Python level-up!

Photo by David Clode on Unsplash

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.

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.

book cover

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"

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. As an experienced JavaScript, PHP, C, and C++ programmer this book was perfect because it was very light on explaining basic programming concepts. It did spend most of its time explaining how Python programs are structured compared to other programming languages. This was great for me, but perhaps not as suitable for beginners...

I read this book a rainy week, and it made me feel confident enough about the syntax to enable me to write my own basic scripts.

The chapter about exception handling was particularly interesting to me. In this chapter, I learned a lot I later adapted when writing programs in other languages.

24. July 2021

book cover

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..."

This was a fantastic book, that similarly to books in the "for dummies" series, helps the reader to quickly get up to speed.

I really loved how easy the book was to read, and how it explained everything in a way that was easy to digest without using unnecessary jargon and without any assumptions about previous knowledge. The examples were on point and told a lot without using a lot of words.

This is perhaps the best introductory programming book I have ever read!

26. August 2023

book cover

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."

I don't think the book taught me anything new, but it was a nice mental reset for how I approach programming challenges, structure my day, and structure my code. It represented the Zen of Python (PEP 20) in many ways.

This was a fantastic and straightforward book written in a typical self-help book but for programmers trying to become better at their craft. I truly enjoyed this book on a small vacation trip, where I read it while traveling. It was very easy and entertaining to read. It might seam strange, but this was a tech page-turner!

This is a book I would encourage intermediate programmers and programmers who have some experience but want to take a step back and rebuild a stronger foundation.

19. May 2023

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.

course logo

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."

This very good course offered a very gentle and nice introduction to programming for students without any previous experience. The course was well-structured and is by far the best course offered by Noroff I have participated in. It's obvious that the teachers did their best to provide explanations for every part of the course material. Noroff even had two teachers provide the same lectures but with different teaching styles. To top it up, every task in the course had a complete video walkthrough that demonstrated and explained how to solve each task.

For advanced students, Noroff provided an entire module with an advanced deep dive into how Python can be used to craft custom IP packets using the "scapy" package, and as a tool to perform network management on the SNMT protocol.

I personally used this course as the backbone for a very deep dive into the fine details of Python by pursuing the certifications provided by the Python institute (PCEP, PCAP, PCPP1), working on HackerRank challenges, reading books on algorithms and data structures, and taking Udemy courses that made me understand at a much deeper level the details of programming and computer science in general.

This period in my studies was a blast, and really helped me grow as a programmer.

- 27. August 2023

course logo

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."

An absolutely perfect fundamentals course in Python. Before taking the course I felt confident in Python programming, but this course really filled in the gap I needed to fill and made me generally understand better programming fundamentals.

I have been programming daily for almost for over 5 years, and I still learned from this course.

- 3. May 2023

course logo

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."

This was a free course that was easy to follow, was well written with a good amount of humor, and had great labs. Unfortunately, the cert exam expected a lot more insight than the course prepared me for. Thanks to my general programming experience and extracurricular activity in addition to the course I was able to barely pass the certification exam.

This course is in no way enough to pass the certification exam. Since python institute is the same organization that created both the exam and the course, I think this is very strange.

The accompanying (paid) exam preparation review course and practice tests provided an excellent review, but in general, the level of in-depth understanding expected on the exam did not match this course at all.

- 23. June 2023

course logo

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."

This was a very good course that helped me understand and become even more familiar with OOP design and how variables are copied and how deep the use of pointers in Python really are used behind the scenes.

The course helped me fall even more in love with Python than I previously was. This course was for me yet another proof that certifications can make you learn important things you never would have discovered on your own.

My general OOP confidence got an incredible boost after finishing this course by providing excellent labs and tasks that reinforced the learning process.

- 13. August 2023

course logo

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."

The course provided a gentle introduction to the PEPs and what role they play in the world of Python programming. I don't think the course provided me with enough material to be truly confident, but what it did provide me with was enough information to build upon, when reading the PEPs that are covered by the PCPP1 certification.

If you have not been exposed to the PEPs, this is a great starting point.

- 27. July 2023

course logo

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..."

This course provided an excellent way of learning how to build GUI applications with TKinter. The labs were great and helped me understand the nuances of the widgets, and how to use events to build effective and good applications.

After completing this course I feel confident in using TKinter for small, and medium GUI projects. TKinter went from being usable to being great.

I think the course missed more advanced usage like building responsive applications with the "pack" display manager, and how to run multiple windows that can interact with each other.

- 6. August 2023

course logo

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."

This was a great course, with fantastic labs that helped me prepare for the PCPP1 certification. It went pretty deep on how the HTTP protocol, JSON, and XML work.

The course had a solid overlap with the rest of the course material and the labs did a great job of connecting a lot of the material covered by all the other parts of the PCPP1 series from The Python Insititute. Because of this, I think this course should have been the last in the PCPP1 series on edube.org.

The last few labs expected insight into XML that was not covered by this course, but instead the file processing course.

For me, this course was a great repetition of the basics of the web and a nice introduction to the sockets package.

- 13. August 2023

course logo

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."

This was another great course by the Python Institute. The material was short, on point, and easy to digest. The provided labs were great and helped me reinforce the material.

- 23. August 2023

course logo

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."

The course was good for me because I have a bit of web development experience. But for newbies, this course would not be enough to get anywhere near confident in API development with Python and Flask. I liked that the course included the use of Docker for hosting the API.

- 27. July 2023

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.

Read description

PCEP - Certified Entry-Level Python Programmer

Foundational and thorough certification on foundational Python lexis, syntax, and semantics.

"...great certification exam that tested me on the understanding of foundational Python lexis, syntax, and semantics"

A great certification based on the fantastic PCEP course from the OpenEDG Python Institute. The course, and certification helped me stay motivated to learn and really understand what makes Python special compared to other programming languages.

This was a great certification exam that tested me on the understanding of foundational Python lexis, syntax, and semantics. The exam did not quiz me on pure memorization, but a combination of remembering and understanding how a Python program is written and executed.

5. May 2023 - 188t

Read description

PCAP - Certified Associate in Python Programming

A certification that in combination with PCEP verifies that the student has learned and mastered all the basic building blocks in the Python3 programming language.

"By achieving the PCAP certification in combination with the PCEP certification I can confidently say that I do know the basics of Python."

The PCAP certification covers Object Oriented Programming, exceptions, and exception handling, string manipulation, building and using packages (PIP) and modules, interacting with files both text-based and binary, and interacting with the operating system.

The certification exam was a major step up in difficulty compared to the PCEP certification exam and required me to really rely on a deep understanding of and practical know-how of Python3. Even though this was a multiple choice exam it really made me stop and really analyze and evaluate each option.

The exam questions on object-oriented programming concepts encapsulation, inheritance, and polymorphism were formed in a shockingly good way to measure real-world insight. I especially struggled with the exam questions on exceptions and exception handling. While preparing for the cert exam I became a lot more skilled in using and analyzing code snippets with exceptions and exception handling.

I'm amazed at how humbling and good this certification exam was. By achieving the PCAP certification in combination with the PCEP certification I can confidently say that I do know the basics of Python3.

The only issue I have with this certification is that the learning material provided by the Python Institute was in no way shape or form enough to learn enough to pass this certification exam. I was fortunate enough to stumble upon videos on YouTube that warned me about this issue. The questions on the exam did go way above and beyond the learning material.

23. June 2023 - 122t

Read description

PCPP1 - Certified Professional in Python Programming 1

The perfect follow-up from PCEP and PCAP certification. This massive certification made me dig deep into advanced topics in Python and helped me discover the deeper details of how Python works under the hood.

The details covered by the certification are something I think every professional programmer needs to be familiar with and be able to implement.

"The exam forced me to become really familiar with advanced OOP concepts and implementations."

A massive certification that made me dig deep into advanced topics in Python such as magic methods, decorators, encapsulations, abstract classes, and metaclasses, It also covered file processing using SQLite, JSON, XML, configparser, and using the logging module. This certificate perfectly complimented the PCEP and PCAP certifications and builds upon the foundation established by those certifications.

I especially loved the part on GUI programming using TKinter. Even though I had some experience with Tkinter, the course gave me a much deeper insight into the fundamentals and details of how to build maintainable GUI applications with Python. The networking part of the course covered generally everything a programmer needs to know when starting to build web services from the ground up and made me realize the power of the requests package.

The certification helped me structure my learning in a great way and made me learn a lot of concepts I probably never would have learned on my own. The exam forced me to become really familiar with advanced OOP concepts and implementations.

The only issue I have with the certification is that the learning material was not nearly enough to pass the certification. Thanks to practice exams on Udemy I was able to spot where the certification expected me to dig deeper than the free official learning material provided by the Python Institute on edube.org.

16. October 2023 - 139t