Recently, a programmer from another project team in the same department was“ Voluntary turnover”了, Although I have never worked with this programmer, But once or twice I heard about his internal sharing, I think the technology is very good. Later, I chatted with a well-informed colleague, The real reason is that the boss thinksA Difficult to communicate, Make other procedures,QA All complain. Years of work, A lot of colleagues around me come and go, Active or passive, It makes me think about what kind of programmers are qualified programmers.

   Although everyone claims“ Code farming”,“IT Migrant worker”, But I believe, It's just self mockery or self denial, Most programmers should still recognize their profession, Of course, I'm not a good programmer, Because I've never contributed code in the open source community, Not proficient in whiteboard algorithm, Not crazy about technology, Nogeek. My goal is to be a qualified programmer: Do your job well, Yes, I can afford my salary, Balance between life and work,996 What is it? I can't accept it.

   Address of this article:

   For programmers, It is of course very important to pass the technical level, It's hard power. But it's not good only to know technology, After all, most programmers still have to deal with people, Soft power is also indispensable. How to be qualified, I think there are the following points:


Solid foundation

   The field of computer is a field of rapid renewal, There are new languages every once in a while, frame, Thought generation, I'm tired of following every new technology. But think about it, In fact, there are not so many new things. Many new things are just packages of existing technologies, Or other technologies used for reference. For example, cache databaseredis,memcached, Isn't the basic idea of caching in the operating system; Partition and replica set in distributed storage, No, it's in the file systemRAID Expansion?; AlsoGoogle OfMapReduce frame, It's not from the functional programming languagemap
reduce Do you. Master the basic knowledge of computer, Be able to see new technology more essentially.


Make good use of tools

   Sharpening your ax will not delay your job of cutting wood, It's very important to build your own Toolset.

   A lot of tools will be used in the development, Whether it's an editor, Debugging tool or monitoring tool. Everyone likes to argue about whichIDE better, But it doesn't make much sense, The key is to be able to use your favorite tools skillfully, Master various shortcut keys, Highly customized, This can greatly improve work efficiency. And for the repetitive operations in daily life, Best script automation, Here are some suggestionspython, Writing gadgets is fast.

   in addition, Two tools for programmers, That's browser andVPN. The latter is known to all, Not much to say, It's mainly because of the latter that we can play the power of browser. Browser is used every day, But how to use it efficiently, For example, search on the specified website, By title,url filter, Choose the right keywords
It's still worth studying, For programmers, To use a good browser, It's got to have the next ability: English?


Good English

   Have to admit, In the field of software innovation, China is still behind the rest of the world, New technology, First hand information is in English. Before new technology is widely used, We found a translator in Baidumachine
translated, Or mistakes. The biggest problem of translation depends on the translator's own level, Even if the translation level is very high, But there are often different translations at the same time, Lead to confusion when reading articles, It's better to read the original English directly. Most original texts, Remove professional vocabulary, It's better to understand, And, I found a lot of projects, There are very easy to understand documents.


Good coding habits

   Code is written for machine execution, At the same time, it is also for reading and maintenance. The maintainer may be someone else, It could be a few months later. Good code specification, Necessary, Clear notes can help you to be less greeted by your ancestors.


   For code style, There are also many online disputes, The most important thing is to keep the unity within the project. As technical director, Make sure to top the code at the beginning of the project, It's hard to unify when a lot of code is piled up, And do a good jobreview.


Keep learning

  The profession of programmer, Compared with other professions, Maybe a lot younger. Especially at home, Many of the oldest programmers have been transferred to management, Again10 year20 year, What will happen to us, No one knows.. Huawei recently35 Year old programmer's resignation, It's a wake-up call for us, Beyond sorrow, I have to study hard, If you can't fight for strength, fight for ability and experience

   Learning is complicated, I think two things are important: Basics, Learn in order to practise.


Independent thinking

   Qualified programmers solve problems, Rather than implementing a solution. product manager( Especially a product manager who knows a little bit about technology) A requirement of may be just a solution to a problem, He thinks this method can solve his problem, So we think of the solution as a requirement, Not the real problem. Programmers should communicate actively, Ask more why, Understand the real problem, Maybe there's a better solution.

   There was an example before, Demand given: For every user( Users have uniqueid Mark) Generate a unique invitation code, At the same time, we also need to pre generate invitation codes for users that may be added in the future, Save to database. And the real need is for old users to share their invitation codes, If the new user uses the invitation code, Old users will be rewarded accordingly. And my plan is very simple, Unique for direct usersid Generate reversible invitation code, This eliminates the need for database storage at all.


   Product managers often change requirements, which is the biggest headache for programmers, As a programmer, I should also standPM Thinking from the angle of, HelpPM Analyze the essential needs, This may reduce the need for change. Of course, If you have to do something, love something, Need to have a certain understanding of the business.


Think before you act

   When you write code, think it out before you write it, Instead of writing a bunch of code first, And then I started to repair itbug.

   Ceasebug When, Take a look at the context, Find out whybug, Amend thisbug Possible impact, And then modify it. There are two kinds of negative textbooks: The first is to change the code at will, But I don't know why it's fixed, take a chance, Maybe there's another onebug I can't find it. The other is, Headache, head and foot pain, Do not carefully assess the impact of the changes, This often leads to new problems.

   One way for programmers to grow is tobug, It can't be used by othersbug, But the premise is to find outbug Reason, In this way, similar mistakes can be avoided, Gain something.  
Smooth communication

   It's not like a tongue spring, It's not a hoax. All you need is to listen patiently, Then express your opinions clearly.

   Current software development, It's no longer a single fight Era, Most software, Products need more than one person, Multisectoral collaboration. And communication, Communication is very time-consuming and labor-consuming. Before communication, Think about the goal first, Organize the language, Try not to diverge, Don't run away from the topic. Right things wrong people. For important things, Keep communication records, Better have mail, So that we don't get confused.

    Communication is a complex art, The most basic thing is to understand, Speak clearly.


Manage your temper


   Act as
A programmer, To bePM resentment, To be connected interactively, To beQA resentment, Any abnormal need may exist,QA I mentioned it to you.BUG May not belong to you. And, And pig like teammates( I'm not like that in other people's eyes) And subordinates. No matter who is right or wrong, Lose temper, It's no use arguing, After the fight, we still have to solve the problem.calm
down, If you have anger, you have to wait a few seconds, Maybe think about it rationally these few seconds, Can solve the problem.

Responsible for

   ability( Technological capability) Who is more important than responsibility, All important. If a new person has the potential to develop, So responsibility is more important. 2 People, The first one is very technical, But the sense of responsibility is very poor, Not interested in the project; The second one is worse, But strong sense of responsibility, It's my own problem. I must be responsible to the end, Ask for help even if you can't. I think the former is more harmful to the project, Especially in the critical period of the project, Because the person with strong ability is generally responsible for the complexity, Difficult functions, It takes time for others to get started, At this time, if you put a load on it,bug Nor does it fix it. So it's hard.

   The typical example of irresponsibility is bullshit, Wok: It's not minebug, It's none of my business.. Where there is collaboration, problems are more likely to arise, For example, front end and back end, Between departments. If you don't know who's the problem then, Take the initiative, Help troubleshooting.


Don't always say no

   As a programmer, There's always work that hasn't been done before, Maybe it comes from the needs of product personnel, Maybe from the spontaneous optimization of the project. I've seen some programmers, In the face of unknown problems, Challenge time, Always used to say: Can't, No way out, Impossible, This kind of programmer is not qualified. In fact, This kind of programmer is to leave a way for himself too early, In fact, the problem may not be as difficult as you think, Maybe it can be solved after some exploration. If you are used to saying no to the unknown, So in other people's eyes, it's just not good, Influence personal image and reputation, And always staying in your comfort zone is not conducive to self-development.

   Of course, It's not about blind confidence, I'm in a hurry to pat my chest to make sure it can be solved, This is often the pit of their own.

   therefore, Facing new demands, Prudent treatment, It's not easy to veto or promise, It needs to be studied first, Evaluate whether it can be completed, Resources and time needed.


   So much for the moment, Of course, I'm not up to the standard, For example, you can't control your anger easily, Share with you