Preface: I am not a software engineer, but a software writer!
In China, programmers have been shouting for decades. Finally, leaders of the so-called State Ministry of Information Industry have captured their heads and named them "software engineers ".
The name is loud and fashionable. There must be an existing model to help you understand the new things. So whether you understand the program or the program, they followed suit of "architecture ".
This led to a tragedy!
Tragedy 1: Add a person and work overtime.
If you don't understand the program: Hey, buddy, isn't it true that you write software to move bricks in the construction process? What? Do you need to complete 5 days by yourself? Simple: I want to add a few more people to you. You need to add a few more days of work and 3 days of work.
Right Remedy: Hey, buddy, can you finish this "tianlong Babu" in a few days? What? 1 year? No, I will give you 365 people. I will add another class at night and hand it over to me tomorrow.
The following two figures describe how to add people and work overtime and what results can be achieved.
Tragedy 2: Pay attention to "availability" and ignore "readable"
Understand the program: Hey, buddy, my program can be easily extended from SQL to Oracle. It can respond to 1000000 people at the same time. Do you know why? Because I have used eight design patterns and this algorithm, I think it is perfect. Do you want to read my code?
Right Remedy: Hey, buddy, I like your program very much. But do you want to read your code for me? Hey, buddy, tell you, I don't like it. Your code, from the title (file name), "Introduction" (class name) and "Directory" (function name) cannot attract me (the name is too bad and the location is unfriendly). Does it make me look at the internal implementation in a painful way? In addition, if you have new requirements, you can maintain them by yourself. I just need to use them.
If you go to the bookstore to buy books, what kind of books will attract you to read? Is it the title?
If you read it, what kind of books will you decide to buy and read it carefully? Introduction and directory?
If he only pays attention to "availability", he does not have a deep understanding of the following two points:
(1) the demand for a successful commercial software must be constantly changing.
(2) Once requirements change, it is impossible to maintain your own code. Soon you will add new requirements to others' code.
Well, there's a lot to talk about. I believe that we already know what to do if we are labeled with "high IQ.