How to Learn Programming?
Do you want to learn programming in 2020??… Do you want to build a website like Facebook, Twitter, Instagram or something like WhatsApp?
You are really excited about these websites or apps and decide to learn to code. You want to build next Facebook, Instagram or any other favorite application. So what approach you will follow to build these kinds of the website?
The most common approach which most of the people follow is…You buy some programming related books which some blog post or website has recommended or you go to some courses or tutorials on youtube (or any other resources) to start learning to code. You also enjoy and love it initially watching that tutorial and you feel like you are learning a lot of cool concepts and new things about programming. Well, That can be really good for a short period of time but what happens with most of the newbie programmers is…they get overwhelmed with so many concepts and get stuck in one tutorial to another tutorial. It becomes more problematic and frustrating for them when they are asked to start a real-world project on their own without any help. They don’t get logic, they don’t understand where to start, how to solve a specific problem or how to build some specific module on their own.
Yes, that’s correct… so how to learn to code, what’s the best approach to learn programming…?
Well, most of the beginners face this problem in coding. Tutorials are fantastic and it teaches a lot of concepts or different approaches in coding to build something but when you start working on some real-world project you feel dissatisfied because you are unable to use all those concepts in your project. So the best advice to learn programming in 2020 is follow the project-based learning approach. Build as many projects as you can to strengthen your problem-solving skills in programming. Remember that programming is not about learning a language (Python, C++, Java, etc.), it is the ability to solve the problems. Also in a job, an employer needs a problem solver so, during interviews, your problem-solving skill comes first before anything else.
So how to build the problem-solving skill while learning to code? tell me the steps I should follow to learn programming…
Let’s discuss the steps to learn programming and some tips to build problem-solving skills…
1. Choose a Language and Understand the Basic Fundamentals Concepts
A lot of beginners skip the fundamentals and jump directly to the shiny tools and technology. That’s not going to work in interviews or building any kind of project. You will become more confused and distracted if your fundamentals are not clear. So firstly choose the programming language you are most comfortable with (Python or C++ is good still it depends on your end goal) and understand the syntax and basic concepts (variables, conditionals, operators, loops, etc).
Make programs and build the basic foundation using your favorite language. If you are in college then colleges are good in teaching the basic concepts else you can take the help of the internet. GeeksforGeeks, Codecademy, HackerRank etc. are good to build the basic fundamentals. Below are some useful tips to follow when you start with fundamentals. This will also build your problem-solving skills.
- Most of the courses start with teaching the programming language, that’s good but understand how to use the programming language to solve the problems. For example how to solve the problem of the addition of two numbers.
- Stick with one language. Don’t try to learn everything initially. Most beginners keep jumping to one language to another language which is just a waste of time. Initially, it’s good to stick with one language. If you want to become a Java developer then learn java. Learning the first language is difficult for most of the newbie programmers but your brain will eventually get syntax once you start practicing every day.
- Try to make programs every single day without leaving any gap even if it’s just one or two. Try to make small programs first and then move to the complex one but maintain consistency.
- Adapt a good learning strategy. For example: instead of consuming all the theories first and then jumping to making the programs follow a 2:1 ratio between conceptual learning and active learning. It means after every two hours of conceptual learning spend an hour in practical exposure or active learning.
- Make a small application or project based on fundamentals you have learned. For example, make a calculator or something that is interesting for you. Learn how to google when you get stuck somewhere.
2. Learn Data Structure and Algorithms
Data Structure and Algorithms are the heart of programming. Once you are comfortable with any of the languages and making some basic programs, the next thing you should do is learning data structures and algorithms. You will get better at building your problem-solving skills if you understand the fundamentals of data structure and Algorithms. Understand that not all the data structures can be used everywhere so for any kind of problem firstly you need to implement an algorithm which is a step by step process to solve a specific problem and then you need to choose the right data structure to solve the problem. A right combination of data structure and algorithm is really important in solving the problems.
Learn to implement the data structures and algorithms, practice it in your programming language every day. GeeksforGeeks is good for beginners to start with practicing the problem on data structure and algorithms. Below are some useful tips to follow while learning these two fundamentals.
- Again don’t try to consume all the theories or concepts of data structures and algorithms in one go. Learn a single topic, practice on the sites we have mentioned above and then move to the next topic. You can adapt a specific learning strategy that is fit for you. One we have already mentioned in the previous step (2:1 ratio).
- When you move to the complex problem, break the large problems in smaller chunks and then solve these chunks to get the final output or solution.
- Practice, practice and practice enough. Get your hands dirty in programming and if it’s possible participate in competitive programming on different websites. You will gain confidence and you will become much better in problem-solving.
- Learn how to use these data structures and algorithms in real-world projects. For example: In web applications, you will find a lot of use of Array and Strings.
- You know the basic concept, you know the fundamentals of data structure and algorithms, now build an application based on whatever you have learned. You can also try to use these concepts to implement a feature in your previous application or project, that will help you to expand your project and it will give you the exposure to solve the problems.
3. Build Projects
Like we have already mentioned that when it comes to building a project on your own most of the newbie programmers get stuck. You feel like all the tutorials or exercises are just a waste of time because that’s not helpful in your own project. You retain a lot from tutorials but it’s just going right over the head and now you are unable to apply all the concepts and logic in your project… Relax!
Initially try to build a small project or static website first, it can be your own portfolio, a web application, android application or any kind of game. It’s better to start with some simpler projects and then moving on to the complex projects. You can try to build or start something like I am TK site. A lot of beginners don’t understand what they should include in their projects. So here is the example.
If you want to make an eCommerce site start with building small features. You can start from signup or login form, then you can move to the next feature such as the navigation bar. So instead of doing everything at once analyze the whole project and break that in smaller problems or chunks. It depends on your project complexity, which features you need to build first. Initially, you will be making a lot of mistakes and you will face a lot of problems but that’s how you will learn to build and handle the complex projects. Below are some useful tips you should follow while making a project.
- Learn to use some good tools, editors or debuggers to use in your project. Learn how to use developer tools (for web applications, the most essential thing to learn), templates, package or library wherever needed.
- When you get stuck somewhere or find an error read the error message carefully. Most of the newbie programmers avoid the error message but it’s really helpful in solving the issues. Also, google the problems or errors you encounter while building your project. In most of the cases, you will find answer on Stackoverflow which is a very good community for developers.
- Avoid too much perfection in your project. You will end up with procrastination and slow progress in your project.
- Remember that there’s no perfect code — so avoid over-engineering things and move forward. First, make it work, then make it right, and finally make it fast.
Your journey doesn’t end when you are finished with your project. Explore more, explore as much as you can in the computer science field. Computer Science is a vast and rich field so analyze what fascinates you the most. You can explore different fields such as Machine Learning, Cloud Computing, Systems Programming, Mobile App Development, Blockchain, Virtual Reality, Web Development, etc. There are a lot of projects on Github and a lot of resources available on the internet. As per your interest, you can find some tutorials or projects on the internet. Learn from there and try to make some projects on it.
Check the different approaches and methods of other developers. Make a habit to read code on GitHub or StackOverflow. You will find multiple ways to solve a single problem. Adapt the best practices to solve the problem in programming. Join some online tech community, contribute to open source projects or participate in some contest. If you are a student participate in ACM – ICPC or GSoC. The more you explore and practice the better programmer you will become.