Why learning a new programming language is difficult?

Learning something new can be tough if you are a student or a complete new beginner who doesn’t know how to learn something and this is not an individual issue, everyone deals with these things like which concepts to concentrate on, what to learn first, and what to learn after it. The solution to this is a well-organized roadmap. My goal for this article is to give you such a roadmap that will not only help you to learn python but also how you can earn through it.

Why should you listen to me?

Before starting or giving any tips, I would like to let you familiar with how the roadmap that I have designed for you is effective enough. When I was learning python I faced similar issues not because there is not enough content on the internet but because there is no organized way that could guide me step by step to grasp that content. So I designed my own ways and literally, I started making progress. 

My way of achieving a target is like first acquiring specific knowledge like python in this case and then setting a target like become a web developer at some company. Now gaining experience and knowledge at this stable position I set another target and move my one leg towards it and slowly transitioning another leg too and then remain in this state until not stable and once stable then repeating the process again. As per my opinion, this way we can reduce risks and at the same time can achieve targets. 

I started working initially for startups as well as for product and service-based company's thereby gaining knowledge and experience. Currently doing freelancing as it best suited me and hold around 6 years of experience in the software industry. In these years I got exposure to many different tech stacks covering different areas of programming like web development, data science, etc.

Now let's go through the roadmap.

Dedicate a specific time every day to learn python!

There is a saying that consistency is the key and this is very useful here. The specific time is like 2 hrs each day with a goal in mind. One can think of this as understanding python variables in these 2 hours. This way whenever you devote the time, you will actually learn something and can also track your progress.

Don't try to learn everything at once

The most common habits of people are that they try to cover up everything at one go. This way it's very difficult to grasp the concepts deeply and possibly in the long run chances of forgetting concepts are more. The reason is that you have not practiced the concepts enough that your mind turns them into your habits. It's like initially, you learn to drive a car and focus your mind on gear, clutch, brake, etc but gradually it turns in such a way that you no longer have to use your mind into all these things and you just drive. So it's, better to practice each day, a specific topic at a specific time.

How to divide python into specific topics

Now once you did set a specific amount of time for yourself, then you can pick these python concepts one by one and start your learning journey.

  • Basics of Python
    • Python Syntax 
    • Keywords & Identifiers
    • Variables
    • Datatypes - Numbers, String
    • Type Conversion
    • Namespace in Python
  • Python Data Structures
    • List
    • Tuple
    • Set
    • Dictionary
  • Control Structures and Functions in Python
    • If, if-else, nested if statements
    • For Loop
    • While Loop
    • Break & Continue Usage
    • Pass Keyword
    • Functions in python
  • Object-Oriented Programming in Python
    • Class and Objects
    • Methods
    • Class Inheritance and Overriding
  • Advanced Topics
    • Iterators
    • Generators
    • Closure
    • Decorators
    • Regular Expressions
    • Exception Handling
    • File Handling
    • Database Handling

You can pick these topics one by one like python syntax on day 1 and python datatypes on day 2, at your convenience

Solving Exercises & Making Projects

By learning just about the ingredients of a tea, you can not make a perfect tea in the same way once you have learned the basics, the next thing is to build confidence. For this generally, I find two ways problem solving and making projects.

Problem-solving will help you in analyzing and thinking of a solution way before programming, you can also think of it as a logic building. For this, you can search for problems related to specific topics like solving problems on string and arithmetic operations, loops, regular expressions, etc.

Another thing is making projects, here is where all your problem-solving skills come into use. Start from the small projects like a calculator program and move on to more complex projects.

Once you have solved enough problems and made enough projects, one thing I guarantee you is that you can easily land a fresher python developer job.

Github - Collaborating on Opensource projects

GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. The point here is that any project or a piece of code you work on and you think that it is useful in any way to others either end-users or developers, then you should put your code on GitHub and invite other developers to collaborate on your project. By collaborating I mean others can add new features to your existing code or find and fix the bugs. This is like you are designing your room and you invite others to come up with their ideas too.

Learn python for real-world applications.

At this point in time, once you have gone through all the previous steps, you have to make use of python in real-world applications.  Python has its use in almost every industry, let's look at some of these. 

Web Development

In this area, the job is to build websites. The website has two main job roles one is the frontend and the other is a backend, python is used on the backend side. Some of the world’s most popular companies like NASA, Google, IBM, Cisco, and Microsoft use python.

Data Science

In this field, data is analyzed and then information is predicted. For example, youtube video suggestions based on the user video's view pattern.

Computer Vision

It is a field where digital images can accurately identify objects in the real world and then react to what it interprets. A good example of this is the Google lens, where you capture the image and it gives you information about it.

Like these, there are various areas where python is used.

I would suggest that you first start learning web development in python and then move towards other areas. Web development is because you can easily find jobs in the market and they do not require much expertise from the freshers as compared to the other fields where you need to have some experience.

One piece of advice that I would definitely give you is that don't get stuck in one technological field like just working on web development instead try to explore other areas too. The reason for this is that programming has its use in its applications which means later in your life at any point in time you might get into making your own digital product or got an opportunity to build a large scale project for a company then you can think of the solution using all the tech stack you have learned till the time. It's like building a full-fledged solution for a real problem like healthcare which involves various areas like web development, app development, data science, machine learning, etc.

Freelancing

Now it's time to earn through what you have learned so far. You can start doing freelancing as soon as you have learned the basics.

Essentially, a freelance job is one where a person works for themselves, rather than for a company. While freelancers do take on contract work for companies and organizations, they are ultimately self-employed.

Freelancers are responsible for all sorts of things that traditional employees are not, such as setting their work hours, keeping track of time spent on different projects, billing clients, and paying their own employment and business taxes. Freelancers are not considered “employees” by the companies they work for, but rather “contractors.”

One important thing about freelancing is that it's not suited for everybody because you have to be self-disciplined, unlike full-time jobs where you get a monthly salary. One of the good things about freelancing is that if you are good enough then you can earn more than big giant companies can pay you after hiring you as an employee and at the same time you are solely responsible for the work done.

Out of the various platform for freelancing, one of the best which I personally use is Upwork. I would advise you to create an account there. Initially, it's difficult to get a job because it's possible that for that same job that you are bidding on, there can be many other applicants who have a better Upwork profile than yours. There are few types of work here divided into fixed-price jobs and hourly jobs.

What I did initially is that I started bidding on small fixed-price jobs priced at $20-$50 and still setting a half rate for that job. This way I increased my chances of getting that job because top Upwork freelancers won't bid on that due to its low price and others bid at the same price at which the job is posted. One thing I am sure of about these types of jobs is I know exactly how to do that work. 

You can follow the same approach and once you start delivering the work and started getting good feedback on your profile you no longer will remain a noob on the platform. After that, you can search for hourly jobs starting with a low rate like $10 per hour, and then your headache to bid on a fixed price job every time you finish one goes away.

Finally, Personal Website

At last one important thing is to start writing blog articles at some blogging site like medium.com or have a youtube channel where you can post content as per your domain. I advise you to have your own website as a developer and showcase your skills there. I got one of my first hourly freelance jobs just because of my website and online presence. He judged me on the basis of my articles and Github repository. This made him trust me and I got the project. I got to know about this later in a meeting discussion.