Systems thinking

I was preparing breakfast this morning and noticed the way I was multitasking. Since I had prepared these dishes many times before, I knew exactly how long everything takes.

So as I put one thing on the stove, I would turn something over in the toaster, and then the next moment reach for something else in the refrigerator. It was a kind of synchronized dance, with all of the moves choreographed not by design but by experience and intuition.

I realize that this systems thinking is an aspect of software engineering that is difficult to teach. A student can understand all the principles, but without knowing the weight of things, those principles are difficult to apply efficiently in practice.

How much does it cost to add a new module, to allocate such and such objects, to iterate versus recurse? On top of that, there are multiple kinds of costs. Some costs come in the form of greater time and effort in programming, whereas others are penalties paid in run-time performance.

Systems thinking applies to everything, whether shopping for groceries, cooking a meal, fixing a car, writing a computer program or designing and building a house. In order to do really something well, you need to have put in the time to have working knowledge at your fingertips.

Beginners are at a distinct disadvantage when experience is everything.

2 Responses to “Systems thinking”

  1. All I can think of is the Morecambe and Wise sketch:

  2. Marvin says:

    All I can think is Tacit Knowledge by Michael Polanyi, in his famous book Personal Knowledge

Leave a Reply