Good programmers - junior high school senior programmer classification

Good programmers

 

Depending on the level difference between these three dimensions, we do a brief description of the junior programmers, intermediate programmer, senior programmer.

 

 

01  junior programmers - to know something to do

 

It is in its early stages, will focus most of our energy on the lifting of professional competence. This time "leadership" and "connectivity" is very weak.

 

So, this time even if you have a strong sense of curiosity can not express it well, most can only passively accept the organization of work.

 

Things to do at this time need to rely on a number of tutorials, documentation, only under "follow suit", hardly the case without the aid of external information to solve new problems never encountered before, so Baidu, Google has become their The only choice.

 

You can look at your side, if there is less often these scenes appear, mostly junior programmer performance.

 

  • Difficult to ask the right questions, mostly directly ask someone how to do this function. If you clearly explained to him, he will do exactly as you say, and even sample code you write will copy the past. Because in their world, only successful compilation and compilation fails, task completion and task unfinished.

 

  • Often make mistakes, it will be set aside too much "flex time" in order to have time to redo before the due date. So always complain about "no time."

 

  • They have the functions of work on the intersection of people fail to understand. For example, the test personnel are always hostile, because they found a mistake, "hinder" their work done.

 

  • Not pay attention to develop some good habits, such as the refining habit of repeating the code, the code written in the same style, self-test, and so on.

 

 

Unfortunately, it seems very early stage, not only just entered the programmers skilled work, in practice, there are many people still in the years of work at this stage.

 

 

02  mid-level programmer - know how to do something

 

Crowd divided in accordance with a single dimension, most of the time are normally distributed, and here is no exception. Average programmer is the largest around us, including those mid-level programmers had to wear a vest senior programmer.

 

At this stage, some mid-level programmers began to have a certain amount of "connectivity", but not all, mainly to see is not have a "sense of community."

 

On professional competence, intermediate programmers have learned some of the concept of "global and local", but still do not see the entire "forest", mostly confined to a module, process. For example, they'll think, "This is the right way to do it quick?", But will not consider "this, the entire company will have any real impact on the team?."

 

They began to focus on code quality, for fear of low-quality code will affect their vision of the "whole."

 

But still relatively simple for the quality of understanding. For example, this time you will often hear them to "performance" talk about it in their hearts "performance" status is paramount, you always think better of this program and what my program performance.

 

The same can look around, mid-level developers do most things.

 

  • For a question to be asked a number of options, but can not make accurate decisions. Once more authoritative man gives his choice, without thinking of the average programmer will perform as recommended.

 

  • As can be seen in the code design patterns, but when writing code in addition to their own singleton and factory, the other almost unexpected.

 

  • In discussing some funky framework and technology of the time you can always talk for a few, but ask this framework or technology What are the disadvantages, basic do not know. Even sloppy in the project on the use of these trendy frameworks and technologies, leading to frequent online issues, senior programmer had to clean up the mess.

 

  • Able to complete the required tasks on their own time to have an accurate assessment, but assessment of other people's time will not vary, as will their own criteria to assess.

 

  • It has the functions of the staff working the intersection of a certain understanding. For example, the test will take the initiative to seek cooperation, help them deliver higher quality projects.

 

In fact, this stage is the most dangerous stage, because most frightening is not ignorance, but little knowledge . Psychology Dunning - Kruger effect (The Dunning-Kruger Effect) is about is the problem.

 

Two social psychologists in the four study done in 1999, confirmed the existence of following this curve.

 

In this state, the people most likely to overestimate their own, which is a lot leads to a lot of "fake senior programmer," the reason why.

 

 

03  senior programmer - know what must be done

 

Senior programmer in the "professional competence", "connectivity", "leadership" of these three dimensions to accomplish something. Because they can not only from 1-100 thing done well, but also has the ability to lead other people to get things done is 0-1.

 

According programmer groups have contacted me to see, I think the senior programmer, they understand that nothing is perfect. On the contrary, problems, drawbacks and risks are always present.

 

Their decisions are always standing in order to "balance" the overall point of view to consider, rather than the so-called cool technology or outside the spread of the "right" technology.

 

They will be more concerned about those who are not obvious things, such as maintainability, scalability, easy to read, easy to debug and so on.

 

Senior programmer society like adults, they stepped on a sufficient number of pits, also had more than enough to fill the pit, had to recognize the reality of the cruel, rather than seeking for perfection. Thoughtful, practical, simple, and it is time they work exudes a strong "taste."

 

These can take a look at the following scenario around you how many "taste" of senior programmer?

 

  • Primary and intermediate programmers different, they throw the problem is not to do things right, but to do the right thing. They will ask why you want to do and what to achieve. When you tell them what the goal is, by implication they might in this way is wrong and the other better to make some amendments; of course, more importantly, will also provide evidence to convince you.

 

  • Because clear goals ahead of doing things, so in the course of hands-on doing one thing, he will think there is no key details in a better way, even a new attempt is not in the scope of those before.

 

  • He can easily recognize what he does not know, and ask your advice. But also you can easily make it clear that he knows what to others.

 

  • They understand the role of the functions of the staff of the cooperative, who not only know when to seek help, but also know how best to help them.

 

  • Difficult thing to them feel comfortable, because they are good at is not a technology, but the ability to solve problems. They always solve those new problems never encountered before, even if they are difficult.

 

 

So, how do we help it become a senior programmer?

 

 

01  I would also like to focus on technologies focus on business

 

Why put it on the first point, because I think this is the most important, it is the basis for other items, but also the most easy to do. But many programmers do not want to do it.

 

Be sure to clear business goals, no clear not start. Believe me, as long as a qualified leader, will patiently and you said clearly.

 

Then to get used to analyze the technical challenges we may face based on business goals. For example, how much traffic, which user roles and functions involved, how much complexity and so on.

 

Again with the following "impossible triangle" to find the right technology framework, solution. Seek the best possible balance and not go to extremes.

 

If not allowed to draw multiple advantages and disadvantages of each program can be set out, to seek advice Leader.

 

 

02  "Design" code instead of "write" the code

 

Most people might get the demand, he began to write code, read, read, because the pages are more and more functions, more complex code that feeling that he will find it difficult to maintain.

 

Although the design is inseparable to do a lot of hands-on experience accumulated. But there are ways to make the process of shaping the capabilities faster. such as,

 

  1. The first is the first point mentioned earlier, more attention to business. Do not understand the business, design and consequently you do not come out. Donkey or horse designed as ......

 

  1. If you develop a feature / modified to "day" for the work periods, we must first draw. What specific painting map, you can refer to my previous article written: software development will be used in Fig .

 

  1. Thoroughly understand the characteristics of each scene and apply design patterns, note how the code does not need to write back down. A sweeping list of design patterns before long every time you write code and see if applicable. If so, go to "follow suit" in accordance with design patterns to achieve, through the accumulation of time, slowly, you really master the design patterns on more and more. This helps exercise your design capabilities.

 

 

03  will first "cut" before demand "access" needs

 

This had to be done depends on the first point, otherwise you proposed "cut" request for proposal will not be adopted by most.

 

Many people listen to the needs of the time to explain the thinking is that this function can not be achieved, how to achieve, it is hard. Most of the questions is also based on this idea expanded.

 

It may also proposed "cut" the problem of demand, but mostly on the grounds that this is too cumbersome to implement, this can not achieve and the like.

 

In fact, as long as you keep the "do what is the purpose of this demand," the question to think about, "cut" demand will become a more successful, but also a natural thing.

 

 

04  solve a class of problems, not a problem

 

Many people feel that day to see the bug cleared her everything will be fine. Even if the same problem occurs several times in a production environment, most will say, "Oh, no, how has gone wrong."

 

This way to treat the problem will only make you more and more busy, because your time to solve the problem of efficiency and how much is invested into a year of change.

 

We want to get rid of a used after bug, think about if you can find similar problems in the existing code by what means, and to dispose of them.

 

Even considering there any way to avoid such problems once and for all from happening again, such a package SDK or write a component, as in a minimally invasive manner universal problem strangled in the cradle. Not only let yourself relaxed, but also for the benefit of everyone.

 

 

05  follow the KISS principle, possible to write simple code

 

KISS principle: Keep It Simple, Stupid (Keep it simple, stupid).

 

Not just programmers, the ability to make things simple for any person is a profound skill embodied, not one .

 

The simpler, closer to nature. Like, some people use long-winded to speak to understand one thing, and some people just do a vivid metaphor you will understand.

 

This "simple" refers to the overall simplicity, rather than make another partial complex partial simple. For example, to use the parent of more fool, the bottom package code intricate, obscure, this is not true "simple."

 

 

If you think you have an intermediate or advanced programmer, then you go back and look at the code that he is still a junior programmer and write, it's easy to find some seem redundant code.

 

The second point mentioned - "" Design "code instead of" write "codes" to do great help to this point.

 

 

06  Select endure certain issues

 

In the artificial intelligence can not replace our previous coding, we always have to face endless personally, this kind of problem.

 

However, everything has two sides, a program at the same time solve an old problem, always brings new problems. Therefore, we must realize that endure some issues are inevitable.

 

Now that you look sucker design, probably when people make a compromise.

 

So, in that case, you should consider is that the current issue is now in the end there is no need to address? It is worthwhile, why not before to solve? It is not a problem to be solved all your current list of the highest priority?

 

 

07  to create their own "T-type" professional skills

 

Many people may have heard of the concept of "T talents," we programmers to build expertise on this model is also suitable for use.

 

But for the "first vertical and then horizontal" or "first horizontal and then vertical" Different people may have different views.

 

My view is that, in most cases, the first vertical and then horizontal. In particular, a technology, the more mature development of the field, the more should be so .

 

Because the essence of a lot of things are the same, so very deep to reach a certain field, after an insight into some of the essential things, there is the analogy effect on other adjacent areas. You can accelerate your expansion in the "breadth" of.

 

However, the "breadth" is not to say superficial, most only know the appearance of "what it is." I think the more appropriate extent, you can not clear the use of a specific technology, but need to know what problems it can solve, as well as cost and potential risks, I will this information be summarized as "how it kind" .

 

 

08  to build self-driven "closed loop"

 

Many people are aware of the concept of closed-loop, but its importance and value is often underestimated. Because people are always short-sighted, "trickle" sort of way always not to be seen.

 

Conventional build a closed-loop process is mostly the case.

 

 

 

The drive here from the "closed loop" is this.

 

 

How can this be it? Just do one thing, as many of their knowledge of foreign output .

 

Take my own case, I was in 2015 that would begin to introduce domain-driven design in the project, and continue to share its benefits internally, slowly more and more projects to start in this direction.

 

Because of the continuing share early, so within the organization, people who set me up more than a "DDD expert" label, then we will come and meet me to explore issues related to DDD.

 

More to the back, I do not have to take the initiative to seek knowledge in this field to learn, because the external feedback already received more than enough, they can Forced me forward. And these are the actual feedback of the real scene, this time access to information and learning to achieve natural "apply their knowledge" effect.

 

 

To be honest, there are a lot of people do not think so, they want the opposite: "Why is everyone asking me questions yourself to learn it!!."

 

So, when you meet other people to ask you, if you happen to this is an area of concern, we should embrace this issue instead of against it. Because you are the team most authoritative people, this is your self-drive to build a good opportunity "closed loop" of . Missed this time, next time do not know have to wait long.

 

 

Speaking earlier article, I will 'professional skills, "" ability to connect external "," leadership "in three dimensions combine to show you. It will look like.

 

 

 

 

You will find that it contains programmers several common positions in the advanced.

 

You can pigeon-holing it: D

 

 

Well, we summarize.

 

This I first chatted with you in the eyes of everyone is what senior programmer, found no particular uniform standards, are vague. This is also reflected in a number of realistic scenarios, such as the recruitment of senior programmer, senior programmer on the train.

 

Secondly, I respectively presented their perspectives on the nature of the primary, intermediate and advanced programmers.

 

Then, we give some practical ideas to help you move closer to advanced programmers.

 

I hope for your inspiration.

 

 

Finally, a word of Martin Fowler as the end: "Any fool can write code that a computer can understand, write code that humans can understand a good programmer."

Guess you like

Origin www.cnblogs.com/EarlyBridVic/p/12100007.html