From Novice to Pro: My 100-Day Python Mastery Journey!

Khaled Mohamed Radwan
7 min readAug 3, 2024

Embarking on my Python learning journey was one of the most exhilarating and challenging experiences of my life. Over 100 days, I transformed from a novice to a confident programmer, tackling various projects and overcoming numerous obstacles. Here’s a detailed account of my adventure, with highlights and challenges that made the journey unforgettable.

My journey began with the basics on Replit, where I delved into essential programming concepts, setting the stage for more complex topics ahead. On the first day, I learned about variables, data types, and simple operations. Writing my first lines of code and seeing immediate results was thrilling, although adjusting to Python’s syntax, which differed from other languages I had encountered, was a bit challenging. I remember staying up until midnight, just writing simple programs and experimenting with different variables. It felt like opening a new world of possibilities.

By the second day, I was understanding `if` statements and loops, which allowed me to create dynamic programs. I experimented with conditions and loops, becoming comfortable with controlling the flow of my code. One memorable moment was when I created a small game where you guess a number between 1 and 10. My younger brother played it and was so impressed that he thought I was a “real hacker,” motivating me to learn more.

Writing functions on the third day was a game-changer. The concept of reusable code blocks simplified my programs significantly. Grasping the concept of scope and understanding how local variables work within functions was initially challenging, but I managed to create a function to calculate the area of different shapes. My mom used it to help my sister with her math homework, making me feel like a hero in the house.

Learning about lists and dictionaries on the fourth day introduced me to data structures. I enjoyed manipulating these collections to store and organize data efficiently, though managing nested lists and dictionaries and mastering list comprehensions took some practice. I created a small program to manage my book collection, which felt great as my hobby intersected with my new coding skills.

String manipulation on the fifth day opened up many possibilities. I practiced slicing, concatenation, and various string methods, although handling special characters and mastering string methods like `format()` and `join()` presented some difficulties. I wrote a program to automatically generate customized birthday wishes, which my friends loved, making their birthdays special.

Reading from and writing to files on the sixth day was incredibly useful. I started creating programs that could save and retrieve data from external files, ensuring proper file handling to avoid data corruption. I wrote a simple diary program that saved my daily thoughts into a text file, acting like a digital journal I could access and edit anytime.

Handling errors gracefully with try-except blocks on the seventh day made my code more robust and user-friendly. Predicting potential errors and implementing comprehensive error handling was a bit tricky, but while developing a small calculator app, I learned to handle numerous errors, teaching me patience and persistence.

Exploring Python’s standard library and learning how to import and use different modules on the eighth day broadened the scope of what I could achieve. Finding the right modules for specific tasks and understanding how to use them effectively took some effort. Discovering the `random` module, I created a simple lottery number generator that my friends started using to pick their lottery numbers, adding a fun twist to our weekends.

OOP was a significant milestone on the ninth day. Learning about classes, objects, and methods helped me think about my code in a more structured way. Grasping encapsulation and abstraction and designing effective classes was initially challenging, but I built a simple class to manage a to-do list. It was satisfying to see how OOP made my code more organized and modular, sparking interesting discussions with a friend who was also learning programming.

Diving deeper into OOP on the tenth day, I studied inheritance and polymorphism, allowing me to create more complex and reusable code. Understanding method overriding and using superclasses and subclasses effectively took some time, but I extended my to-do list project to include different types of tasks, each with specific properties, making my projects more sophisticated.

Learning about sets, tuples, and advanced list operations on the eleventh day provided more tools for solving problems. Knowing when to use each data structure and leveraging their unique properties was a bit challenging, but I used sets to manage a contact list, ensuring no duplicates, which made my life easier, especially during holiday seasons when sending greetings.

Working with APIs on the twelfth day was exciting. I learned how to send requests and handle responses, opening up a world of external data sources. Handling JSON data and managing different API authentication methods presented some challenges. I created a weather app using a weather API, and my family started relying on it for daily forecasts, which was a proud moment for me.

Exploring web scraping using libraries like BeautifulSoup and requests on the thirteenth day allowed me to extract data from websites. Understanding HTML structure and dealing with dynamic content was initially difficult, but I scraped a news website to gather the latest headlines for my morning briefing app, which was empowering.

Building a simple web application using Flask on the fourteenth day taught me about routing, templates, and form handling. Managing the file structure of a Flask app and debugging web application issues took some effort. My first web app was a small blog where I could post my coding journey updates. Sharing it with my friends and getting their feedback was immensely rewarding.

Learning to deploy my Flask app to a cloud platform on the fifteenth day made my projects accessible online, marking an exciting step in my journey. Understanding different deployment options and managing environment variables was challenging, but seeing my blog go live on the internet was a moment of triumph. I shared the link with my family and friends, and it felt amazing to have something I built accessible to the world.

After mastering the basics, I transitioned to PyCharm and began working on more complex projects. Each project presented new learning opportunities and challenges. Building a coffee machine simulator using OOP principles reinforced my understanding of classes and methods. Designing the class structure and managing state within the machine was challenging, but I invited my friends over and showed them my coffee machine simulator. They were amazed at how a simple code could mimic the functionality of a real machine, making it a fun demonstration.

Developing games like a Turtle graphics game and a ping pong game was a fun way to apply my Python skills. Handling real-time user input and ensuring smooth graphics rendering was challenging, but creating a simple Turtle race game that my siblings loved to play was heartwarming. Watching them compete and enjoy something I built brought joy to our household.

Recreating classic arcade games and a U.S. states guessing game helped me practice control flow and data handling. Managing game states and ensuring accurate collision detection was difficult, but challenging my family to play my version of the classic snake game turned into a mini-tournament at home, bringing everyone together for some tech-inspired fun.

Creating applications like a NATO alphabet converter and a password manager demonstrated the practical applications of Python. Implementing secure password storage and handling edge cases in converters was challenging, but my password manager app became a hit among my friends, who started using it to manage their passwords securely. Knowing my work had real-world utility was very gratifying.

Building projects that interacted with external APIs, such as an ISS overhead notifier and a Google Sheets workout tracker, expanded my capabilities. Ensuring reliable API requests and managing rate limits presented some challenges, but my ISS notifier app sparked interest in space among my friends. We started watching the night sky, hoping to spot the ISS when it was overhead, blending coding with astronomy.

Creating GUI applications using Tkinter, like a quiz app and an SMS sender, added a new dimension to my Python skills. Designing intuitive user interfaces and managing user input was challenging, but creating a quiz app that my friends and I used to test each other’s knowledge was a fun experience.

Working on projects involving data analysis and visualization, including a habit tracker and a motivational poster website, was particularly rewarding. Cleaning and organizing data for analysis and creating meaningful visualizations was challenging, but seeing the visual representation of data I collected was satisfying.

Automating various tasks, such as sending birthday wishes and applying for jobs on LinkedIn, showcased Python’s power in simplifying daily tasks. Scheduling tasks to run automatically and handling web scraping with changing websites was challenging, but automating birthday wishes for my family and friends added a personal touch to their special days.

This journey wasn’t without its challenges. I faced numerous bugs, struggled with complex concepts, and had to constantly debug my code. However, each obstacle strengthened my problem-solving skills and deepened my understanding of Python. By the end of the 100 days, I felt confident in my ability to tackle a wide range of programming projects, and I was excited to continue exploring the endless possibilities with Python. My journey taught me that persistence and practice are key to mastering any skill, and Python has become a tool that I am passionate about using in my future endeavors.

--

--

Khaled Mohamed Radwan
0 Followers

Programmer Geologist Have some Exp In Web Development And python Programming Language. Looking Forward to achieve more I believe In MySelF I'II Do it.