Source: Http://www.techug.com/excellent-programmer
I counted on swindling into the programmer's door and bolted all the way. Before the age of 26, almost no code-writing experience, graduate but unexpectedly chose an impossible to provide training in the start-up company, in the daily worry about the company's failure, fear of being fired and colleagues snub-eyed triple pressure against the upstream, 1.5 after leaving, is a 5 million user product background. I used to be afraid of computer technology, I believe that the technical man must have a Buddha-shrouded, day and night endless movement key fly daily spit code tens of thousands of lines. Now I've seen some of the same things, looking back on the process of being like the night before, I don't find any inspirational meaning, but take it for granted. The ideal programmer, and the ideal architect, the ideal treasurer, the ideal masseur no difference, they are essentially a group of craftsmen. I believe that all the ideal programmers can be.
Almost three years in the Internet circle, I have known some programmers, worked with some programmers, led some programmers, and interviewed some programmers. Their academic qualifications are different, some from Peking University, some from the Peking University, some of the doctor, some of the high school, the qualifications are different, some from BAT, some from a bankruptcy fund company (or a sales), the age also varies from 0-15 years. But I think programmers only have three categories: genius programmers, ideal programmers, mediocre programmers. Genius programmer I only dare to say that has touched 3, this is the destiny. 7 points by the time you are a sperm has been decided, with excellent mathematical talent, cool dense logic, to solve the problem would rather not sleep endlessly and deep thought of the technical enthusiasm; 3 points from the start to early, eager to play with the mud of the same age when you have to start playing computer, before graduating from college 10,000 hours rule, The back is the game life.
Genius programmers can not be met, but not long, I see the 90% is still mediocre programmers. The expansion of the IT era has made programmers as common as the Renaissance-like printers, most of whom are Huang under the door, just for bigger jobs, higher treatment and better livelihoods. Mediocre programmers write rotten code, no specs and consistency, cling to the old world's language, and fortunately talk about big architecture and performance, saying better than doing it beautifully. Without exception, they believe that technology has no way out, to do products, marketing and management is a more tall craft, and 99% of them, will naturally reveal themselves happen to have that aspect of talent, as to why the process will collapse such a small problem is disdain to understand.
And I like the ideal programmer to get along with, I want to eat with them live, if allowed, I hope my team can fill their banner. The ideal programmer heart lies right not bad (they are never the darling of office politics, a group of simple bright and happy craftsmen), have childlike curiosity (their eyes often flashing "Wow, how this is done!") "), always keep improving (their mantra is" I'll study it Again ") and enjoy sharing (they are active in GitHub, the quiz community and your side, willing to spend valuable time to help the novice). Yes, they don't need to be managed, they just need to give a big direction and always return with unexpected results.
The ideal programmer is only separated with mediocre programmers. The gap between the two is only 6 a little bit, and the gap between people, it is in this accumulated a little bit, was forever opened. Interestingly, I found that the 6 is a little bit related to consciousness, that is, the programmer and all other industries in the new industry, just need to mind and time to temper, everyone can reach the ideal stage. The ideal programmer must also be a good problem-solver.
A little 1th: focus on the moment
Having seen too many change their minds programmers, I had to put "focus on the moment" as the first word of the day. They often have a variety of small dreams, such as a small tea growers, to do a small goose dealer, do products, sales, investment, but by the programmer's high salary or no career change of the courage "delay", and because not focus, they do not care to do their part, not the intention to temper their skills, not to learn emerging technology. There is no denying that there are great products in the world (like Master Joe), great sales (like Ellison), great investors (like Petterfy), and they are all programmers, without exception. But have you ever heard of Buffett's comments on gates, if Bill Gates went to sell dogs, he must be the world's biggest dog dealer. I firmly believe that in addition to a few geniuses, all sentient beings can succeed in many fields, as long as they remain focused enough. And even if you want to sell a dog for the next year, the programmer's experience can still train you with strong logic, prudence and patience, in which industry is quite competitive.
A little 2nd: thinking and driving force
I think dealing with bugs, crashes, tuning, intrusion and other emergencies than the programming itself can reflect the gap between mediocre programmers and the ideal programmer. When faced with an unknown problem, how to locate the core problem under complex conditions, how to analyze the potential causes of the problem, how to eliminate the disturbance to restore a minimum verifiable scene, how to grasp the key data to verify their own guesses and experiments, are the best scenes that embody the thinking power of the programmer. Cobwebs Yes, thinking is more important than experience in measuring the standards of ideal programmers.
Sometimes the little buddy came running over and asked me if I had "submitted a task to get stuck," and I always felt that he could do better. For example, you can check the test for other tasks to exclude the code itself, you can check the exception through the Web UI (if you don't have an account, let me provide it), you can troubleshoot the host log or delete the cache, and then you should always provide the task ID and console logs to me. The ideal programmer will never wait for things to go forward, and they will use every means to get things going.
3rd a little bit: never Say No
Remember before the factory quit, talk to the boss, he said that my greatest advantage is never to tell him that this can not be done. Later, I found that in many teams, there is a technology and product antagonism, programmers often "technically impossible to achieve" to block the demand for products, and products are often "facebook can be why we do not" to ridicule programmers. " These two words should belong to the forbidden language, fundamentally not conducive to the process of ape and product dog love each other.
A "technically impossible to achieve" is easy to export, but how many people say this sentence, the heart is 100% sure? If not sure, why not go back to Google and then answer? Originally I thought programmers are imaginative, because of the imagination, can be born so many changes in our lives of software and Internet products. It's a lot of insight to understand that most programmers have become conservative in their confrontation with bugs and are reluctant to take risks, while many teams are reluctant to tolerate failure. So "say no" become a habitual conflict, remember Zeng Guofan why dissolved Xiang Army? He said that the army had "apathy" and could not fight. To do the ideal programmer, you can not give yourself the opportunity to breed apathy, if the face of unreasonable demand, you can put the time cost out, the curve to the National Salvation Scheme, simple rough "say no" is not advisable.
A little 4th: investing in the future
Programmers are a very cruel profession. The language, the frame, the pattern you are learning are likely to be yesterday's yellow in a few years; Another group of programmers you are mocking now may be able to turn around and laugh at you right away. So the ideal programmer will take the time to invest in the future in addition to doing his part. What is "investment"? Investing is the time you invest in the future with more time or money (look at the current salary of programmers learning IOS in the early years!) ) Repay you. Take my own field-data mining for example, 08 years or so Hadoop began to rise, a moment of "big data" concept fiery, Hadoop engineers Laon difficult to seek, the Internet companies have to data statistics, data analysis and data mining business switch to the distributed platform. In the last few years, Hadoop is still iterative, Spark has sprung up, one at a glance to refresh the record of Hadoop maintained, in memory storage intermediate data brought about by the performance advantages and rich data structure to let people love, a variety of strange small bugs and steep learning curve and let people back. Well, discerning eye know that spark is a future trend (memory is getting cheaper), and with the main business in Hadoop, you can switch some small modules to spark, while keeping an eye on the spark Community's development. The performance gains from Spark will soon earn back the learning time that was invested.
A little bit 5th: Use tools
The use of tools can be divided into 4 levels:
- Search engine
- Don't believe in repetition
- Code Snippets
- Automation
I just entered the meeting, a computer professional but when the civil servant's friend asked me, you have not learned the programming, usually how to write code? I said, Google, so the ruthless ridicule, so that I was in the account is called 2shou, warned that they are a shameless second-hand programmer. This is a joke, but if you ask me now, I still have to answer Google. Programmer's growth is like the expansion of the round cake, the outside is boundless sea, the bigger the pie, and the sea contact with the larger, understand the more, do not understand the more, and computer science is an unusual rapid upgrading of the subject, but also the best knowledge of the Internet, it is difficult to use the traditional teaching methods have learned, By contrast, the search engine makes it easy to get the latest knowledge.
Do not believe in repetition, the master's words called DRY principle (Dont repeat yourself), code written more, there will be human intuition to judge good and bad code, my standard is concise and normative, concise is not the standard of beauty, the less repetition, give themselves the chance of error, the lower the cost of maintenance later.
If you're unlucky enough to lose a three-week-old code, you might be able to reproduce the remnants of your brain with an extraordinary memory, but if you lose a three-month-old code, I'm afraid it's not that good luck. The ideal programmer will focus on finding effective ways to save data, and save the short fragments of code, scripts, configurations, and experiences that flash through the work so that they can be reviewed at any time.
The ideal programmer must be lazy. For them, repeated steps are as ugly as repetitive code, and if you realize that a job is likely to repeat for a long time, the sooner the automation is the better.
A little 6th: Managing Time
Managing time is especially important to the programmer because you have to be like a wolf in the wilderness when you're done with the task. Without outside constraints can also be stable control themselves, to ensure the efficient work and study, then the cumulative you will become more than the average person.
Programmers do a high-intensity brain work, generally 4-5 hours a day to concentrate on the job is enough, but outside the work, we must arrange time for learning. In addition to learning, to save some time to empty themselves is also necessary, the use of tea or coffee, the gap between the precious time to leave their own, forward to think back, with less.
Having said so much, one must ask, what is the use of being an ideal programmer? Will there be a high salary? No. Can you get a promotion? And not necessarily. What about marrying mating? It's better to sell a dog.
Rice JAL once said a story, Meiji period craftsmen were summoned by the emperor, although are not reading the country, but a lifetime of conscientious to do one thing, naturally have a noble temperament. The ideal programmer, should be to follow this noble temperament and go to it.
90% is still a mediocre programmer!