The Myth of the Super Programmer I received an email last week, which upset me. The email author basically thinks that I am talking about a very simple topic in my blog and in the Pluralsight video program. However, I found that the interview content should be more complicated than I do, it should be designed for "Real Programmers" or super programmers. This email basically expresses the idea that not all applications are developed as "Real Programmers", but "Real Programmers" write difficult things, something related to complex mathematical algorithms.
Are there really super programmers?I don't think this kind of understanding and understanding of programming and software development is exclusive to him, or it is an individual phenomenon. Even Scott Hanselman, an IT elite, also called himself and considered himself a real fraud. Scott Hanselman's article resonated with me, because sometimes I feel the same as him. Sometimes, I doubt whether I can solve really difficult problems. Let me venture to guess, I guess most programmers will admit to some extent in their thoughts that they are just an ordinary programmer, but there are indeed some super programmers in the world, they are working on very complex algorithm problems such as controlling hard disk caches or creating search indexes for Google. Well, there are certainly some programmers who are writing code to handle complicated issues that you and I cannot understand. But what is the difference between them and the remaining programmers? Between a programmer who develops applications for an enterprise and a programmer who writes search algorithms for Google, or a chip programmer who develops physical operations to control the reading and writing headers to read data from the disk sector, is there a real difference?
Before I answer this question...Let's spend a few minutes talking about the problems they have solved.
What are the most difficult problems you have encountered to solve?How did you solve these problems? In the end, do you think it is not that difficult when you actually solve this problem? When you review this experience and look back at this issue, will you find that it is actually a very simple problem? You have many questions, I know-but I hope you will spend some time thinking about these questions before continuing to read.
Understand the gap between cognition and reality.This is very important. Many programmers, including me, often cannot tell the difference between them. As we all know, our cognition of a problem is often quite different from the real situation of the problem. When we do not understand a problem, we will think it is more complicated than it is. However, once we understand this problem, we will find that it is actually a very easy problem to handle. Let me give you a realistic example. Take a look at the mathematical formula below. We can divide people who are looking at this formula into two groups of people. 1. People who have a good understanding of advanced mathematics can immediately recognize this formula and immediately know what it is. 2. People who have never seen such a pile of symbols will think that this is a complicated algorithm and it may take several years to understand it. Maybe I am not very accurate, but what I want to say is that there is a clear line between "meeting people" and "not people. I can give a simple explanation of these symbols with your familiar knowledge. Are you ready? This formula is equivalent to the following code: var total = 0; for (int I = n; I <= m; I ++) {total + = f (I )}
What does this mean?What I want to say is that in the programming of mathematical algorithms, in our daily development work, there are only a few questions that can be called difficult, generally, these difficult problems can be broken down into smaller ones (sometimes multiple times) until the last thing you need to solve is a very simple problem. The purpose of my blog, my Pluralsight video program, is basically to tell everyone to simplify complicated things. The same is true for my own life. If you want to become a successful programmer, you must learn how to do this. It is the most important skill you can learn. Now let's answer the original question: No, I don't believe there are super programmers in this world. I don't think there is any difference between enterprise application programmers and programmers who are considered to be studying real complex problems or "real programming. But don't misunderstand what I mean. Don't think that I'm saying that I don't believe that some programmers will be several orders of magnitude higher than other programmers in terms of skills. I am bold enough to say that a really good programmer will be 10 times more efficient than a common programmer, or even 20 times more. What I want to say is that we have a habit of forgetting that when the problem is broken down into smaller ones, all the problems become so simple, all problems can be resolved in this way. What I want to say is that this problem is a problem that can block your progress from becoming a really good programmer. It is caused by your own cognitive mistakes, you may think that complicated things seem incomprehensible. What I want to say is that when you develop an enterprise application that seems to be easy for you, you may forget it, for all your friends and family who know nothing about programming, how difficult or almost impossible it is to do.
Still disagree with my opinion?Good. You have the right to think like this.But I have prepared a problem for you. You must have known a super programmer. Maybe you are one of them. If so, let's hear from you. Please tell us a complex problem that is so difficult that other people may not understand. I am not suffering from you. I am very serious. If you can prove that I was wrong, you can prove it to everyone. So far, I have not encountered a problem that cannot be broken down into simple and understandable small problems.
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.