Most learners also encounter the same obstacles, but once they have overcome these barriers, the benefits come immediately:
- Enjoy a more learning experience
- Progress faster
- The problem is more persistent, do not say give up
- More independent when writing code
So, what are these obstacles, and how do we conquer them?
1. Incorrect motivation for learning
Before talking about barriers, I would like to highlight the importance of learning motivation. Don't learn to program just for programming, and don't learn to program because you hear it's cool.
You have to learn to program because you want to solve problems, you have to learn to program because you want to automate and improve your life, and you have to learn to program because you want to build your application for the benefit of society.
If you just like programming, and want to use it as a career, then you may have a strong urge to give up after the learning process. This usually happens when things get tough and the learning experience becomes painful. At this point you will tell yourself that you do not like programming, programming operation is not suitable for you, feel that they are not born programmer.
That's why you should consider setting goals around the completion of your project. If you have a plan in mind, or if you want to solve a higher level problem, then you can say to yourself: "This may not be a pleasant experience, but I really want to solve this big problem, so I must overcome this obstacle." ”
2. Don't know what technology to start with
Many people ask, "What programming language should I learn first?" "The question is raised because they don't know why they're learning code.
Once you've made up your mind to complete a particular project, it's easy to start with a language:
- If you want to build an iOS app, then you need to learn objective C or swift.
- If you want to build an Android app, then you need to learn java.
- If you want to build a web app, then you need to learn JavaScript.
In fact, we can now use JavaScript to create any type of project-whether it's a simple web and mobile app or an advanced hardware project. Most of the industry has its shadow: music, medical, games, fashion. This language is well worth learning.
If you're still not sure which language to choose, then you might want to ask a programmer for advice. As long as you're sure what you want to build, he can quickly recommend the right technology for you to use.
In addition, knowledge is interlinked, so do not be overly formal, the step of choosing a language is almost no risk.
3. Do not apply and blame yourself
After choosing a good technology stack, it's always easy to start learning theories, and there are plenty of free and paid online courses on the web.
Soon most learners have mastered theoretical knowledge and can even explain the workings of a piece of code themselves. Theory is only a limited set of concepts. Anyone can remember it within a few days if she/he really wants to. So, what is the key question?
The biggest problem learners encounter is the practical application of theory to solve problems and write new code. The gap between the two is actually a skill gap.
Swimming, for example. You can read a lot of technical articles and then explain them like a professional trainer. But the practical application of these theories requires a great deal of practice, struggle and error-you will surely swallow a lot of water!
But what's even worse is that you start blaming yourself. Or think you're not smart enough, or feel like you have no talent. It's not really about smart talent, you just need to practice your skills:
1. Select a complex project. Ideally, this project will inspire your interest.
2. Divide the task into small, independent tasks. For example, "Implementing a login Page" is a big task. Solving a task should not exceed 20 lines of code. Here are some tips to help you do this successfully:
- If you can't solve this task, then divide it further into smaller tasks.
- A task should not use too many theoretical concepts at once.
3. Focus on one task at a time rather than multitasking in parallel. Do not jump to the next task unless you have thoroughly tested the current task and are confident that there is no problem.
If you don't, and the application is in trouble, then you don't know which of the multitasking you are solving in parallel is going to be a problem, and it's a lot more hassle to find it.
4. Make sure that you know all the necessary theoretical knowledge before starting the task. Sometimes, you may not know what theories you need to learn, which is normal, so you need to ask someone for help: A programmer friend, mentor, or a community like StackOverflow.
5. Finally, you solved the task. In the process of solving the task, you may encounter a lot of problems, you need to do is to learn the lesson, this is the following points to say:
4. Lessons learned from non-absorption of solution tasks
In the best case, you solved the task and the results proved to be very effective. At this point, many people tend to carry out the next task directly. But if you do, you're wasting a great learning opportunity.
I hope you can challenge yourself with the following questions and help yourself to grow:
- Which boundary conditions will cause my code to fail? What application state can break code even if it has not yet failed?
- Is my code neat enough? Is the code easy to understand and change for other developers, even themselves? Because you may need to fix the problem hidden in this code in the future, or change the code according to other product specifications.
- Is my method the best? Is there any other option that I can choose to use? The pros and cons of each scenario? Is this task worth solving in a different way?
- How does this module interact with other modules? Does it negatively affect other modules? Is it easy to be affected by other modules?
However, many times you will be in the dilemma:
5. You don't know how to handle a task
You don't know where to start? You might try it randomly, or copy some code from somewhere else that you don't understand. However, this is not helpful. Even the code you copy is useless. Because when you meet a similar task again in the future, you still can't solve it.
If you want to solve the task properly, first you need to know why you are stuck. Here are some possible causes:
1. These theoretical knowledge is not well mastered:
- Language grammar
- How a library or API works, how a particular method or class works
- Programming Paradigm (Example: Asynchronous Programming)
- System operation (for example: HTTP requests are key to understanding web development)
If this is the case, then you can review the theoretical knowledge, if still can not touch the mind, but also to find someone to ask for help.
2. The task is too large, it is broken down into a small task.
3. It may also be because you read too quickly, ignoring some of the concepts that you think are familiar, so you can't understand the task requirements.
6. You know how to solve the task, but the solution doesn't work
This is the most common scenario in programming, even for experienced programmers. The most likely reason your solution doesn't work is that there is a bug in your code.
How do I fix it? method is to debug the code. This is one of the most important skills that a programmer needs to learn. It's not something you can do casually, or a lucky guess game. There are specific steps to finding a bug. And there are many books that teach this skill.
Unfortunately, this is a challenge that many novice programmers lose power to choose to give up. Few courses will explain the importance of debugging. If you do not know how to debug correctly, then it is invincible can not overcome the difficulties.
Many people worry that they will spend too much time debugging code. This is normal, which is unavoidable in your first year of programming planning.
Even, you have to learn to like debugging. Think of this as an opportunity to fix bugs and improve your programming skills. When you have solved a bug, ask yourself the question: "Why did I make this mistake?" How do I prevent recidivism in the future? ”
Another good idea is to write the bugs you find in a programming diary to help you summarize and learn.
7. Do not know how to receive help
When we are learning code, or debugging code, we can consult a lot of materials: books, courses, tutorials, mentors, developer community, etc.
The most common problem with learning these resources is that you don't fully understand what's going on behind the scenes and how the concept fits into a larger blueprint.
For example: You spend 10 hours on a problem and finally someone offers a solution, and you tend to take the "take doctrine"--and then jump to a task after adopting the solution. Don't do this! Instead:
- Think about the process of thinking before you. Ask yourself what you've done wrong and what's worth your previous ideas and improvements for this particular solution.
- Ask about other people's thinking processes. How did she/he solve it? Learn from each other and draw on experience.
This is also a big drawback of searching for answers on StackOverflow and Google: You only know the solution and don't know the thinking process behind the scenes.
8. Don't apply the theory you learned
This article is also a theoretical knowledge, unless you can use it, otherwise it will not play a shred role-a lot of application, until it becomes a latent meaning of the routine program.
Programming is the process of helping you solve a variety of problems by forming good habits.
This paper draws on http://www.codeceo.com/article/8-barriers-learn-coding.html
8 obstacles that programmers need to overcome to learn programming