What is an ideal programmer?

Source: Internet
Author: User
What is an ideal programmer?

I turned to the programmer's door and ran all the way. Before the age of 26, there was almost no coding experience. after graduation, I accidentally chose a startup company that could not provide training, having left the company one and a half years later, he is already the main backend engineer with 5 million user products. I used to be afraid of computer technology. I thought that tech experts would surely be surrounded by lights, so that tens of thousands of lines of code could run around the clock. Now I have seen some of the world. looking back on the uneasy process like the first night, I don't find any inspirational meaning, but it is taken for granted. The ideal programmers, unlike the ideal architects, the ideal financial divisions, and the ideal massage therapists, are essentially a group of craftsmen. I believe that everyone can be an ideal programmer.

In the past three years, I have been on the internet. I have met some php programmers, worked with some programmers, led some programmers, and interviewed some programmers. They have different education backgrounds, some from Peking University, some from Beijing University, some from Beijing University, some from doctors, some from senior high school practitioners, some from BAT, and some from a bankruptcy fund company (or a sales company ); the validity period also ranges from 0 to 15 years. But I think programmers only need to be divided into three categories: talented programmers, ideal programmers, and mediocre programmers. I can only say that I have been in touch with three talented programmers. It was up to you when you were a sperm. you had a great mathematical talent, a calm and dense logic, and a technical enthusiasm to solve the problem; starting early in 3 minutes, I had to start playing computers when my peers were playing dash. before I graduated from college, I broke through the 10 thousand-hour rule, followed by a game life.

Talented programmers can be left alone, not long. the 90% I see is still mediocre programmers. The expansion of the IT age has made programmers as ordinary as the printers in the Renaissance. most of the people who have invested in the work of the Masters are only for a larger rice bowl and higher treatment, better livelihood. Mediocre programmers write rotten code without standards and consistency, stick to the language of the old world, and talk about the big architecture and performance. Without exception, they believe that there is no way out of technology, and they are doing products, marketing, and management with a higher level of craftsmanship, and 99% of them are, naturally, we will find that we happen to have the talent in that aspect. As for why the process crashes, this small problem is beyond understanding.

I like to get along with the ideal programmers and wish to stay with them. if they are allowed, I hope my team can fill their banners. Ideal programmers are not bad (they have never been the darling of office politics and are a group of pure bright and happy craftsmen) and have innocent curiosity (they often see "Wow, how is this done! 」), Always keep improving (their mantra is "I will study it again"), and they are willing to share (they are active in GitHub, major Q & A communities, and your side, willing to use valuable time to help new users ). Yes, they don't need to be managed. they just need to give a big direction and always return unexpected results.

The ideal programmer is only separated from the mediocre programmer. The gap between the two is only a little bit, and the gap between people is always opened in the past. Interestingly, I found that these six items are related to consciousness, that is, programmers and jobs in all other emerging industries only need to exercise consciousness and time, everyone can reach the ideal stage. The ideal programmer must also be an excellent problem-solver.

1st tips: focus on the moment

I have seen too many coders, and I have to take "focus on the moment" as the first article in the text. They often have a variety of small dreams, such as being a small tea farmer, a small goose vendor, products, sales, and investment, it is "delayed" by programmers with high salaries or without the ability to change careers. because they are not focused, they do not care about their own scores, do not care about tempering their skills, and do not care about learning new technologies. It is undeniable that there are great products, great sales, great investors, and programmers in this world. But have you ever heard of Buffett's comment on Gates? if Bill Gates sells dogs in another row, he must be the world's largest dog vendor. I firmly believe that, except for a few geniuses, all sentient beings can succeed in many fields, as long as they stay focused. Even if you want to sell dogs in the next year, the programmer's experience can still train your strong logic, prudence, and patience. in which industry is your competitive edge.

2nd tips: Thinking and driving force

I think dealing with bugs, crashes, tuning, intrusions, and other emergencies can better reflect the gap between mediocre programmers and ideal programmers than programming itself. When faced with an unknown problem, how to locate the core problems under complex conditions, how to analyze the potential causes of the problems, how to eliminate interference and restore a minimum verifiable scenario, and how to grasp key data to verify your own guesses and experiments, it is the best scenario to reflect the thinking of programmers. Yes, thinking is more important than experience in measuring ideal programmers.

Sometimes, when my friend ran over and asked me "what should I do if I submitted a task and got stuck?", I always thought he could do better. For example, you can check the test tasks to eliminate the cause of the code itself; you can check the exceptions through the Web UI (if there is no account, you can ask me to provide); you can check the host logs or delete the cache, if the problem persists, you should always provide the task ID and console log to me. Ideal programmers will never wait for things to move forward. they will do everything they can to make things move forward.

A little bit: Never Say No

I remember talking to my boss before I left the factory. He said that my biggest advantage is that I never told him that I couldn't do this. Later, I found that in many teams, there was a confrontation between technology and products. programmers often "technically unable to implement" to block product requirements, and products often use "why can't we do Facebook" to drop programmers. These two sentences should be banned, which is not conducive to the mutual love between programmers and product dogs.

It is easy to say "technically impossible to implement". when many people say this, they are 100% sure? If not, why can't I go back to Google and try again? Originally, I thought that programmers are full of imagination. only with imagination can we create so many software and Internet products that change our lives. More insights make it easy to understand that most programmers have become conservative in their confrontation with bugs rather than taking risks. at the same time, many teams are reluctant to tolerate failures. So "Say No" becomes a habitual conflict. do you still remember why Zeng Guofan disbanded the Hunan army? He said that the army was "getting dark" and cannot fight. To be an ideal programmer, you cannot give yourself the opportunity to cool up. if you are faced with unreasonable demands, you can put out the time cost and highlight the curve to save the country, simple and rude "Say No" is not advisable.

4th tips: investing in the future

Programmers are a very cruel profession. The language, framework, and pattern you have learned may become yesterday in a few years. another group of programmers you laugh at now may immediately turn around and laugh at you. Therefore, the ideal programmer should spend time investing in the future in addition to doing his own duty well. What is "investment 」? Investment is the time you invest now. in the future, you will spend more time or money (look at the current salary of iOS programmers who have been studying iOS for several years !) Return to you. Taking my own field-data mining as an example, Hadoop began to emerge in around years. The concept of "big data" was so popular that Hadoop engineers were hard to find, internet companies have switched data statistics, data analysis, and data mining services to the distributed platform. In the past few years, Hadoop is still being iterated, and Spark has sprung up, refreshing the sorting records maintained by Hadoop in one fell swoop, the performance advantages brought by the storage of intermediate data in the memory and the rich data structure make people love it constantly. various strange bugs and steep learning curves make people go back and forth. As we all know, Spark is the trend of the future (the memory will be cheaper and cheaper). when the main business is put on Hadoop, we can switch some small modules to Spark as appropriate, pay attention to the development of the Spark community. Soon, the performance gains from Spark will be able to earn back the previous learning time.

5th tips: Make good use of tools

The utility can be divided into four layers:

1 search engine

2. do not believe in repetition

3. code snippet

4 automation

When I first entered the course, a computer professional who became a civil servant asked me, you didn't learn programming at all, how do you write code? I said that Google was so heartless that I had to call my account 2 shou and told myself to be a shameless second-hand programmer. This is a joke, but if you ask me now, I still want to answer Google. The growth of programmers is like the expansion of the circle cake. the outside is an endless sea. the larger the circle cake, the more contact it has with the sea. the more it understands, the more it doesn't understand, computer science is a subject with an extremely rapid upgrading, and it is also the best subject for knowledge internetworking. it is difficult to use traditional scientific classes to teach and learn methods, on the contrary, the search engine can easily obtain the latest knowledge.

I don't believe in repetition. the master's words are called the DRY principle (Dont repeat yourself). when the code is too much written, there will be human intuition to judge good and bad code. my standards are concise and standardized, conciseness is not an aesthetic standard. the less repetition, the less chance you will have to make mistakes, and the less cost you will have to maintain later.

If you unfortunately lost the code three weeks ago, you may be able to reproduce the residual fragments in your mind with extraordinary memory, but if you lost the code three months ago, i'm afraid I'm not so lucky. The ideal programmer will focus on finding effective data storage methods and saving short fragments of code, scripts, configurations, and experiences written in the flash of work so that they can be reviewed at any time.

The ideal programmer must be lazy. For them, repeated steps are as ugly as repeated code. if you realize that a job may be repeated for a long time, the sooner the automation is, the better.

6th tips: management time

The reason for managing time is especially important to programmers, because you must "walk alone" like a wolf in the wilderness when completing tasks 」. Without external constraints, you can control yourself stably and ensure that you can work and study efficiently. you will surely become more powerful than the average person over time.

Programmers are engaged in high-intensity mental work. generally, it is enough to concentrate 4-5 hours on their jobs every day, but they must schedule time for study outside of work. In addition to learning, it is also necessary to leave some time to empty yourself. Using the gap between tea and coffee, you can leave precious time for yourself to think about it and get twice the result with half the effort.

After talking so much, someone may ask, what is the use of hard work to become an ideal programmer? Will there be high salaries? No. Can I get promoted? Not necessarily. What about Bai Fumei? It is better to sell dogs.

Kazuo once told a story. during the Meiji period, the craftsman was summoned by the emperor. although they were all villagers who did not read books, they naturally had a noble temperament to do one thing diligently all their life. The ideal programmer should follow this noble temperament.

Get free LAMP Brothers original PHP video tutorial CD/the elaborate PHP Essentials edition, details consulting official website Customer Service: http://www.lampbrother.net

PHPCMS secondary development http://yun.itxdl.cn/online/phpcms/index.php? U = 5

Develop http://yun.itxdl.cn/online/weixin/index.php? U = 5

Mobile internet server development http://yun.itxdl.cn/online/server/index.php? U = 5

Javascript http://yun.itxdl.cn/online/js/index.php course? U = 5

CTO training camp http://yun.itxdl.cn/online/cto/index.php? U = 5


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.