The ability to solve problems is what programmers are built on.

In general, I will not write articles deliberately, but when I feel and have time, I will write words. I wanted to push some technical articles, but writing technical articles is very time-consuming, write too shallow and no technical content, I’m afraid we don’t have the patience to see (is not lazy yao, find so many excuses for themselves). Public number so much, you can see how much? Xiao Wu this public number will not like some net red every day want to break the head to write articles, also do not expect this public number can bring me what, after all, with my urine I let me write chicken soup every day I myself will be sick. Ok, let’s move on to the topic of today’s post and talk to you about the ability of programmers to solve problems.

Why did you want to write this article?

Earlier I wrote an article about independent thinking – how do you think? [1], if you are interested, you can go to see it. As for independent thinking, I think everyone should have it. As an adult, many things need to be explained clearly by others before you know how to do them. Then others are not willing to entrust things to you, and they are not likely to trust you to do them well. While today’s topic is about the ability of programmers to solve problems, it’s also about the ability to think for yourself, because the ability to solve problems also comes from the ability to think for yourself. Before written articles, some classmates want me to write about some experience in goose factory, actually to be honest, working in goose factory also vary from person to person, no matter where I work ultimately depends on how you give meaning to work, with their work every day repeat, tangle promote job skills, about salary can’t satisfy their own desires, There’s no point in dwelling on this or that. The question is not whether you are calm enough to improve yourself. If you can’t solve some of the problems in your daily work, you can’t expect to improve very much in a short period of time. Again, even if you have ten years of work experience, if you have one year of work experience and ten years of work experience, it’s no wonder that other people are better than you, and it’s a real crisis in middle age.

Poking fun at the blank heads of some developers

From the SDK developers, every day to help users to solve a variety of problems, then I really have reason to believe why the moon will be more than the domestic moon round, because some domestic developers really let me very square ah. The ability of Chinese developers to copy and paste is first class, they can implement the function in a whoosh, it feels so awesome (mantis shrimp, let’s go). When integrating the SDK we provided, we also ran into problems and didn’t know how to solve them.

White developer A: Why doesn’t the upgrade popup prompt? I’ve integrated it exactly according to the document. White developer B: Why can’t I fix my problem after integrating the hot update SDK? Small white developer C: after integrating SDK, compilation error, who can help look. Developer D: How to turn on obfuscation… Developer E: Why is there no mapping file? F: Why do you not see log after accessing SDK? White developer G: How to solve this exception? More…

Although it is labeled as a small white developer, I have encountered many developers who have worked for several years asking the same question, and this is no longer an empirical problem. On the other hand, if someone asks you this question, would you listen to them? Seriously, I’d rather use the time to fix a few more bugs. We all have when white experience, life this life do not understand too many things, then you can not let others lead you to go, as a programmer to live up to the title of programmer, as an engineer, whether you can reflect their engineering ability. If you don’t have basic problem solving skills, quit being a programmer as soon as possible. It’s not as much fun as you think it is.

What is problem solving ability

I say my opinion first, say these not to boast how strong their ability, just put what I see and think into words, as others to interpret me is indifferent.

Number one: Take the initiative to try to solve the problem

Programmers are not born with problem solving skills, they are acquired by experience. There are all kinds of problems we encounter in our work, such as tracking bugs generated by debugging products, problems with third-party components, and compilation problems caused by plug-ins or ides. At this time, the first reaction is not to go to others for help, but to try to solve the problem. The first step is to determine what kind of problem this is, and define the problem, whether it is a coding problem, some compilation problem, or a third-party library introduced the problem. Once identified, you can locate the root cause of the error based on crash information generated at runtime or compilation errors that occur at compile time. If the problem is in the code, it is very easy to locate, we just need to find the error according to the error stack, and then you can look at the processing logic of this part of the code, as long as it is not particularly complicated business processing, basically can be solved quickly. What if it’s a compile-time problem? You first look at what is specific compiler error, whether his former have met, whether can determine what part cause compilation errors, such as development environment version problem, or is a plug-in version of the problem, or is the code to compile, such problems as long as the correct believe can also be easily solved. What if the business logic causes the problem? I suggest you reorganize your business logic according to your requirements, either by verifying your results with debug, or by writing unit test cases on a daily basis to ensure that the business logic is correct. The solution to all kinds of problems can always be found. It just depends on whether you are patient enough to find a solution.

Number two: Learn to ask questions

The first point above requires a certain level of competence, and not all developers can do this, so what if the problem cannot be solved by relying on their own competence? Yes, ask people questions, but be careful how you ask them. Don’t be a blank SLATE developer like I’m making fun of. There are a lot of people talking about asking questions, but most of them are developers who contribute to open source projects. As long as open source is open, there will be a lot of people coming to ask questions and raise issues. Speaking for myself as an SDK developer, I want developers to ask me questions like:

  1. First, be honest and show equal respect (important)
  2. Problem headings have specific headings indicating circumstances, error timing, and phenomena. Better title (√) : A compatibility bug was found on Vivo X5 when XXX SDK call initialization caused a crash
  3. Detailed Problem Description The detailed problem description helps other users locate problems for you. Provide as much detail as possible about the environment, error times, stacks, logs, symptoms, screenshots, and so on. [Problem Description] Describes the environment where the problem occurred: Android version, device model, network status, SDK version, etc. Describe the attempts to solve the problem, such as the relevant materials found in Google. [Error stack] Post the error stack shared by Bugly (share chain or screenshot).

[2], if you want to improve your ability to solve problems, you must first learn how to ask questions.

Third point: experience summary

Our daily problems are similar to leveling up. The more problems you solve, the better your ability and experience will become. But the human brain can not remember everything, will encounter their own problems to settle down for their own future reference is also a great help, you do not have to go to Google every time, they can also have an index library. Often their own summary, but also can improve their writing ability, later to write articles, PPT summary refining nature is not difficult to you, but also kill two birds with one stone. And when you mention your skills in future job interviews, you can also add to your interview score.

Fourth point: knowledge and experience inheritance

Spirit brother said: do not sum up where experience, do not share experience of what use?

How much value a person can generate depends on how much influence they have. I saw someone ask in our internal forum what is the use of increasing influence? If you look at Ma Yun, you can see what it is used for. One word he says is more effective than hundreds of words you say. After all, the influence of others is there. Many micro business often take Jack Ma to talk, although Jack Ma himself did not say these words, but why others take Jack Ma to fool people, do not take you to fool people, this is the role of influence. We programmers do knowledge and experience transmission, not only can improve your own influence, but also can help you improve your logical thinking ability, because you need to summarize, you need to clarify the problem, and you need to describe the knowledge points in a way that others can accept more easily. Your experience may be your own, but if it can help someone else, then your value is different.

conclusion

The development of the document of the author in writing, often have to think about how to make easier access to our SDK developers through this document, how to design interfaces will be more in line with the thinking of the developer, to mention a few more why can help make their own thinking to be more perfect, this article is the author in this three years some of the thinking, Also hope to help the majority of developers can clearly understand their ability in this area, finally thank you for seeing here.

[1]. www.jianshu.com/p/e698fea61. [2]. Github.com/tvvocold/Ho…