This is the first article in the IT career series. (Preface, column directory)
(Part 1)
Get help
Modestly, boldly, and modestly try again
These words seem not a good match, but I recall the programming experience for more than 10 years. This sentence may be the key to the final difference between a master and a low-handed person, therefore, we should focus on the entire article.
Cainiao is not a low-handed guy who has been working for a long time but is far behind in technical ability. How can I avoid being a novice? That is, trying modestly, boldly, and modestly.
Not all problems can be solved by Baidu, and some people around me may not be able to give some advice. How can I know whether there is a solution or a solution in case of difficulties?
1. Humble understanding of your difficulties
This is the first modest.
02 when I met a program in, the programmer had a good level, but he did not understand the "template" in C ++ (that is, the generic type in Java and C ), therefore, when processing 13 different types of data, we had to write 13 functions, which were still running under 5 parameters. The result was 13 × 5 = 65 functions. But it was finally discovered that it was reduced to a function in one afternoon, and the workload for one month was thrown away.
"As a programmer who has never seen or heard of templates, how can I foresee a technology to solve these problems ?" He may find him unfair, right?
This explains the purpose of "Modesty": When we think this code is awkward (for example, 65 functions are similar, programming is difficult, and maintenance is more difficult), we need to try to deal with it, if he has this mentality, at least five situations can be solved in a loop. What about generics?
If we use all the tricks and leave 13 new problems of different types, We can't solve them with what we have learned. In my heart, I want to think like this:"I am still a cainiao. I am not standing on the edge of the world. I have encountered problems. Some people have already met them and they have already solved them."With this mentality, you will find the answer. It doesn't matter if you are looking for someone or the Internet. As a matter of fact, his project manager is sitting next to him. This project manager is a design model expert, so don't mention generics.
Most people cannot find the answer because they think they are facing world difficulties and this problem cannot be solved.
When we developed it a year ago, we faced a lot of difficulties. Specifically, we were "standing on the edge of the world", because we haven't gotten in yet. The following are some questions we have, big and small, and finally there are some "difficulties ". Developers with many years of experience may disagree with these issues, but they may be confused about the true black line of C #/web /... for beginners who have not written any code, it is difficult to answer these questions:
A. We guess that after an Ajax call is completed, more than two JS functions can be called as the onsuccess parameter.
B. We guess that the menu part of a page can be loaded after 1 second delay, so that the whole page can be displayed faster.
C. We guess we can certainly intercept the "write" operation of the database to synchronously update our application cache when the write operation occurs, instead of completely destroying and recreating the entire cache.
D. We guess that the HTML backgound-image should be able to set the offset so that the basemap can appear in the appropriate position.
E. We guess that we can write a class to encapsulate the repository in MVC (which is not encapsulated in nerddinner) to complete simple addition, deletion, modification, and query of any tables.
F. We guess that we can save different classes in a table (not mentioned in nerddinner). Different types are automatically generated when we take them out.
G. We guess that a JS script can be generated using HTML helper, not limited to common things such as DIV/IMG.
H. we guess that a class can be generated above a function of another class (that is, the class contains classes, which are not allowed in C ++ ), because we need to define them together for comparison.
...... (I don't know how many guesses I made in the past year)
Some of these questions have ready-made answers. For example, F uses the discrimitor field, and C has a Changeset. If the problem is located, it is Google's answer.
But not all problems are solved in this way, because some problems are not well described and the answers are also found. We also use the following methods.
2. boldly try
We set a class as tip <p>. When its parent (class = "withtips") is hovering over, it will pop up, there is a small icon in the upper left corner (the tip is a 16 × 16 question mark, and there are other types), so as to be different from warning/notice.
However, because the question mark image uses backgound-image: URL (...) (so you don't need to mention this image in your code, you just need to add class = "tip"). When we write
background-image: url('../Resouces/Images/Others/Tip16.png');Background-position: Top left;
It is always tightly attached to the upper left corner of P, without leaving blank, it looks ugly. I checked a lot of information and did not mention what to do.
Of course, there is a very simple way to make it difficult to hide: You don't need to use backround. You can manually add an image in each tip so that you can use style to control its margin. This is a stupid method. It is difficult to improve the level of thinking.
What should I do? That is to imagine:"I am the designer of this language. If I have full permission to design it, I will write it like this ......"
The result is:
background-image: url('../Resouces/Images/Others/Tip16.png'); background-position:top 8px left 5px;
Unexpectedly, it became.
D, g, and H are all solved in this way.
To be exact, this is not an example of how many problems have been solved during the year. If it is surrounded by seven or eight new technologies, it is impossible to break through Google Baidu.
It will be seen later, bold = modest, seemingly strange expression.
3. modestly try
Some people just learned a new language, because they don't understand it, and they are very modest, so the list is small, so they don't dare to try. In fact, there is a problem here.
They thought, "I want to design this way, because it is the best design. Do the experts who actually design these languages think so? Have they done this ?"
Doubt the capabilities of masters? I doubt your ideas? In fact, this actually hides an unmodest idea.
So,The bolder the attempt, the more humble we think that our predecessors have been thinking about and solving these problems for a long time. We just try to see if the specific statement is correct..
"What if the attempt fails ?"
Failed attempts are often caused by the gap between our imagination and masters. Be sure to make the most daring and optimization attempts. Instead, it will be the design of those masters in the past.
As a cainiao, you must boldly imagine: "Masters won't design a language, so I can only copy the code 65 times repeatedly, or this redundant image code must be added to every tip writing, or ......", Be humble and think that masters have long been able to realize our dream, and there is no problem in the world.
Why have many people compiled code for many years and some useful things never been used (for example, the previous 65 functions )? The reason is that the imagination is far from the masters, And the ability is far worse.
This is also the reason why coding needs to be improved (refer to the five articles in February 5 and February 20). If you like to write spam code at ordinary times, it is difficult to guess the design of the master, because he does not design spam.
I have an inequality written like this:
Our technical capabilities <our imagination <the imagination of Masters has been achieved <the imagination of masters
Why must we say that masters have achieved more than our imagination? When you pick up a language, you will find that there are many "useless" or "never used" things in it. These things are the difference between the two.
Therefore, the first thing that hinders us is our imagination, not the limitation of a language or technology. Even our imagination is limited, it is impossible to learn this language well.
To sum up this article: boldly and modestly resonate with the master
01 I worked in a very enterprising team for nearly two years (their products later occupied 60% of the domestic market), where we had many technical dreams, some of our manual implementations are half done, and some are limited to the technical conditions of the current year, such:
1. OODB, A ing between a database and a C ++ object, is the current EF and LINQ
2. Restrict the input type of the C ++ template, that is, the where keyword in the C # Generic
3. MVC separation. At that time, it was just a concept. Although we tried to do a lot of work manually, it is now directly framed.
...... And so on.
As there is a dream, the edge of imagination will expand. When we see new content such as LINQ, generics, and MVC, we will not feel strange and hard to understand, but will immediately resonate.
Therefore, when the imagination is getting bigger and bigger, it is easier to learn a language, because it mostly achieves what we want to do.
If you think about the problem for a long time, your imagination will be close to the result that the masters can achieve. As a result, the system will reach a resonance. The method of achieving a connection is similar to what you think, learning a new technology is not too difficult.