A programmer's epiphany: The ideal programmer is only 6 more than you

A programmer's epiphany: The ideal programmer is only 6 more than you

I got into the programmer's door by cheating and then ran all the way. I had almost no experience in writing code before I was 26 years old. After graduating from graduate school, I unexpectedly chose a startup company that could not provide training. Under the triple pressure of worrying about the company's bankruptcy, being fired, and being ignored by colleagues, I went against the current. After a year and a half, I left the company and became the backend main programmer of a product with 5 million users. I used to be afraid of computer technology. I believed that technical experts must be surrounded by Buddha's light, typing day and night and spitting out tens of thousands of lines of code. Now I have seen some of the world. Looking back on that uneasy process like the first night, I don't find any inspirational meaning, but take it for granted. The ideal programmer is no different from the ideal architect, the ideal financial accountant, and the ideal masseur. They are essentially a group of craftsmen. I believe that everyone can become an ideal programmer.

[[154943]]

I have been hanging around in the Internet circle for the past three years. I have met some programmers, worked with some programmers, led some programmers, and interviewed some programmers. They have different academic qualifications, some are from Peking University, some are from training institutions, some are PhDs, and some are high school dropouts; their qualifications are also different, some are from BAT, and some are from a bankrupt fund company (still a salesperson); the years of experience range from 0 to 15 years. But I think programmers only need to be divided into three categories: genius programmers, ideal programmers, and mediocre programmers. I dare only say that I have come into contact with 3 genius programmers, this is destiny. 7 points are determined when you are a sperm, with excellent mathematical talent, calm and dense logic, and technical enthusiasm that is willing to work tirelessly to solve difficult problems and deeply enjoy it; 3 points come from starting early, wishing that you had to start playing with computers when your peers were playing in the mud, and breaking the 10,000-hour rule before graduating from college, and the rest is a game of life.

Genius programmers are hard to come by, let alone to have forever. 90% of the programmers I see are still mediocre. The expansion of the IT era has made programmers as ordinary as printers during the Renaissance. Most people who join the masters of the field do so only for a bigger job, higher pay, and a better livelihood. Mediocre programmers write rotten code, without standards and consistency, and stick to the language of the old world. They are good at talking about big architectures and performance, but they are more beautiful in words than in deeds. Without exception, they believe that there is no way out for technology, and that products, marketing, and management are more sophisticated skills. 99% of them will naturally reveal that they happen to have talents in that area, and they don't bother to understand small questions such as why the process crashes.

What I like most is to get along with ideal programmers. I wish I could live and eat with them. If allowed, I hope my team can be filled with their flags. Ideal programmers are not bad-hearted (they are never the darlings of office politics, but a group of simple, bright and happy craftsmen), have innocent curiosity (their eyes often flash "Wow, how is this done!"), always strive for perfection (their mantra is "I'll study it again"), and are willing to share (they are active in GitHub, major Q&A communities and around you, and are willing to spend their precious time helping novices). Yes, they do not need to be managed, they only need to be given a general direction, which can always return unexpected results.

There is only a thin wall between an ideal programmer and a mediocre programmer. The gap between the two is only 6 little things, and the gap between people is forever widened by these little things that accumulate day by day. Interestingly, I found that these 6 little things are all related to consciousness, that is, programmers are like all other jobs in emerging industries. With consciousness and time, everyone can reach the ideal stage. An ideal programmer must also be an excellent problem-solver.

First little bit: Focus on the present

Having seen too many programmers with distracted minds, I have to put "focusing on the present" as the first rule. They often have all kinds of small dreams, such as being a small tea farmer, a small goose vendor, making products, doing sales, and investing, but they are "delayed" by the high salary of programmers or the lack of courage to change careers. Because of their lack of focus, they don't care about doing their own duties, honing their skills, and learning emerging technologies. It is undeniable that there are great products (like Mr. Joe), great sales (like Ellison), and great investors (like Peterffy) in this world, and they are all programmers without exception. But have you heard what Buffett said about Gates? If Bill Gates changed his career to sell dogs, he would definitely be the world's largest dog dealer. I firmly believe that except for a few geniuses, all living beings can succeed in multiple fields as long as they stay focused enough. Even if you want to sell dogs next year, the experience of a programmer can still train you to have strong logic, prudence and patience, which is a considerable competitiveness in any industry.

The second little bit: thinking ability 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, how to eliminate interference and restore a minimum verifiable scenario, and how to grasp key data to verify your own guesses and experiments are all the best scenarios to reflect the programmer's thinking ability. Yes, in terms of the criteria for measuring ideal programmers, thinking ability is more important than experience.

Sometimes when my friends come to me and ask me "I submitted a task and it got stuck, what should I do?", I always feel that they can do better. For example, they can check other tasks to rule out the code itself as the cause; they can check the exception through the Web UI (if they don't have an account, they can ask me to provide it); they can check the host log or delete the cache. At the very least, they should always provide me with the task ID and console log. Ideal programmers will never wait for things to move forward, they will do everything they can to make things move forward.

The third little bit: Never Say No

I remember talking to my boss before I left my previous company. He said that my greatest strength was that I never told him that something couldn't be done. Later, I found that in many teams, there was a conflict between technology and product. Programmers often blocked product requirements by saying "technically impossible", while product managers often ridiculed programmers by saying "Facebook can do it, why can't we?" These two sentences should be taboos. They are fundamentally not conducive to the love between programmers and product managers.

It is easy to say "technically impossible", but how many people are 100% sure when they say this? If you are not sure, why can't you go back and Google it before answering? I originally thought that programmers were full of imagination. It is because of imagination that so many software and Internet products that change our lives can be born. After seeing more, I realized that most programmers have become conservative and unwilling to take risks in the fight against bugs. At the same time, many teams are unwilling to tolerate failure. So "Say No" has become a habitual resistance. Do you remember why Zeng Guofan disbanded the Hunan Army? He said that the army was "deep in decadence" and could not fight. To be an ideal programmer, you can't give yourself the opportunity to breed decadence. If faced with unreasonable demands, you can put out the time cost and show the roundabout solution to save the country. It is not advisable to simply and crudely "Say No".

4. Invest in the future

Being a programmer is a very cruel profession. The languages, frameworks, and patterns you learn and use may become yesterday's news in a few years; the other group of programmers you laugh at now may turn around and laugh at you soon. Therefore, in addition to doing their own duties, ideal programmers also have to spend time to invest in the future. What is "investment"? Investment is the time you invest now, which will be rewarded with more time or money in the future (look at the current salary of programmers who learned iOS a few years ago!). Take my own field - data mining as an example. Hadoop began to rise around 2008. The concept of "big data" was hot for a while, and Hadoop engineers were hard to find. Internet companies switched their data statistics, data analysis, and data mining businesses to distributed platforms. In the past few years, Hadoop has been constantly iterating, and Spark has emerged as a new force, breaking the sorting record held by Hadoop in one fell swoop. The performance advantages and rich data structures brought by storing intermediate data in memory make people love it, but various strange little bugs and steep learning curves make people retreat. Well, everyone knows that Spark is the trend of the future (memory will become cheaper and cheaper). If the main business is placed on Hadoop, some small modules can be appropriately switched to Spark, and at the same time, pay attention to the development of the Spark community. Soon, the performance benefits obtained from Spark will earn back the time invested in learning.

Tip 5: Make good use of tools

Making good use of tools can be divided into 4 levels:

  • Search Engines
  • Don't believe in repetition
  • Code Snippet
  • 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 mercilessly ridiculed, so that my account everywhere is called 2shou, reminding myself that I am a shameless second-hand programmer. This is a joke, but if you ask me now, I will still answer Google. The growth of programmers is like an expanding pie, with an endless sea outside. The bigger the pie, the larger the contact area with the sea. The more you understand, the less you understand. Computer science is a subject that is updated very quickly, and it is also the subject with the best knowledge Internet. It is difficult to use the traditional method of teaching and learning in a formal school. On the contrary, it is easy to obtain the latest knowledge through search engines.

I don't believe in repetition. The master's words are called 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 of aesthetics. The less repetition, the less chances you have to make mistakes, and the less cost of later maintenance.

If you lose the code from three weeks ago, you may be able to copy the remaining fragments in your mind with your extraordinary memory, but if you lose the code from three months ago, you may not be so lucky. Ideal programmers will strive to find an effective way to save data, save short fragments of code, scripts, configurations, experiences, etc. written down 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 task may be repeated for a long time, the sooner the better.

Tip 6: Time Management

The reason why time management is particularly important for programmers is that when completing tasks, you must be like a wolf in the wilderness, "walking alone". 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 brainwork. Generally, 4-5 hours a day is enough to deal with their own work, but outside of work, they must arrange time for learning. In addition to learning, it is also necessary to leave some time to empty yourself. Take advantage of the intervals between making tea or drinking coffee to leave precious time for yourself, think about the future and the future, and get twice the result with half the effort.

Having said so much, someone must be asking, what's the point of trying so hard to become an ideal programmer? Will you get a high salary? No. Can you get promoted? Not necessarily. What about marrying a beautiful and rich woman? It's better to sell dogs.

Kazuo Inamori once told a story about a craftsman in the Meiji era who was summoned by the emperor. Although they were all country folk who didn't read, they worked diligently on one thing all their lives, so they naturally had a noble temperament. An ideal programmer should follow this noble temperament.

<<:  Writing foolproof code

>>:  Post-90s entrepreneurs have the right time, right place and right people, but 95% of them fall into these 5 big pitfalls!

Recommend

Comfortable and free! You deserve such space life

In the blink of an eye The Shenzhou 13 crew has b...

Why does popping candy "pop"? Childhood questions solved!

For many people, one of the most unforgettable me...

iPhone 13 is coming soon. How long do we have to endure these iOS flaws?

[[423239]] As usual in previous years, Apple will...

A must-read for entrepreneurs: How long does it take to develop an App?

[[219589]] With an estimated 350 billion mobile a...

Google launches VR portable scene-based immersive games, which are closer to us

Whether it is a sci-fi movie with lifelike shots ...

I have something stuck in my teeth again. What should I use to get the leaf out?

Although dentists have always regarded brushing t...

Which one is better for you, the new iPod touch or the iPad mini 3?

Apple 's latest iPod touch uses an A8 process...

4 tips and 6 taboos for live streaming sales

As a short video platform with more than 600 mill...