What does an ideal programmer look like?

WBOY
Release: 2016-07-25 08:55:45
Original
807 people have browsed it
I sort of tricked my way into being a programmer, and then I ran all the way. I had almost no coding experience before I was 26 years old. After graduating from graduate school, I accidentally chose a start-up company that could not provide training. I struggled against the current triple pressure of worrying about the company's bankruptcy, being afraid of being fired, and being ignored by my colleagues every day for a year. He resigned after half a year and has become the main backend manager of a product with 5 million users. I used to be afraid of computer technology, believing that a skilled person must be shrouded in the light of the Buddha, working day and night like a flying sun spitting out tens of thousands of lines of code. Now that I have seen a bit of the world, looking back at that period of uneasiness and uneasiness as if it were my first night, I don’t find any inspirational meaning, but take it as a matter of course. There is no difference between an ideal programmer and an ideal architect, an ideal accountant, or an ideal masseur. They are essentially a group of craftsmen. I believe that anyone can become an ideal programmer.
In the past three years, I have been hanging out in the Internet circle. I have met some PHP programmers, worked with some programmers, led some programmers, and interviewed some programmers. They have different educational backgrounds, some are from Peking University, some are from Peking University Jade Bird, some have PhDs, and some are high school dropouts; their qualifications are also different, some are from BAT, some are from a bankrupt fund company (still a salesperson); their years of experience also range from 0 to 15 Years vary. But I think programmers only need to be divided into three categories: genius programmers, ideal programmers, and mediocre programmers. I can only say that I have come across three talented programmers. This is destiny. 7 points are determined when you are a sperm. You have excellent mathematical talent, calm and dense logic, and technical enthusiasm that is willing to work around the clock to solve problems and take great pleasure in solving problems. 3 points come from starting early and wishing you could not wait for your peers. When you are playing in the mud, you have to start playing on the computer. Break the 10,000-hour rule before graduating from college. What follows is a gaming life.
Genius programmers are hard to come by, let alone rare. 90% of the programmers I see are still mediocre programmers. The expansion of the IT era has made programmers as ordinary as printers in the Renaissance. Most of the people who join the apprenticeship of the ancestor are just for a bigger job, higher salary, and better livelihood. Mediocre programmers write rotten code, have no standards and consistency, stick to old world languages, and talk about big architecture and performance better than they do. Without exception, they believe that technology has no future, and that products, marketing, and management are higher-level skills, and 99% of them will naturally reveal that they happen to have that talent. As for the process, Small questions like why it crashes are something I don't bother to understand.
And I like to get along with ideal programmers the most. I can’t wait to eat and live with them. If allowed, I hope my team can be filled with their flags. The ideal programmer has a good heart (they have never been the darlings of office politics, they are a group of simple, bright and happy craftsmen), and have innocent curiosity (their eyes often flash "Wow, how can this be done" "), always strive for excellence (their mantra is "I'll study it some more"), and are willing to share (they are active on GitHub, major Q&A communities, and around you, and are willing to spend their precious time helping novices). Yes, they don’t need to be managed, they just need to be given a general direction, and they can always return unexpected results.
There is only a wall between ideal programmers and mediocre programmers. The gap between the two is only 6 little points, and it is in these little points accumulated over time that the gap between people is forever widened. Interestingly, I found that these six points are all related to consciousness. That is to say, programmers are the same as all other types of work in emerging industries. With only awareness and time, everyone can reach the ideal stage. The ideal programmer must also be an excellent problem-solver.
The first point: focus on the present
I have seen too many programmers who are distracted, and I have to put "focus on the present" as the first rule. They often have various small dreams, such as being a small tea farmer, a goose seller, making products, selling, or investing, but they are "delayed" by the high salary of programmers or the lack of courage to change careers. Because they are not focused, they do not care about doing their part, honing their skills, or learning emerging technologies. It is undeniable that there are great products (like Mr. Joe), great salesmen (like Ellison), and great investors (like Peterffy) in this world, and without exception they are all programmers. But have you ever heard what Buffett said about Gates? If Bill Gates switches his career to selling dogs, he must be the largest dog dealer in the world. I firmly believe that with the exception of a few geniuses, all living beings can achieve success in multiple fields as long as they stay focused enough. And even if you want to sell your dog next year, your experience as a programmer can still train you with strong logic, prudence and patience, which will give you considerable competitiveness in any industry.
The second little bit: thinking and driving force
I think dealing with emergencies such as bugs, crashes, tuning, and intrusions 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 problem under complex conditions, how to analyze the potential causes of the problem in detail, how to eliminate interference and restore a minimally verifiable scenario, how to seize key data to verify your guesses and experiments, They are the best scenarios that reflect the thinking power of programmers. Yes, thinking skills are more important than experience in measuring the ideal programmer.
Sometimes when a friend comes over and asks me "I submitted a task and got stuck, what should I do?", I always feel that he can do better. For example, you can check and test other tasks to eliminate the causes of the code itself; you can check exceptions through the Web UI (if you don’t have an account, you can ask me to provide it); you can check the host log or delete the cache. If that doesn’t work, you should always provide the task ID and console log to me. The ideal programmer never waits for things to move forward, they do whatever it takes to make things move forward.
The third little bit: Never Say No
I remember talking to my boss before I left my job at the previous factory. He said that my biggest advantage was that I never told him that I couldn’t do it. Later, I discovered that in many teams, there is an opposition between technology and products. Programmers often block product needs by saying "technically impossible", and products often ridicule them by saying "Facebook can do it, why can't we?" programmer. These two sentences should be forbidden words, which are fundamentally unfavorable to the love between programmers and product dogs.
It is easy to say "technically impossible", but how many people are 100% sure when they say this sentence? If you're not sure, why can't you go back and Google it before answering? Originally, I thought programmers were full of imagination. Because of their imagination, so many software and Internet products that changed our lives were born. After seeing more, I realized that most programmers have become conservative in fighting bugs and are unwilling to take risks. At the same time, many teams are unwilling to tolerate failure. So "Say No" became a habitual resistance. Do you still remember why Zeng Guofan disbanded the Hunan Army? He said that the army was "growing tired" and could no longer fight. If you want to be an ideal programmer, you should not give yourself the opportunity to become frustrated. If you face unreasonable demands, you can lay out the time cost and the plan to save the country. A simple and crude "Say No" is not advisable.
The fourth point: Invest in the future
Programmers are a very cruel profession. The languages, frameworks, and patterns you have learned and used are likely to become yesterday's flowers in a few years; another group of programmers you laugh at now may turn around and laugh at you soon. Therefore, in addition to doing their job well, ideal programmers also spend time investing in the future. What is "investment"? Investment is the time you invest now, which will return you more time or money in the future (look at the current salary of programmers who learned iOS a few years ago!). Let’s take my own field, data mining, as an example. Hadoop began to rise around 2008. The concept of “big data” was hot at the time, and Hadoop engineers were hard to find. Internet companies have switched between data statistics, data analysis and data mining. onto a distributed platform. In the past few years, Hadoop has continued to iterate, and Spark has suddenly emerged, refreshing the sorting record kept by Hadoop in one fell swoop. The performance advantages and rich data structures brought by storing intermediate data in memory make people fall in love non-stop. Various strange little Bugs and a steep learning curve are discouraging. Well, everyone with a discerning eye knows that Spark is the future trend (memory will become cheaper and cheaper). If the main business is placed on Hadoop, you can appropriately switch some small modules to Spark and pay attention to the development of the Spark community. The performance gains gained from Spark will soon make back the time invested in learning.
The fifth point: Make good use of tools
Using tools well can be divided into 4 levels:
1 Search engine
2 Don’t believe in duplication
3 Code snippets
4 Automation
When I first entered the industry , a friend who majored in computer science but became a civil servant asked me, you have never learned programming at all, how do you usually write code? I said, Google, and was ridiculed mercilessly, so much so that my account everywhere was called 2shou, warning myself that I was a shameless second-hand programmer. It's a joke, but if you ask me now, I'd still answer Google. The growth of programmers is like an inflated round cake, with the boundless sea outside. The bigger the round cake, the larger the contact area with the sea. The more you understand, the more you don’t understand, and computer science is another subject. It is a subject that is updating extremely quickly and is also the subject that is the best in the Internet of knowledge. It is difficult to use the traditional class-style teaching and learning method. On the contrary, it is easy to obtain the latest knowledge through search engines.
I don’t believe in repetition. The master calls it the DRY principle (Don’t repeat yourself). If you write too much code, you will have human intuition to judge good and bad code. My standard is simplicity and standardization. Simplicity is not a standard for beauty. The less duplication, the less opportunity you give yourself to make mistakes, and the lower the cost of later maintenance.
If you are unfortunate enough to lose the code from three weeks ago, you may be able to use your extraordinary memory to copy the remaining fragments in your mind, but if you lose the code from three months ago, you may not be so lucky. . The ideal programmer will strive to find effective ways to save data, and save short fragments of code, scripts, configurations, experiences, etc. that are written down by inspiration at work, so that they can be reviewed at any time.
The ideal programmer must be lazy. To them, repeated steps are as ugly as repeated code. If you realize that a job is likely to be repeated for a long time, then the sooner the better, the better.
The sixth point: manage time
The reason why managing time is particularly important for programmers is that when completing tasks, you must "walk alone" like a wolf in the wilderness. If you can control yourself stably without external constraints and ensure that you can work and study efficiently, then over time you will definitely become better than ordinary people.
Programmers do high-intensity mental work. Generally, it is enough to focus on their own work for 4-5 hours a day, but outside of work, they must allocate time for learning. In addition to studying, it is also necessary to leave some time for yourself. Use the gap between making tea or drinking coffee to leave precious time for yourself, think forward and backward, and get twice the result with half the effort.
Having said so much, some people may ask, what is the use of working hard to become an ideal programmer? Will there be a high salary? No. Can I get promoted? Not necessarily. What about marrying Bai Fumei? Might as well sell the dog.
Kazuo Inamori once told a story that craftsmen in the Meiji period were summoned by the emperor. Although they were all countrymen who did not study, they naturally had a noble temperament when they worked hard for one thing all their lives. The ideal programmer should follow this noble temperament.
Receive LAMP Brothers’ original PHP video tutorial CD/"Essential PHP in Detail" for free. For details, please contact the official website customer service: http://www.lampbrother.net
PHPCMS secondary development http://yun.itxdl.cn /online/phpcms/index.php?u=5
WeChat development http://yun.itxdl.cn/online/weixin/index.php?u=5
Mobile Internet server-side development http://yun. itxdl.cn/online/server/index.php?u=5
Javascript Course http://yun.itxdl.cn/online/js/index.php?u=5
CTO Training Camp http://yun .itxdl.cn/online/cto/index.php?u=5



source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!