Don't treat yourself as a Superman-a little advice to junior programmers

Source: Internet
Author: User
Original ENGLISH: unlearn,
Young programmer

One day I had a coffee with my friend Simone, during which we chatted about some work. We both managed some employees. To illustrate the problems that occurred when assigning tasks to junior employees, she made a wonderful analogy.

It's like you have asked them to upload a picture, but they have never done such a job. You understand what you want to do-just let them do it. In fact, you don't need to explain something because you think it is too simple. So when you asked a newbie to work for you, you said, "put this picture there and tell me after it is done." It's easy to understand, right? But does he know how to nail it? In fact, there are a lot of details that he does not know. He needs to learn to hook up the painting. In addition, there are many things that you can easily ignore.

First, how to do it. What tools does he need? You know there are hammers and nails in the toolbox. But he doesn't know. He thinks he has the right tool to complete the task. So he found a stapler and a tape drive on his desk.

Now he has two ways to complete the task. He can make many small tape circles so that they can be fixed on the wall and then pinned to the back of the painting. This method may seem okay, but you only know that the painting is wrong when it falls down. Another way is to wrap a large tape around it and pin it to the wall with a stapler. The result of this method may be worse. Although it is similar to your requirement, the picture is covered. As long as there are enough staples, the painting can be hung. But this is too ugly, and it is not what you want to do. If you do not stop him in time, he may continue to use this method for painting.

There is also a possibility, especially for the beginner programmers who are acute. When your boss asks you about the order for purchasing a dingtalk gun, you find that he has done this. So you called your subordinates to learn about the situation and found that he had been searching on Google last week, reading reference books, and asking for help from the discussion group. He knows that you want to put a picture on a nail on the wall, and thinks that the nail tool is a high-level pneumatic nail gun. If he can accept your opinion, you have to point out that the wall chart is different from the decoration nail, and tell him that the hammer in the toolbox is the tool that is really suitable for doing this. If he is still stubborn, there may be a quarrel like the following:

"Why can't I buy a dingtalk gun ?"
"Because there is not enough budget ."
"Isn't it possible to do one thing well ?"
"You can use a hammer to pin a nail ."
"But shouldn't we finish our work faster and better? Is it because we get used to it? We should look farther away ."
"We don't have enough time to prove it's right to buy a dingtalk gun. OK ?"

Finally, the two sides were displeased.

Now, you think you have made the problem of the tool clear enough. He also got a hammer and a nail and started his work. The problem is that he should also know how to use them effectively. It is easy for you to use hammers. But for those who have never seen a hammer before, it seems to have only one usage. In fact, you can use a hammer to handle the end. You can also pin a nail in a claw-shaped part into the wall, instead of holding the nail in your hand when making a strong dingtalk.

From the woodworking perspective, this seems a bit low-level, but it reflects the actual problems when using software tools. A software often provides many reference documents, but there are not many examples and usage. You can buy a reference book with more than one thousand pages, which tells you what you can do with a software, but does not show you how to use it even if you only have five pages. Even if you have an instance, they don't tell you why they are running in this way. After reading this article, you will not be confused about whether to use a hammer or a dingtalk gun.

I encountered this problem when I first started using XML. As mentioned in the help document I have read, "Read XML files with the SAX Parser and do not use the DOM parser. The Dom parser runs slowly and occupies too much memory ". Later, I asked other people, "Why not? Does the DOM parser have poor execution performance ?"

"That's not the case, but if you only want to get the author and title information, why should you load a 10 MB file ?"
"Ah, well, I want to publish a 20 K file as a webpage ."
"Then you should use the DOM parser ."

In addition, data interaction problems may occur. Now your subordinates know how to pin a nail. The first thing they do is to pin a nail in the frame.

Oh, my God !!!

"No, no, you didn't see the rope behind the frame? You should pin the nail to the wall and then hook up the rope ."
"Oh, I don't know what it will do. But you only pin one nail? Isn't it safer to have more dingtalk? For example, there are 6 nails ."
"It is enough to use one, but it is difficult to adjust if there are more nails ."
"Why is it adjusted ?"
"You have to correct the painting ."
"Oh? Do you want to fix it ?"

Alas, I didn't make it clear.

Now let's start to discuss high-level design issues. Where should the painting be mounted? How high should I be? He cannot decide. As mentioned above, it is not as simple as you think.

You understand that the painting cannot be hung at the door, because it will be blocked when the door is opened. It cannot be hung over there either, because you want to put the new bookcase there. Maybe your ceiling is 14 feet high. The painting is just used to make the big room look less empty. It is also possible that this is a photo of you and "Elvis Presley". When someone is sitting at your desk, you can display it. If it is an old photo, you must make sure it is not exposed to direct sunlight. These are all "Business Rules ". Although you have a similar method of painting, you must consider them.

Some business rules may affect your decision-making. If the painting is expensive, you have to find a way to protect it, for example, hanging it in a difficult place. If it is worth the most, you have to use 2 inch thick glass to ensure its safety, and you have to install an alarm system around it. If the wall you plan to use for painting is very strong, you have to use a drill bit. If the wall itself is worth the money, you should discard the idea of hanging paintings for the moment.

These rules may be justified, but they are not so obvious. Some of the correct solutions in some cases are not necessarily correct in other cases. You can only learn about them through your painting experience in the room. In addition, you have to consider which rules may change. Are you sure you want to stick the painting here? Will this painting be moved elsewhere? Will it be replaced with another image? Is the new painting as big as the old one?

Don't expect new users to consider this. You can give him some advice. Your task is to tell him as much details as possible. If he is smart and curious, he will ask questions and understand the ins and outs of this process. However, this takes time.

If you don't give him enough information, he will try to guess. The acute programmer mentioned above may ignore the rules at this moment. You told him to hook up the photo of your pet dog. A week later, he came back and asked if you would like to consider his suggestion about the plaster saw.

"Why do you think of the gypsum saw ?"
"The toolbox in the office only contains a wooden saw, and it is not suitable for sawing gypsum boards ."
"What? Do you think you only want to saw the gypsum board? You can buy a saw on Home Depot ."
"Well, I will buy one ."
"Wait, how do you think of SAW gypsum board ?"
"Well, I don't know what the best way to create a picture, so I went online to the gallery designer in the discussion group. They said the best way is to saw the walls and make a frame. Put the painting in the back to ensure the safety of the glass, because you do not need to move it. In addition, this method is more beautiful than dingtalk ."
"..."

This metaphor may not be very specific, but believe me-it is of great reference value. If you haven't encountered such a problem in your career, you can first look at it.

The key is that there are many things you must know from the technical level of detail to the overall effect level. A newbie cannot guess at will, no matter how smart he is. It has nothing to do with being smart. Everything should be determined based on the actual situation. Maybe you have been working with them for too long, and you forget that you may not know this for a while. However, you must describe your requirements in detail so that they can ask questions.

Just like this?

This reminds me of one of my favorite scenarios in the "Empire counterattack": Luke Skywalker suffered the blow of losing his loved ones, and he has been searching for his secret. Later, he followed the Jedi Master Yoda to learn how to become a Jedi. But Yoda didn't teach Luke what he wanted to learn. In fact, the audience thought that Luke did not seem to understand what the jedi should be like. After all, he had almost no experience in this field except for learning with Ben knobi. He did not know that Kenobi was a jedi until he witnessed the sacrifice of Kenobi in the battle.

This is what impressed me the most in this scenario:
Luke: Master, it is very difficult to move a stone. It is totally different from what I learned before.
Yoda: No, there is no difference. But you think they are different. You must forget what you have learned.
Luke: (concentrate quietly) Okay, let's try.
Yoda: No, don't always think about "try ". Either.

What is the relationship between "Empire counterattack" and the above-mentioned examples?

Junior programmers should "forget" what they think they already know and re-learn what they need.

There are two types of programmers who have just stepped out of campus: they are either energetic and ready to change the world at any time; they are either timid and afraid to seize opportunities or try risky things for fear of being fired.

The first type of programmer is also a type of concern to me. They think they know what to do and search for the information they need on Google and the Internet-they will crack the wall for their paintings. Or they will quarrel with you because they think it is right: the efficiency of dingtalk is higher. In fact, they are wrong, because the nail gun cannot control the power of the nail (it will nail the entire nail into the wall), not suitable for hanging painting.

The other is unfortunate. They cannot be accepted by employers. Because they lack the initiative to work, they cannot really learn anything. They can only perform simple spelling checks, work similar to administrative assistants, and even consume HTML webpages for a lifetime. They will complain, get tired of the job, and finally switch to the postal industry, the marketing industry (maybe worse, be a salesman ). In any case, this is not good for them.

This has to make me think deeply: What should Junior programmers do? How can a programmer get started to be proficient? How Should junior developers avoid these two extremes?

The conclusion is that Junior programmers must learn to ask questions ". If you ask, you will surely get something.

Let's take a look at the example of an acute beginner programmer: if he dares to ask questions, "my boss, I have never been painted. What should I do ?", There will be no problems such as dingtalk guns, tapes, and gypsum saw. As a person, you should know that he is not as experienced as you are.

Veterans cannot understand what new users do. But it is very important to help them realize what is not. This relationship is like the relationship between the Jedi Masters and the Jedi apprentices mentioned earlier. It can also be called the relationship between the masters of the west and the apprentices of the West, or various mentoring relationships in the history of mankind for thousands of years.

What's the most important?

From a certain point of view, we are all junior programmers. Even if you have more than 40 years of experience in C ++ development for various platforms and embedded systems, when it comes to relational databases (nosql, Java and JVM, or C # And CLR, you are a beginner programmer. In other words, you are still a newbie to the Jedi Warrior about power and saving the universe (including a pretty girl you later know about your sister.

Now you know what to do.

It is very useful to find a teacher for you (maybe the more accurate statement should be "mentor" Now) and learn from them or ask questions. Then, in turn, let your colleagues or junior programmers in your friends do the same. They may not necessarily accept your help, but think carefully, at this age, don't you want a master to teach you?

Do you want to complain about Luke Skywalker or become a Jedi Knight Luke Skywalker? After Luke loses his hand, he understands that Yoda is far smarter than him. Instead of asking him more, he should tell him that "you have done something wrong ".

If you don't want the project to go wrong, you can honestly admit that you are not omnipotent. If you want to make your project more colorful, consider my suggestions.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.