The blue words

As a developer or other technical person, once you’ve gone from being a beginner to an expert, you feel like you should be done, and you don’t know where to go again. A lot of developers don’t have a little bit of a long-term perspective, like asking developers how you want to be different in two years from now. Eighty percent of developers will say, “I hope in two years the technology will be better than it is now.” This answer describes only quantitative change, not qualitative change. In other words, there are no earth-shaking changes. In order for us developers and other technical people to know what qualitative change is and to have a new goal, this document attempts to address the issue of qualitative change and provide some suggestions on how to produce such qualitative change.

Advanced is truly developed for yourself

For technicians, the Dreyfus model can be divided into five levels:

Novice: can only follow instructions step by step. Newbies are not exposed to the current industry, so they have to follow instructions step by step.

Beginner (advanced novice) : Able to complete a local task. There is no need to give instructions, only need to give a local work goal, the primary can complete this part of the work, but the primary has not formed a global concept, do not know what they do in the global weight of how much.

Intermediate (winner) : Able to complete the overall task. Technical personnel at this level can understand all aspects of a field, can independently complete a project under a given target, can lead people, and will not frequently ask for help from senior.

Advanced (proficient) : has initiative and is able to correct his goals and means according to the circumstances. Senior can stand at a neutral level to consider what should be done, what should not be done, what is the least cost, need to balance the costs and benefits.

Expert: Work by intuition and hit the nail on the head. In the process of solving problems for a long time, experts have accumulated rich experience and can quickly grasp the key points of the problem.

Above grading, there is an important watershed — intermediate cross to advanced. Intermediate and below (hereinafter referred to as intermediate) are developed for others, advanced (hereinafter referred to as advanced) and above are developed for yourself. Therefore, in the initiative, the purpose of doing, means, there are essential differences between intermediate and advanced. Here’s a look at the differences.

From passive to active

When people do things, they have internal motivation to push them forward. As intermediate, things are arranged by others, their own unwilling to take the initiative to take responsibility. Something like this is common in intermediate:

Why has the demand changed again? Can we confirm the demand before we do it

It won’t work that way. The framework is set. It has to be done that way

I worked so hard to write all this code, and it went down the drain

I’d better not change this, it’s very difficult to change, I’m afraid of problems

This problem is not from my side, but from the interface of XX side

As can be seen from the above, intermediate, as a passive state to complete tasks, will try to make things less on their own. And there will be a lot of complaints, because for middle-level, the reason for a changing requirement is always someone else’s, not your own, but your own code implementor. We can take a look at what the advanced equivalent of speech might look like:

Why should this requirement be changed to this way? Can you tell me in detail? No, I will see if it is worth changing

I’ll talk to the architecture team and this change should make the whole project much simpler

I made this prototype first, it was very cheap, we confirmed the prototype, and now I’m writing the code to implement it

I think it’s going to make the whole project a little bit easier, but of course, it’s going to make a big difference, so let’s see how do we cut it

This is a problem. Let me follow up and find out why

Advanced as an initiative to solve the problem, will take into account the business demand, to paid to do some trade-offs, don’t evade a question, the problem will be closed down first, and further to find the cause of the problem, will try to make a program easier to understand, have the courage to change according to the reality and technical means to adjust the current target.

In terms of positivity, an active and positive attitude can create more opportunities for themselves. In the intermediate passive state, the complex things are pushed off, and the opportunity to solve complex problems is blocked, so that the ability can not be improved. Intermediate students make the mistake of thinking that they can improve themselves by reading books or watching videos. But arguably, the most effective way to improve is to actually solve problems and improve your ability. The function of reading and watching videos in improving ability is that in the process of solving problems in practice, they can give people a way to sum up the problems, deepen their understanding of solving problems, and turn solving special problems into solving more common problems.

For example, in the process of using Docker, it is impossible to know the network interaction between Docker containers if you just read books and watch videos. Only by actually using the valuable structure made by Docker, encountering problems in the process of making the structure and solving the problems, can individuals know what the network interaction of docker container is like, and then with reading books and watching videos, they can have a good understanding of why the network interaction is like this.

So, without a fundamental shift in initiative at middle level, middle level will stay where it is. At the same time, with the transition, there will be more and more opportunities to improve themselves, and then quickly distance from the middle. Such a distance is a watershed, intermediate is the same intermediate, but advanced will soon be not that advanced.

Complete tasks to express yourself

Intermediate and advanced approaches to the same goal have different attitudes. Intermediate is to complete the task, so the clearer and more constant the goal is, the more beneficial it is to oneself. In fact, most of what we are dealing with is intermediate, which forces senior people to describe goals clearly and visually.

The senior attitude towards the same goal is that this is another opportunity to improve myself, and I want to exploit all the value of this opportunity. It doesn’t matter if the goal is not clear. I can make it clear through communication, which can exercise my communication skills. It doesn’t matter if there is a problem with the framework, I can try to make some changes to see if it will simplify the project, which will exercise my abstraction ability. I must make this project perfect, both in terms of user experience and code format, so as to tap into all the value of this opportunity. Gee, I realized that a lot of the code is repetitive, and I need to write a code generator to generate that duplicate code. I found all of them

Dao has the insert/update/delete/select method, I can write a generic Dao, using Java

These methods won’t be written anymore. To achieve the goal is to express our ideas in all aspects of the process. This is the process of high-level self-expression.

A given project has realistic value, that is to say, a project has a corresponding user group. To do a good project is to judge whether one’s ideas are right and what one does is valuable with realistic and objective criteria. Intermediate doesn’t take this level into account, so it simply gets the job done. The senior will consider what the value of the project is and what ideas the senior can verify with the help of the project process.

Used by tools to use tools

After determining the goal, intermediate uses familiar tools and tools to achieve it. As a winner, intermediate has familiar tools and means for a clear goal and can accomplish the goal. At the same time, the intermediate limit is a specific goal, using familiar means to achieve the goal.

Senior people’s cognition of a target is to confirm their ideas through a valuable target, so they are not limited by tools and means. In order to improve their abstraction ability, they are more willing to spend time studying new tools and means, so that the way to solve problems becomes simpler. Senior will pay attention to the concept of productivity and improve their productivity. To improve productivity is to improve the ability of individuals to use tools.

People are not very different without their tools. The big difference between people is that different people use different tools, or the use of the same tool is different. It should be noted here that tools include transportation tools to expand action ability, PPT and Word to expand performance ability, Eclipse and Idea to expand coding speed, and most importantly, tools also include thinking mode to expand thinking ability.

In fact, every time you use a new tool, you have to have a corresponding mental model to match it. For example, as a developer, you can’t use Eclipse shortcuts to Idea

In effect, switch from Eclipse to Idea

, you need to change all the habits of thinking before. Here’s how to move from intermediate to advanced, essentially providing new mind-set tools that allow developers to transform themselves as they use them.

Advanced development must do

We already know that there is a divide between advanced and intermediate. At the same time, once you change your thinking, you will change from intermediate to advanced. When you solve every problem, the advanced level will be exercised and improved, thus gradually moving away from the intermediate level in the static state. There are many modes of thinking, as a constantly changing advanced will slowly discover new modes of thinking, here will introduce a few into the door of advanced thinking mode, please be sure to master these modes of thinking, in solving problems, communication and communication, you can try to practice the following modes of thinking. As you use it more and more, like typing, it becomes your subconscious, setting the stage for change in nature.

Establish the abductive reasoning model

There are two main methods of reasoning:

Deduction: Rule + situation = result

Induction: Situation + result = rule

In both cases, deduction is based on rules, matching situations that meet the rules, and getting results. Such as

Rule: Everyone eats to survive

Situation: Li Lei is human

Result: Li Lei has to eat to survive

Deduction is the use of an abstract rule of concrete deduction (expression) out. This raises the question — how do rules come about? Rules are usually generated by induction. Induction is to abstract a number of similar specific situations + results to obtain rules, such as:

Situation 1: Confucius was a man

Result 1: Confucius had to eat to live

Situation 2: Cao Cao is a man

Results 2: Cao Cao to eat watermelon to live

Rule: You have to eat to live

So these are two very common methods. One way to supplement this is as follows:

Abductive/reductive: Result + rule = situation

This method is often used to come up with creative new ideas. Here’s how it works:

Result: Han Meimei eats to survive

Rule: You have to eat to live

Situation: Han Meimei is human

This is actually to take the situation to verify the rule, the result – Han Meimei eat to survive, is it because the rule – all people eat to survive – the rule has worked? Let’s see if the situation matches: Han Meimei is a person — is this situation valid? At the intermediate level, they tend to throw complex problems out the window and don’t solve them themselves. As a result, they are unable to apply this mindset to problems and become less and less flexible. Advanced people apply this mode of thinking and, when confronted with a problem, explore the possibilities and ultimately find a solution. For example, when you have a problem like this

Results: The mobile end did not get the data, how to do

When high level encounters this problem, it is likely to be verified one by one as follows:

Rule: Local network problem – Situation: See if your phone can access other sites

Rule: Server domain name resolution error — Situation: Ping the domain name to see if there is a problem

Rule: The server is down — Situation: Have OPERATIONS log in to the service to see if it is down

Rule: Memory usage is too high scenario: Check whether the CPU or memory usage is too high

Rule: User permissions have been changed — Situation: See if any changes have been made recently

As you can see, when faced with a problem, high-level looks for rules and uses scenarios to prove whether they are affected by the corresponding rules. This process activated the advanced thinking, and let the advanced extract all the experienced rules again and use them one by one, equivalent to reviewing all the known rules. When the known rules are exhausted, we should creatively break through the rules we know, find more information and generate new rules. The problem with the phone not fetching data, for example, may end up with an unconscious command on the server:

du -h

Then it unexpectedly finds that the disk is full, then it tries to delete a few files and fetch data again, and then soon the disk is full again and the problem arises again. Then determine that the disk is full. Then, if we write a program that does not log, how come the disk is full? The result is to find large files layer by layer with the following command:

du -sh *

I found that the big file turned out to be OUT, and then I thought again. Yesterday Li Lei said that he had installed a monitor of something, so it could not be the log file that was typed out by this monitor. Then I asked Li Lei…

Through this process, you can see that abductive reasoning allows you to go through life at once, thinking of all possible problems, creatively constructing rules when necessary, and with luck… When such things after many, similar problems appear again, perhaps senior will be casually said: is XXX a problem, and then a verification, as expected yes. That’s being an expert, that’s working by instinct, that’s hitting the nail on the head. But it’s important to note that you can’t develop expert intuition without going through life repeatedly, exhausting all your ideas repeatedly.

How do you do that? When confronted with a problem, a person’s usual response goes something like this:

That’s new to me. I don’t

Boss, take a look. I got a problem here

Boss, I’ve thought of everything I can think of. Give me some advice

Boss, this problem, I think is caused by this reason, please help me change a configuration check/you help me redeploy check

Why don’t I change the configuration/deployment myself? I don’t know how to change/deploy

Turn this unconscious reaction into something like this:

This problem should be caused by this reason, let me verify

I *, that’s not the reason. I’ll see if that’s the reason

I *, this is not the reason, is there a problem with the server, redeploy the server is troublesome oh, I first see if the configuration can be changed (evaluate the cost and benefit)

This is already in use, directly changing the configuration affects a lot, I ** have to deploy one by myself, really troublesome

Dizzy, startup error, what is the reason

I have to download another dependency package

Finally deployed, I **, want people to live ah, not this reason

It’s been going on for five hours. He’s fucking

I *, really funny, turned out to be the configuration file added a “/”

The benefit of this problem-solving process is not in the end result, but in the exploitation of all advanced capabilities.

Build an abstract – concrete thinking model

Abstract – concrete models of thinking that correspond to inductive – deductive reasoning. This model is presented here as a tool to verify whether I really understand the nature of a thing. When solving problems, advanced is not only aimed at finding solutions to problems, but at finding similar things through different life experiences, refining similar things, and abstracting again on the basis of refining. Such as:

Situation 1: Confucius was a man

Result 1: Confucius had to eat to live

Situation 2: Cao Cao is a man

Results 2: Cao Cao to eat watermelon to live

Rule: You have to eat to live

This is the first level of abstraction. Further mining and refining leads to more abstract rules:

Animals need to be able to eat to survive

Both animals and plants absorb and excrete

The essence of living things is metabolism

When describing a rule, it is necessary to give different specific explanations to people at different levels of understanding. That is to say, everyone speaks the same language as everyone else. If the higher level is able to go further in both abstract and concrete levels, the more advanced it is, the more it can remember the rules with the least cost, and at the same time, it can freely apply the rules of the highest level of abstraction to different scenarios.

Understand the concept of productivity

Productivity, to put it bluntly, is the result of increasing productivity: less input and more output. The way to increase productivity is to change the means of production. Again, the tool includes thinking patterns that expand your thinking capabilities. For all, human output can be divided into only two categories:

Means of consumption: The products produced are used and consumed by others

Means of production: The material means upon which products are produced

For example, the development team developed an office system for the use of enterprise employees, this office system, for developers is consumption materials, for enterprises, is production materials. When developers develop office systems, they use technical framework, coding tools, computers, servers, etc., which are the developers’ means of production. The use of corresponding means of production also requires developers to adapt to the thinking mode of production data.

If you want to increase developer productivity, developers who spend their time working on projects are spending their time using a given means of production to get the output. At the same time, there is no time to polish the means of production and make them more powerful. Thus the ability of developers is limited by the corresponding means of production and the corresponding mode of production. So we need to make continuous investments in the means of production, both in tools and in mind-set changes.

For example, in our current development, the means of production has gone through gnif1.0, gnif2.0, and now gnif3.0, which in turn requires developers to master the mindset required by the three frameworks. Our development environment changed from manual packaging to automated builds, and at the same time, developers had to change their understanding of packaging.

For the advanced, the advanced will consciously leave time for the production material. Or, at the extreme, it is better to work overtime and spend more time changing production patterns and then use a new production pattern than to quickly and inefficiently achieve goals by using a fixed production pattern. Advanced accumulation is that of means of production.

For example, Emacs is a good editor and, in most cases, more productive than the average editor. For example, it can:

As a command line terminal, running various commands

Move and copy files as a file manager

As a notebook, take notes of various kinds

As a calendar, make reminders of important things

As a document editor, you can organize and plan documents well

As a code editor, you can highlight almost any code

As an introduction to Lisp, it introduces people to a more expressive language

If something doesn’t work/doesn’t work, you can develop/fix it yourself

The more you use such an editor, the more effective it is, and it is worth matching your personal mindset with such a tool. The more it is used, the more efficient it is, it is the accumulation of means of production.

Idea, for example, is a faster and smarter tool for writing Java code than Eclipse, and it’s worth switching from Eclipse to Idea.

The motto of the higher mind is: to do good work, first sharpen your tools.

From being indoctrinated to sharing

For intermediate students, their vision is limited by the tools and models they use. Some intermediate students may reach their goals faster than advanced students when they encounter familiar tools and tools to achieve certain goals. At this point, the intermediate will tend to think that what he has mastered is a special skill, and he will not share his experience with others. As a senior, constantly in a state of change, they are confident that tomorrow’s self knows more than today’s self, so they have the foundation to share their experiences. That is, resources are considered scarce by the intermediate level and plentiful by the advanced level.

The process of sharing is also the process of putting ideas out there, which can have the following benefits:

Let your ideas collide with other people’s ideas to get better ideas

Take out your ideas and let everyone confirm them, so that your ideas have wider applicability

Sharing at the same time, but also to be shared to create conditions, individuals can get free of their own experience of information

Senior will share their ideas with senior at the right time, so that they can gain more.

Write in the last

For technical personnel, from intermediate to advanced, they should first change from the concept level, from passive work to active work, actively communicate, provide valuable ideas, and make their own ideas verified. Secondly, the four modes of thinking mentioned in the article should be changed from conscious practice to unconscious use.

The author | no life

Address | https://www.jianshu.com/p/8545e3c241d2

Statement | this article is original, no life has been authorised to release, without author permission please do not reprint