2008年10月17日 星期五

System thinking

Assignment 5: System thinking
(740 words)

In my own opinion, system thinking is a kind of approach to solve problems that it perceives problem as part of the overall system. It doesn’t focus on individual outcomes and results, but a whole system. If we want to solve certain kind of problems, we have to understand the whole system and all the parts in that system. If we can find out the relation of parts to the whole system, then we can quickly understand where the problems are and how to solve them. For example, in the past, people use DDT as a pesticide. They found DDT really useful and keep using it. Unfortunately, some research reported that it’s extremely difficult to decompose DDT in the ecosystem. After that, all the countries ban the use of DDT. This example illustrates that we have to consider all the effects and relation between possible solutions if we want to solve some problems.

During my study, there are several courses to train our logical thinking, analytical and system thinking. In this article, I will try to provide some examples to show how engineering learning can enhance my system intelligence. The most typical example is C programming. In doing programming, we have to construct the whole logic and system. There are different parts or bodies in the programming. All different parts in programming are interdependent.

Whole is the big thing:
Before typing the codes, we have to think all the logic in different part. Sometimes, we type the codes part by part according to the requirement. After typing all the parts, we combine all the parts together. Yet, the program doesn’t work! The main problem is that we can only see different part of the program, but not the whole. If we want to finish a programming assignment, we have to construct the program as a whole. We shouldn’t focus on the part of a system only, but to see the whole system.

Interaction between variables:
Seeing a whole is not enough, we also have to find out the interaction between components or variables. We were asked to do a program about vending machine. Customers have to select how much they are willing to pay. After that, the vending machine has to show the list of drinks within that range of money (the money that customers chosen). The final step is to allow the customers to choose the drink they like and deduce the amount of money from octopus card. When typing codes, we have 3 concerns. The first one is to allow the customers to choose the range of money. After knowing how much they are willing to pay, the machine itself has to display the drinks within that range of money. If the price of the drink is larger than the range of money customer selected, then the machine won’t display that drink. Then, the customers can choose the drink within their budget. After choosing the drink, they have to insert the money into the machine. If the money is not enough, then the vending machine will not proceed and it will tell the customer that the money is not enough. If there’s enough money, then the vending machine will proceed and show the remaining money (amount inserted minus price).
I tried to type the code into different part according to different process and combine them together. However, there were some errors and it took me nearly 7 hours to debug. The main problems are that each part failed to work together and functioned properly. I had to type some part of codes again and made them to interact with other part of codes. I realized that in doing programming, all parts are interdependent and they usually work interactively. Every part of codes can’t be ignored. If we ignore one part or type the code wrongly, the whole program can’t run and we have to debug again.
I find that system thinking is extremely important to our study or even future career. If I can equip myself better, I will become more systematic. I believe that it’s essential for us to have system thinking as it can help us to understand the whole task thoroughly. If we can understand the task thoroughly, we can quickly fix the problems. I will try my best to learn more about system thinking and programming so as to have a better result in my study and have a better job.

沒有留言: