Have you experienced, or are you facing, any of the following situations while learning to program:

● Looking for a lot of information on the Internet, don’t know where to start

● I bought a book and didn’t finish the first chapter for a long time

● Can follow a few lines of code at first, then suddenly can’t understand it

● I’ve watched some tutorials and videos and seem to understand, but still can’t write my own code

● I tried many times and forgot all about it after two months

For beginners, especially self-learners, too many problems can become obstacles on your way to programming, inadvertently from the beginning to give up.

You need a clear study goal


A lot of people say, I have a goal. I want to learn how to program, and then I want to get a high-paying job as a programmer. This is a goal, but not a specific, concrete, actionable learning goal. This is like saying “I want to be happy” or “I want to do what I want to do” without any specific criteria. It gives no guidance to your actions.

Do you want to learn how to program so you can write an automatic script to grab tickets and coupons, or do you want to automate a lot of paperwork? Is it to verify that your trading strategy on your stock is sound, or to create a website to promote your brand? If your goal is to get a job, do you want to develop games or desktop software, data processing or websites, front-end or back-end? Programming is a very broad concept, and knowing your purpose will give you direction and consistency in your learning.

Maybe a lot of people think, I don’t know, just want to learn more skills, it will be good after all. And I haven’t even learned yet. How do I know what to do next? This is an understandable starting point, but I still recommend that you set a small goal for yourself. Even if you use your imagination to think of a need, that’s good. Otherwise, it’s hard to stay in a state of learning first and then again.

You don’t have to worry about setting the wrong goal and getting sidetracked. It’s better than having no goal at all. It’s just a milestone in the beginning of your learning process, and once you’re done with it, there’s more to choose from.

2. Establish a holistic understanding first

There is a saying in software development:

Premature optimization is the root of all evil.

It also works in programming. A lot of people will pursue some sort of one-step ultimate path, which manifests itself as:

● Looking for recommendations for the best tutorials

● Theory before practice

● Drill into the details

It seems that there is nothing wrong with it. It is consistent with the educational philosophy to set a clear course, lay a good foundation and follow the steps. It’s almost as if you’re determined to optimize your code, and if I say you’re doing it wrong, it looks like I have a problem.

But things are timed, the right thing to do at the wrong time, will lead to the wrong results. Too early into local details, the pursuit of theoretical basis, it is easy to make beginners confused, so that at a certain point, stuck, unable to continue learning. Easy to understand and professional can be difficult to reconcile. Many tutorials are good because they are well-structured, but is that right for you?

For early learners, especially non-professional self-learners, it is a more reasonable way to open without understanding.


To borrow this picture from the web, programming is very similar. If the points on the graph are concepts and techniques related to programming, the process of learning is like drawing this graph: you learn about these skill points and connect them.

One way to draw is to draw the details of one point, and then draw a precise line from that point to the next, one by one. It’s a seemingly safe approach, but it’s inefficient and error-prone. It makes more sense to first determine the general distribution of points on the paper, draw their Outlines, then draw the points at key locations, connect the key points, and then gradually refine the branches and details.

Learning to program is a circuitous, iterative process, not a one-way street to the end.

When you first get into programming, you don’t need to care about the details at all. You should have an intuitive impression of what technology can do and feel the joy of programming. This goes hand in hand with the previous point: Once you have a goal, you can determine what knowledge and learning path you need to achieve it. And when you have a general understanding of programming, you will know more about what you can do after learning programming, and make your goals clearer.

3 Choose the right starting point and route


With a clear goal in mind and an overall perception established, the next thing is natural: choose a starting point that works for you, start your learning in the direction that leads to your goal, and light up and connect the dots on the skill map. Otherwise, blindly starting from the wrong place, such as choosing a high starting point of the book, or starting to fiddle with a framework, will be less effective, inefficient, and even lead to giving up. That is why haste makes waste.

If you do the above, and have some basic holistic understanding, you’ll see how ridiculous the “21 days to master XX” and “2 months to be a data analyst” hype is.

The above three points, in layman’s terms, you need to know:

1. What did you learn

2. What to learn

3. Where to start


If you look at any of the most popular mobile games out there right now, you’ll find a similar tutorial:

1. Explain the winning conditions of the game to you and guide you to a win (clear goal)

2. Let you experience a high level and high configuration lineup (overall cognition)

3. Guide you through the basics and early upgrades (starting point and route)

These games are carefully designed to be addictive. The same is true for learning, let yourself “addicted” as soon as possible, in order to go further.