Wizard from the West
In software engineering, to my personal knowledge, many successful widely used software programming platforms were initiated by Western developers. And I know many of them are really utilizing software development diagrams, too. In this aspect, Easterners are still behind.
These two weeks, a colleague from our company's US office coming to train us on using an internal development platform that, was created initially by himself for his own use. Some of us found it could benefit the whole team so we made a request for him to fly over and teach us how to use it.
In my office, what we usually do for a standalone application is to make an UI in C# , and the backend in C++. In order to pass the data, images or videos back and forth between the UI and backend, it usually involves 4 to 6 different classes (C++ backend module - C++ DLL APIs export - C# DLL APIs import - C# UI), which is quite a burden whenever we need to process or convey many information. At most, we can only aim for turning the application to be cross-platform.
But that colleague of ours went a step further to create a platform which automates and simplifies those labour works including data communication between modules, static and dynamic threading and so on. All of these information is now gathered into one property sheet. His platform will parse this sheet and do the work behind the scene. One uses this platform can focus more on the role of each module and cut off the time figuring out how many classes need to be involved to transfer a piece of information.
One more thing I have noticed, he relies on software diagrams intensively during the training. I seldom see an Easterner, say, developer, team leader, consultant, even director in the places that I am working and used to work, favors this practice. Of course there are, but very few from what I can see.
Maybe it's just stereotypical, but I feel Westerners are better in approaching a topic from topdown, even in coding, by drafting an overview, a diagram or similar to convey the idea. Meanwhile, Easterners are not comparable in this matter. We might be excellent in completing each separated module, but not easy to come up with an highly efficient way to link them as a whole. This is one important skill that we need to sharpen.
I have been trying to produce some sort of diagrams prior starting to code. The final piece is seldom exactly the same as the blueprint, I can say it doesn't shorten the development time much, but it does reduce the chances of making mistake, and the mental energy when tracing the flow of data.
I am also attempting to apply this into writing a long post by outlining the main points and organizing them beforehand. Same conclusion: it still takes me 1 and a half to 2 hours to complete one, but what it does is helping me not to get lost among my thoughts, and less time to make corrections.