Python For Everyone: Mastering Python The Right Way
Tags: beginners, python, programming, github
Published: 2022-03-04 15:13:27

I have recently been reading 'Atomic Habits' by James Clear. In the book, James has a captivating style of breaking down the formation of Habits. One particular example is how if we constantly improve our habits by 0.1% daily, in a year we will be 37 times better at the skill. 
That is just by merely improving 0.1%, what about 1% 10% 50%; the possibilities are limitless.
This very similar to Mastery of anything and in our case, Mastery of Python. We can only get better if we aim to practice and improve daily even if it's just by 0.1% [#NoZeroDays](https://www.reddit.com/r/NonZeroDay/). In this article, I will recommend a few resources that may be helpful in achieving this mastery.

**The Zen Of Python**
- We can not truly become masters at Python without viewing the Zen of Python. Type `import this` on your command line and run it.
```python
>>> import this
'''
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
'''
```

This Zen will give the basic guiding rules for learning and even mastering Python. 
No matter what Python Path you intend to pursue, mastery of the basic concepts will be very vital to help you build a strong foundation in Python and allow you to code **The Pythonic Way**.

Dear Python Sensei, Here are a few tips to kickstart your journey:
## Set Your Goals 
- Setting goals is effective in helping us accomplish a lot. Before beginning your journey, determine what you hope to accomplish. Are you working towards Web Development, focus on learning Frameworks eg. Django. If it is in Data Analysis mastery of libraries such as Pandas, numpy etc. will be instrumental.
- Recursively breaking down your goals to Monthly, weekly chunks is also very important. In something as basic as a coding session, write down what you hope to achieve within the coding session.
A SMART goal is Specific, Measurable, Achievable, Realistic and within a TimeFrame eg. make a number guessing game, with concepts learnt, within my first 4 weeks.

Resources For Setting Goals: 
1. Pen and Paper - Write down your goals
2. [Pomodoro Timers](https://www.actitime.com/software-collections/pomodoro-timers): Time-blocking and **Focus Mode** helps block out chunks of time interspersed with rest to focus on the matter at hand, that is coding.
3. Version control Systems eg. [Github](https://github.com/), [Bitbucket](https://bitbucket.org/product), [Gitbucket](https://gitbucket.github.io/) help in version control of your code and generally storage of your code. It can also serve as a visual reminder of the progress you make eg. on Github there is a monitoring system that shows how many days you are active on the platform.

## Finding A Community
- Sticking to a habit is not solely based on 'Motivation' alone; some days you just don't feel like it. A community/accountability partner will be paramount in keeping you in check and challenging you to be better. 
- Such communities can be on social media platforms eg. [r/python](https://www.reddit.com/r/Python/) and [r/learnpython](https://www.reddit.com/r/learnpython), these platforms have a lot of people looking to learn python like you.
- Tags like [#100DaysOfCode](https://twitter.com/search?q=%23100DaysOfCode&src=typeahead_click) on Twitter and other platforms allow different programmers to share their progress journeys during the sacred 100 days of code.
 

## Stick To A Few Beneficial Resources
- The internet has been very revolutionary in every sense. In terms of learning it has granted us access to a ton of resources at our fingertips. I can literally just type 'Harvard Python Course' and get access to the [CS50 course on edx](https://pll.harvard.edu/course/cs50s-introduction-programming-python?delta=0).
- All these resources can suck as into a 'Learning rabbit hole'. Jumping from one exciting resource to another. My advice; Set and focus on your goal, identify a suitable course that helps you in 
the pursuit of your goal. Break the course down to manageable chunks and follow through with it.

**Pro Tip**: Select a well structured course like those on [Free Code Camp](https://www.freecodecamp.org/). A well-structured course saves on time and resources otherwise wasted scouring the internet.
- You don't have to finish the course, just stick with it until you've achieved your goal.
- Take Notes: > I hear and I forget. I see and I remember. I do and I understand. During a lesson write down short keywords. After the lesson try and recall what you learnt during lesson. If you are not a fan of writing down on paper(which I strongly root for), use [Notion](https://www.notion.so/), a very easy, convenient and resourceful note-taking application.

The Last and Ultimate Python Secret!!

## CODE!!
- Even if you follow tutorials and code as the instructor goes through the concept, you still have to put in the hours. Start with as little time as you like and work your way up. Constant Coding and dedication is the biggest difference between a Beginner and Master.
- I appreciate that you are still reading this article, but after quickly liking this article, please click on some of the resources I have shared- the resources are all free to use and will be of great help to you.
- Don't be scared of bugs or being stuck on a problem. The world has millions of developers, your problem isn't as bad as it seems just google it. Platforms like Stack Overflow exist for this sole purpose. In this Journey, _Google Is Your Best Friend_

<u>Day 1 of Coding</u>
_Creating a Hello World Program_
1. Download [Python](https://www.python.org/downloads/)
2. Open your command line. Use the (Win + R) shortcut. Write _cmd_ and press enter. 
3. On the command line, switch to the python terminal by typing _py_ `C:\Users\user>py`
4. On the Python terminal, print Hello World
```python
>>> print("Hello World!!")
Hello World!!
```

You are now ready for the  greatness.
- Install your Favourite Text Editor. Here are a few examples: [Visual Studio](https://code.visualstudio.com/download), [Atom](https://atom.io/), [SublimeText](https://www.sublimetext.com/).

##Concepts To Learn at Every Stage from Basic to Advanced
<u>**Basic**</u>
Most of them are in [My First article ever](https://dev.to/cheruto/introduction-to-modern-python-1kog) 

<u>**Intermediate**</u>
1. Comprehensions
2. Data Structures
3. Lambda Functions
4. Files I/0
5. Inheritance and OOP
6. Dunder Methods

<u>**Advanced**</u>
1.Frameworks(Django, Flask, etc.)
2.Decorators and Generators
3.Multithreading and Processing
4.Testing
5.Complex Libraries


Looking Forward To Hearing from You. If you are a more experienced programmer, please leave some of your tips and tricks with us on the comment section. 
Looking Forward to hearing Your Thoughts.