Codementor Events

How I learned Python

Published Sep 09, 2020Last updated Sep 16, 2020
How I learned Python

About me

I am an enthusiast of all things tech with a keen passion in programming and problem solving. I devour all programming knowledge I can get my hands on and spend far too much of my free time wearing down my keyboard keys.
I'm a self studied developer and have learned primarily from internet resources, though did complete a course on Edx.org from HarvardX; namely CS50 - Introduction to Computer Science. I've played around with programming for many years as a hobby and passion!

Why I wanted to learn Python

I wanted to learn Python because of my passion for programming and need to be able to rapidly develop my skills and knowledge. I had learned some C and C++, and although I enjoyed it greatly these languages were very verbose and had many smaller details that needed to be tracked that didn't necessarily impart any practical knowledge to me.
Python is more abstracted and easily written in without the need for verbosity, allowing me to focus on programming logic, algorithms, and best practices when I felt I needed it most.

How I approached learning Python!

I started with online study resources such as Codecademy and w3schools. This gave me the basics in syntax and functional skills for the language. I proceeded to then read through the online docs for the language present docs.python.org, playing around with interesting concepts or functionality. This gave me a deeper understanding of some of the basics I had learned already and gave me a list of more advanced functionality to study. Afterwards I started an online course with HarvardX which stepped into Python usage later on.
From there I chose to build a project, which fell in line with a final project required for the course, that utilised a particular framework to practice what I knew and pick up some new skills. I settled on a web application using Python and the Flask framework. This allowed me to experiment with not only back end server side development using Flask, but database development and email servers and many other smaller parts of the application that I toyed with.
I approach my learning with efficiency and enjoyment in mind. I need to know that unless I find it useful to my development I don't want to be bogged down with too much minutia and I look forward to doing projects I find enjoyable. Part of that enjoyment is from challenge, and trying new things that I am not familiar with or may only have a passing knowledge of.
In essence, try new things that push the boundary of your knowledge and ensure that what you're learning is beneficial for your development!

Challenges I faced

I still face certain challenges every day. A challenge I present myself is finding more efficient ways to implement my code, as I know there are many places where it can be refined!
I'm still getting a grasp on some very advanced topics, and finding creative ways to employ them that catches my interest. But it becomes harder to incorporate these without some direction as they start becoming more specific to use case.
When I was first learning the language picking up the basics, and even intermediate, skills of the language wasn't difficult. So in the end I had many pieces from which I can put together a puzzle, but it was harder thinking of an image for that puzzle to be and what pieces would be needed where to make it work. It took me a while to get a hold of everything I know and have a cohesive structure in my mind for which I could use to develop my programs.

Key takeaways

My key takeaways from all of this is having a flexible mind to approach different problems is key! Whether it is the problem of learning a new language or framework, or how to utilise what you know to actually create a program! All problems have innumerable methods of being solved, and often a solution can be found by not being too fixated on trying to make any one method work.
The experience has also taught me that often times the simplest of directions provided by a senior can be enlightening! There are times where I couldn't wrap my head around something and a comment from someone allowed me to grasp the idea instantly. We were all at these points and most still find themselves there no matter how experienced. It is a joyous responsibility for those with more experience to lead the more junior among us so that they too can find the excitement and joy in programming and finally getting something they made to work. No matter how simple that may be.

Tips and advice

As soon as you know the basics of the language just start creating things. Python is quite an amazing language for creating simply scripts and programs due to its nature. Find a few simple projects you want to tackle, perhaps look online for some inspiration, and make them!
Once you are more comfortable decide what it is you want to develop. Python is extremely flexible! You can use it for web development, applications can be made on it, games as well! Just choose, and once you have chosen look around for a framework to build on.
Python has a thriving and vibrant community, and likely there is a well supported and developed framework for what you want to build. This will help you endlessly in keeping the steam going in your engine to learn more and push forward! There is benefit in building everything from scratch, you learn a whole heck of a lot! But it's far more inspiring to go a bit simpler and actually get something really amazing made.

Final thoughts and next steps

Overall I think there are places where I could have done better, and worked harder to push my skills farther. But this is journey and not a destination so I will always have more to learn and more time to work on myself. I regret nothing in my approach and if it works for me maybe it can work for you as well. We all must find the best way for us to learn a new skill.
For my next step I hope to continue building on my successes and build a much larger application, using more libraries and frameworks. Or maybe even a module that I'll make available to others for them to use. I want to tackle something new and exciting, and I know there is a whole world of possibilities out there.

Discover and read more posts from Tylor Branch
get started