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 havea clear and clear guidance map before development; developers can develophigh-quality code along with the guidance map. The code can not only meet therequirements of various quality attributes but also make the code have good"isolation"; it will not produce new defects or failures due tosubsequent changes in requirements.
2. Simple design enables developers todesign test cases before development; it enables developers to clearly definethe tasks they develop every day, what are the standards to be completed, andwhat scenarios of test cases need to be passed?
3. Simple design enables developers to makeclear and objective conclusions: has the task that should be completed todaybeen completed? If not, what is the real problem? What kind of assistanceshould be sought?
How to do simple design?
Some people are born with it.
And most of us, simple design thinking, isto 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 softwarearchitecture in his mind before development.
Matei followed the software architecture inhis 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 tothe weakness of the code. What are the architectural weaknesses of the codedeveloped by Matei?
Agile development and software engineeringpractices, such as story scene tree, are totally unnecessary for Matei. BecauseMatei was born with a simple design.
Story scene tree is mainly to help developers to train their thinking of "simple design" and "testcase design"; after a period of training, developers will naturally usestory scene tree for a simple design without "necessity". Because,developers have been able to bring software architecture to mind, and cannaturally think of test cases.
Because the story scene tree is visual andlightweight enough; it's more than enough to put in your head.
Figure 1: story scene tree: visual,lightweight developer guidance map
Developers with "simple designthinking" are always using the "brain" to drive their hands toproduce lines of great code. The reason why we call it to the line after lineof great code is that each line of code can always evolve with the passage oftime, but in the process of evolution, it still keeps healthy and strong. Greatcode is like an organism with a strong life.
Developers who always use handwritten codewill produce code that is not fully developed (full of defects) from birth (thefirst version). There is no doubt that as time goes on, the illness will onlyget worse and worse (more and more defects and failures).
When the method and engineering practicethat can exercise "simple design thinking" is put in front of thedevelopers who can only use handwritten code forever, the scene that willhappen 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, rightor wrong; what kind of choice you make? What kind of life you live; what kindof code you produce.