From the source: the idea of Yiu Dong
learning ability, especially self-study ability , when you see those well-known program experts in the Forum asked "study XX what to read, how to learn xxx quickly, learn what XXX code recommended" And so on, they want to learn what quickly can find relevant information. The industry is developing too fast and technology is being phased out quickly, and 3 years of not learning new things may be outdated.
hands -on ability, are reading to read information, when others are still struggling to read what the book, still in the tangled book of what the meaning of the words, some people's hundreds of thousands of lines of code have been able to run.
patience and Perseverance , it is important to do programmer interest, write your favorite code that is quite enjoyable thing, but the program development in any case there are a lot of boring things, to be able to persist, teeth to finish these.
The ability to express , can in public, the logic of their own ideas clear and smooth to speak out, let people understand.
What about technology? Technology is not important, with the above several capabilities, the market needs what technology, will soon be able to master.
The last thing to say about wages, remember two words:
- Salary is not the boss's reward for your past contribution, but the expectation of your future contribution.
- The incumbent boss can not give you a satisfactory salary, the next boss will.
Junyan's Point of view
Yiu Dong answer very well, I incompatible to say a few words.
We all know that learning ability is very important, then learning ability from where, in addition to reading class this, how to learn to grow in practice work?
I have previously said a general concept of Weibo, what is ability? Attitude towards the problem, and the thinking and method of dealing with the problem.
First, attitude.
Your server occasionally out of 501 errors, perhaps not a high proportion (know also appeared many times), many programmers, yes, many, pretend to see, do not care, or blame character problem. This is the question of attitude.
In the future, high load or other reasons, suddenly frequent 501 errors, not to pursue deep reasons, but to find various excuses, what IDC service provider is not good, the server brand is not good, the operating system is bad, the database is not good, the network is not good, the Web server is bad, even, directly to Boss said we were DDOS! (encountered, help his Boss to find a number of security experts consultation, finally found that it is not DDOS, is the programmer sucks. )
This is the attitude, shocking, if you can be sensitive to the problem, you can know that any small, slight problems have enough sensitivity, you have a rapid growth of the foundation. The sensitivity to the problem is very important. Many performance or program logic non-fatal bugs, when not sensitive enough to be found, but once into the special scene will suddenly explode, you a little more sensitivity, will reduce the risk of this crisis.
The second attitude is to solve the problem of attitude, some people have confidence in their own solutions, think foolproof, but some will stay a long way back; Just like you said I server to do security reinforcement, must do right, to be as rigorous and thoughtful as possible, but your database to save the password is not also encrypted? And to a random salt, is not to prevent in case there is still a loophole in the library what to do. The program is the same, some previously written server daemon, there are bugs, will be inexplicably terminated, this bug of course to locate, to repair, but at the same time, write a cron check this daemon state, once encountered the termination to give automatic recovery, this is the second hand preparation, even if you do not want him to execute, This preparation is still to be done. To do both hands and even three hands to prepare, is also a good programmer, the key quality of architects.
The third attitude is based on the attitude of communication and understanding, product or operation to raise an unreliable demand, a sentence to play back of course very cool and awe, but there is no careful communication analysis, the demand based on how the actual demands, the actual claim there is no more reasonable way to achieve, a word "This can not be done, this realization costs too high" , is not the correct communication attitude, moreover, the best product, often is to achieve those who originally thought that cannot realize the request.
This attitude, there is a continuous improvement of the basis, the following ideas and methods.
Good programmers and mediocre programmers, if only to see the speed of the beat code, I think it is not out, maybe everyone can write a lot of lines a day, but after encountering problems, mediocre programmer's resolution efficiency, compared to good programmers will be a difference. The so-called solution efficiency, is not only the analysis of the bug, positioning, and thinking.
The most basic one, look at the execution of logs, look at various logs, Web server logs, database logs, slow query log, binlog log, PHP error log, and so on, and so on, the problem of the line to guess the days are not looking at many. Look at the log is not carefully incomplete is also a lot of people, you can go to serious research log has surpassed many.
Second, the module test and breakpoint analysis, the programmer a bad habit is to write a very big piece of code and then execute, do not know a module to write a module to test, the implementation of the problem does not know set breakpoints, narrow the scope of stepwise analysis. Breakpoint analysis is very simple, the entire code to plug in a few intermediate output, to see which part of the problem, or to observe the system overhead of each link, error-Free and performance optimization is very important, the experts probably think this is ABC thing, but this thing I see most of the programmers do not have this habit.
Third, the error message understanding and search, the search engine has a variety of technical information and technical questions, you encounter error messages and error hints, usually can be found on the Internet, of course, after the search to combine your scene seriously thinking, and understand thoroughly, rather than tiger to deal with, Otherwise it may be good luck on the right, next time bad luck and do not know how to go.
Fourth, continue to summarize, to a problem, a class of problems, and different types of problems, good at summing up, constantly reflect on their own problems, even if the code is not out of the bug, you go through a period of time to look back, there are a lot of thinking is not correct unreasonable place, there are many optimization points, if you think your code has always , there is no flaw, you must be in situ, no progress.
About the summary, I say a case
Before we have a system, the request is very large, the load is very high, there is a good technical manager to deal with, he listed a few upgrade plans, are very reliable, to carry out, the effect is very good, and then we follow up the report when he says, did a few upgrades, the overall effect, and I criticized him.
What did I criticize? He's doing it together. The effect of the upgrade, then the observation together, then in these scenarios, the actual effect of each scenario, how much help for ascension, he does not have any data. Therefore, he has no concept of the value and importance of the specific upgrade plan. You solve the problem correctly, but not seriously to summarize, your harvest is limited. Upgrading together can not be said to be wrong, but the effectiveness of evaluation needs to do alone, and this data is very valuable, knowledge accumulation, not you have to deal with there must be accumulation, but collated.
That's about it.
And then I repeat it again.
What is ability?
- A problem-faced attitude
- The thinking and method of dealing with the problem
That's the power.
What is the core competency of the programmer? Zz