On Building Software
When I first started learning computer science, my parents who were teaching mechanical engineering at a college in Beijing, often asked me, can you tell us what computer software is? And they would hand me a pencil and asked me to draw. I often told them with arrogant that software is abstract, there is no way I can draw. They then shook their heads with disbelief, since in mechanical engineering, drawing is everything - they give an exact representation of the object and show all parts in their true size relation. Mechanical drawing is used to communicate design ideas, to eliminate uncertainties, and to validate the integrity of the design. Many years have passed since but the idea of drawing the abstract concept of software has been lingering above me - can we visualize the abstract concepts for the same purpose? That started my journey of discovering and using Hierarchical statemachine to “draw software”.
In the following slides, I use a buggy sample code from Microsoft as an example, to demonstrate how software can be or modeled in a systematic manner with "“drawings”. How to use the modeling (drawing) method to capture the complicated real world frequently changed requirement, and how to use the model to reduce the design complexity, while maintain the system as whole, communicate the design to implementation, and finally to validate the design and to verify its implementation. This will not only eliminate “the other 90 percent” of work, but also bring the software quality to the next level. It is not only works correctly, but also has better user flow.
My goal here is to shad light on systematic design in software development. I truly believe it is the direction to go to solve the current frustrations. I hope you will take this concept to heart and develop it further.
Slides Show
The following is the slide show that repeats the content above. Click on the image to proceed.