The simple design is just to write documents, but not to guide the development, such a simple design, is just in a muddle.
However, in the process of software development, without simple design, software development will never be good.
A simple design can guide the development
1. Simple design enables developers to have a clear and clear guidance map before development; developers can develop high-quality code along with the guidance map. The code can not only meet the requirements of various quality attributes but also make the code have good "isolation"; it will not produce new defects or failures due to subsequent changes in requirements.
2. Simple design enables developers to design test cases before development; it enables developers to clearly define the tasks they develop every day, what are the standards to be completed, and what scenarios of test cases need to be passed?
3. Simple design enables developers to make clear and objective conclusions: has the task that should be completed today been completed? If not, what is the real problem? What kind of assistance should be sought?
How to do simple design?
Some people are born with it.
And most of us, simple design thinking, is to go through a period of training, not born.
Matei zaharia; leader in spark development.
When Matei was developing spark with Scala, he didn't do the so-called simple design.
Matei will clearly present the software architecture in his mind before development.
Matei followed the software architecture in his head and developed lines after lines of great code.
After Matei has developed a piece of code, it will design the so-called "disaster test" test cases according to the weakness of the code. What are the architectural weaknesses of the code developed by Matei?
Agile development and software engineering practices, such as story scene tree, are totally unnecessary for Matei. Because Matei was born with a simple design.
Story scene tree is mainly to help developers to train their thinking of "simple design" and "test case design"; after a period of training, developers will naturally use story scene tree for a simple design without "necessity". Because, developers have been able to bring software architecture to mind, and can naturally think of test cases.
Because the story scene tree is visual and lightweight enough; it's more than enough to put in your head.
Figure 1: story scene tree: visual, lightweight developer guidance map
Developers with "simple design thinking" are always using the "brain" to drive their hands to produce lines of great code. The reason why we call it to the line after line of great code is that each line of code can always evolve with the passage of time, but in the process of evolution, it still keeps healthy and strong. Great code is like an organism with a strong life.
Developers who always use handwritten code will produce code that is not fully developed (full of defects) from birth (the first version). There is no doubt that as time goes on, the illness will only get worse and worse (more and more defects and failures).
When the method and engineering practice that can exercise "simple design thinking" is put in front of the developers who can only use handwritten code forever, the scene that will happen is just like the one in Figure 2
Figure 2: Cart puller: I'm busy
1. The puller always says... I'm busy.
2. The puller always says... First prove that the wheel is valuable to me, then I will consider using the wheel.
3. The puller always says... I'm good now. Why use wheels.
Life is a multiple-choice question, right or wrong; what kind of choice you make? What kind of life you live; what kind of code you produce.