In recent days, some friends in the mail inside asked me about learning problems. Many people think that working for a few years, but also learn a lot of libraries, and frameworks, and even the language, but the feeling is not much to improve their ability to. So today is my personal experience in this regard.
I learn classified into three steps: What, How, Why. After the observation of my colleagues and friends around, people most feel technology does not improve, just stay in the What stage. Let me explain these three steps.
? Step 1: WHAT
The so-called “WHAT” is to figure out what a stuff? What is the use? What is the syntax? What are the features? ……
For learning languages ??(such as C + +, Java), most people are able to grasp the basic syntax and standard library, and then use it to write small programs (such as binary search, bubble sort, simple file operations, etc.).
Learning library (such as JDBC class libraries), the majority of Java programmers can understand JDBC consists mainly of what classes can also be a simple database query and CRUD operations using JDBC.
This step is the most basic, even if you can not do (possibly your understanding is not good enough), do not mix in the IT sector.
However, the light will What is not enough. Just stay in this step, many programmers only know enough, I do not know what it is exactly. This is the current status quo of most developers.
? Step 2: How
The “How” is to figure out how something works? Mechanism to achieve? And a series of related issues.
Examples are as follows:
If you learn C + + language, you do understand the function returns the implementation mechanism of the parameter? Virtual function is how to achieve? Stack when an exception is thrown rollback is how is it? ……
If you learn the Java language, do you figure out the GC how to achieve? The reflection is how to achieve? ……
If you learn JDBC library, Do you know the four types of JDBC Driver? The implementation mechanism of the different cursor type? Mechanism of affairs? ……
At this stage, you have to think more like these problems. And through a variety of ways (see the “self-learning ability”), to figure out the problem completely. Naturally, you raise will be more obvious. If you hit some deep-seated problems (such as performance optimization), will know how to solve.
After completing this stage, you are basically belongs to the technical field of the best 20% of people (according to the Pareto principle, 80% of people not to think about how the problem).
? The third step: WHY
In general, only you HOW to think clearly, began to consider steps why.
So-called “WHY” is to figure out why something designed to be this way? Why not be someone else? What about this design?
To be honest, good at asking “why” certain talent ingredients? Like a scientific Daniel once said, “Ask a question sometimes more difficult than solving the problem. In general, only when you have a deep understanding of something, to be able to ask for the design of this stuff out some problems. So, I emphasized earlier, we first have to figure out HOW to again consider the question of WHY.
Examples are as follows:
For C + + language: Why C + + does not like Java finally keyword? Why C + + had not considered GC? ……
For the Java language: Why Java does not like C + + class destructor? Why Java class String and StringBuffer two seemingly redundant? ……
If you are able to ask such as the “why” questions, and through a variety of ways to find answers, then you basically have to find out exactly what this technology, and you may have to design a similar contraption. At this time, you have embarked on a broad road leading to a technical expert.
As the blog emphasis on IT aspects, most of these examples cited today are IT-related, but this trilogy outside the IT Industry / Domain in fact, can be applied, it depends on the reader comprehend.
The reprint must contain this statement, to keep this article complete. And the form of hyperlinks to indicate the original address of programming Capriccio this article: