Software development experience of more than 30 years of programmers

In my 30 years of programmer career, I have learned a lot of useful things. Here are the essence of the experience I have accumulated over the years. I often think that if someone can point to one or two of these experiences before, I believe I will stand taller now. 这里写图片描述

1. After the customer comes into contact with the product, they will really understand their needs. This is what I learned in my first job. Only when we show our customers products, will they realize what is necessary. Giving a functional prototype is far better than a long text form.

2. As long as there is sufficient time, all security defense systems will fail. Security defense is now a big issue and a big challenge that the whole world is paying attention to. We must actively improve it all the time, because hackers can defeat you completely if they have a success.

3. Whether the security defense fails depends on early planning. Assuming that a hacker will completely destroy your defense system, you have to be prepared in advance. So even if they really let them invade the system, they can't steal anything of value, because you have made security settings for the server, such as encrypting the contents of the database, and for each server that may be attacked. Isolation was carried out.

Remember, then a strong defense will have its weaknesses, the key is to be prepared.

4. A good security defense system doesn't care about its cost, because this is a strategic investment; failing security defense is a waste of resources. During my career, I have often heard people complain about how complicated and expensive security defenses are. What they don't realize is that if the defense fails, the company will lose more than a few billion dollars. In order to save a few dollars and cause the bankruptcy of the company, this practice is undoubtedly very stupid.

5. It's hard to organize complex things into simple ones, but it's easy to make complex drums more complicated. This one applies to programming, design and almost all areas of creativity. I have always wanted the easier it is to understand my code. If your code is too complicated and embarrassing, then it is very unlikely that it will work properly. I have had the privilege of seeing that some programmers are struggling and hard to make the code more elusive.

6. Success stems from failure in learning; failure is due to tolerance of errors. There are many programmers who are always arguing that "the program is so difficult, it is normal to make mistakes, and it is inevitable that the software becomes bad." This reason has been much more heard, so everyone gradually accepted these excuses. But we as programmers really should not let these excuses hinder our progress. It should be remembered that mistakes can only be made once and lessons must be learned. It is said that programmers will want to be able to get the code in one go. But no one is perfect, but at least we are on the way to this direction.

7. The only constant is the change itself, which is the rule that no one can change. The plan will never catch up with the change, thinking that the world of tomorrow is the same as today, and the idea itself is foolish. Especially in the world of programming, nothing is eternal. People can't step into the same river twice.

8. Never stop learning. Once you stop, the wave of technology will kill you on the beach. The only way for a programmer to be invincible is to keep learning and progress. Because once you relax, all your advantages will go with the wind.

9. The entire software industry is based on the idea of ​​"a hundred schools of thought contend." In my career, I have seen many programmers who are more realistic about things: the estimated completion time is true, the size is more realistic, and so on. And some people have repeatedly made mistakes. Some of the technologies that were previously criticized as "not working" are now firmly occupying a place in people's lives, and now they are rushing to another climax.

10. It is not suitable for him that suits you. There are many choices we can make in a software project. Some are wise, some are bad. But the choices that are right for you and your current situation may not apply to others at all. We often hear people say that they are doing great work again, but if they say that this is the only good way, I will sneer at it.

11. Assessment is the most important skill in this ever-changing world. Some people may not know this. But if you are willing to recognize new things, see other people's efforts, and choose the best way to do things, then not only yourself, but also your team, your project, your company, will benefit. But many people are not good at it, and many responsible people even perform very badly in this regard. It is very easy to do what others say and to see what others do and do what they do. But if you want to look at the problem in all directions and then choose the corresponding optimal direction based on your own needs, it will be very difficult. Making choices in the software industry is a must, but if you have a stunned mind when you have to evaluate the analysis, the end result can only be a random pick or a blind follower.

12. Regardless of the black cat and white cat, it is a good cat to catch the mouse. As long as your software implements the features specified by the customer, they don't care what problems they need to solve. The system has a problem, the abnormal situation has occurred, the hardware is broken, the program is smashed by the girlfriend, and the hacker hacks: the user will never be interested in these. If something unexpected happens, it's best to be honest, but you'd better make sure that it doesn't last long, because you always give the final product to the customer.

13. The opinions of the customers determine the quality. No matter how many metrics you set, how many forms you've checked, how much code you've reviewed, and how many tests you've written: This isn't the key, unless the customer sees the software working properly. Regarding code quality, performance, design, and usability, customer feedback is the only factor that determines quality.

14. Ignorance of a certain aspect may make you lose, because you have no experience in this area. Even today, I am still amazed, and some of my colleagues still have not collected enough logs, crash reports and usage information to control their software. Most of the guys who dismiss this information will overestimate the quality of the product. Because if you don't take action and record the results, you will eventually know that you don't know anything about the current situation, including your customers. I have repeatedly stressed that detailed and useful logging, program crash tracking, comments and comments, anyway, as long as it allows me to understand as soon as possible what is the problem and the method is feasible. However, I also know that many people think that "this kind of thing has a dime relationship with the programmer?".

14. There is always a better way, but time is not allowed. The most difficult node to grasp in the assessment is when to stop brainstorming and start working. Maybe we will miss that better way, but if it takes a long time, it is not worth it. But this is hard 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. He is a colleague of my early days. I don't fully agree with some things, but they can also give us a different perspective.

15. The customer is looking stupid. This is my favorite sentence. This salesperson works for a consulting company. He believes that looking for a gold lord who does not understand technology but has sufficient capital to squander. Smart people always ask a lot of questions; people who don't have money can't afford to buy our services. I am very glad that I am a programmer, haha!

16. My job is to deceive customers, and your job is to support me. The second sentence comes from the same salesperson. He always likes to continually promise some impossible tasks, and then when we finally work hard to get out of work, he will come to harvest the fruits of our success. The challenge is indeed exciting, but it is too painful to do this impossible task every time. My advice is to change to a better salesperson!

I will share it with you here. I am a 5 year full stack engineer. Based on the experience of front-end in these years, I have compiled a set of system front-end tutorials (basic + case + tools) to share with you. My results, into the group: 731771211, the group keeps updating the latest tutorials and learning methods (into the group to send web front-end system learning route, detailed front-end project combat teaching video), want to learn web Front-end, or change, or college students, as well as those who want to improve their abilities at work, the little friends who are learning are welcome to join the study. Click: Join