Over 30 years of experience as a programmer (success stems from learning from failure; failure is caused by tolerating errors)

Source: Internet
Author: User

Lessons from a lifetime of being a programmer

I have learned many useful things in my 30 years of programmer career. The following are the highlights of my years of experience. I often think that if someone could give me some advice on these experiences, I believe that I will be more advanced now.

  1. Customers can understand their needs only after they have reached the product.

This is what I learned in my first job. Only when we present products to customers can they realize what is necessary. Providing a functional prototype is much better than a long text table.

  2. All security defense systems will fail if there is sufficient time.

Nowadays, security defense is a major topic and challenge all over the world. We must constantly improve it, because hackers can beat you as long as they succeed.

  3. Whether or not security defense fails depends on early planning.

Assuming that a hacker will thoroughly damage your defense system, you must prepare in advance. In this way, even if they intrude into the system, they will not be able to steal anything valuable, because you have made security settings for the server, such as encrypting the content in the database, in addition, each server that may be attacked is isolated.

Remember, a powerful defense will have its weakness. The key is to be prepared.

  4. A good security defense system does not care about its costs because it is a strategic investment. Failing security defense is a waste of resources.

In my career, I often hear people complain about how complicated and expensive security defense is. What they don't realize is that if the defense fails, the company may lose more than billions of dollars. To save a few dollars and lead to bankruptcy, this is undoubtedly very stupid.

  5. It is very difficult to organize complicated things into simple ones, but it is easier to make complicated things more complex.

This article applies to programming, design, and almost all creative fields. I have always hoped that my code will become easier to understand and better. If your code is too complex and obscure, it may be less likely to work normally. I was very fortunate to have seen some programmers who had a hard time working, but made the code more elusive.

  6. Success is due to learning in failure; failure is due to error tolerance.

There are many programmers who are always defending and saying, "it's normal to make mistakes so hard, and software gets worse ". I have heard a lot about this reason, so we gradually accept these nonsense excuses. But as a programmer, we really should not make these excuses to impede our progress. We should remember that mistakes can only be made once and lessons should be learned. In other words, programmers will want to get the code at once next time. But no one is perfect, but at least we are on the way in this direction.

  7. The only thing that remains unchanged is the change itself. This is a rule that no one can change.

The plan will never catch up with the changes, thinking that the world of tomorrow is the same as today, and this idea itself is a foolproof. Nothing is permanent, especially in the programming world. A person cannot enter the same river twice.

  8. Never stop learning. Once you stop, the technology will beat you to death on the beach.

As a programmer, the only way is to keep learning and improving. Because once you relax, all your advantages will go away with the wind.

  9. The entire software industry is built on the idea of "a hundred schools of contention.

In my career, I have seen many programmers make sense of various things: the estimated completion time is true, and the scale is true. In addition, some people continue to make repeated mistakes. Some technologies that were criticized as "unfeasible" in the past have now firmly occupied a place in people's lives, and are currently moving towards another climax.

  10. Not necessarily suitable for you.

In software projects, we have many choices. Some are wise and some are bad. However, the options that suit you and your current situation may not apply to others at all. We often hear people say what they are doing and what they are doing, but if they say what is the only good way, I will sneer at it.

  11. Evaluation is the most important skill in this ever-changing world.

Some people may not know about this. However, if you are willing to recognize new things, get the efforts of others, and use things in a preferred way, you are not only yourself, but also your team, your project, and your company, will be of infinite benefit. However, many people are not good at this, and many people in charge are even very bad at this aspect. It is very easy to do what others say and what others do and what they do. However, if you want to view the problem comprehensively and then select the optimal direction based on your needs, it is very difficult. It is necessary to make a choice in the software industry. However, if you are confused when you have to evaluate the analysis, the final result can only be a random pick or blindly follow the big stream.

  12. Whether it is a black cat or a white cat, it is a good cat to catch a mouse.

As long as your software can implement the features specified by the customer, they will not care about what problems need to be solved. A system problem occurs, an exception occurs, the hardware is broken, the program is dumped by a girlfriend, and hackers steal the code: users will never be interested in this. If an unexpected situation occurs, you 'd better be honest, but you 'd better ensure that the situation does not last forever, because you always give the final product to the customer.

  13. Customer opinions determine quality.

No matter how many metrics you have set, how many forms you have checked, how much code you have reviewed, and how many tests you have written: This is not critical unless the customer sees that the software works properly. Customers' opinions on code quality, performance, design, and availability are the only elements that determine quality.

  14. ignorance of a certain aspect may defeat you because you have no experience in this aspect.

Even today, I am still amazed that some of my peers still do not collect enough logs, crash reports, and usage information to control their software. Most of those who are dismissive about this information will overestimate the quality of the product. If you do not take measures or record the results, you will not know the current situation, including your customers. I have repeatedly stressed that detailed and useful log records, program crash tracking, comments, and comments are all feasible as long as I can understand the ways and methods of the problem as soon as possible. However, I also know that many people think that "does this kind of thing have a dime to do with programmers ?".

  14. There is always a better way, but time is not allowed.

The most difficult node in the evaluation is when the brainstorm should be stopped. Maybe we will miss the better method, but if it takes a long time, it will not be worth it. However, this is difficult to define, but sometimes a small choice today may defeat the better option next year. Who knows?

The following two points are quoted from a salesperson who was a colleague of mine many years ago. I don't fully agree with some things, but it can also give us different perspectives.

  15. The customer is looking for stupid ones.

This is my favorite sentence. This salesperson works for a consulting company. He believes that he wants to find the kind of gold owner who doesn't know the technology but has enough capital to bid. Smart people always ask a lot of questions. People without money cannot buy our services. I am glad to be a programmer. Haha!

  16. My job is to cheat customers, and your job is to support me.

The second sentence is from the same salesperson. He always likes to keep committing impossible tasks. Then, when we finally work hard and work overtime to get out, he will reap the fruits of our success. The challenge is indeed exciting, but every time it is such an impossible task, it is too painful. My suggestion is to change to a better sales person! [Translator's note: Isn't this a "harmonious" Relationship Between the legendary pm and programmers ?]

Http://news.cnblogs.com/n/504482/

Over 30 years of experience as a programmer (success stems from learning from failure; failure is caused by tolerating errors)

Contact Us

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.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.