Order An Introduction to General Systems Thinking

Item Description: Introduces ways of thinking about systems, and points out analtytical pitfalls

Review Synopsis: A book that will help you, indeed make you, think

Author: Gerald Weinberg
Order An Introduction to General Systems Thinking, Silver Anniversary edition

If I had to describe the message that this book gets across in three words, I would say “Context is important”. This should be familiar to any Perl programmer.

The book is based on a course that the author ran, and he admits that many people don’t get a lot out of it. I must admit, a lot of the ideas in the book left me thinking “well, I knew that anyway”. I thought the same from time to time about The Pragmatic Programmer, but as with that book, it’s good to have it all in one place, and to be forced to think about the issues again, and in new ways.

Systems Thinking is a meta-discipline (my description) that studies all kinds of systems. Financial, architectural, social, software development, scientific, artistic, ST has something to say about them all. It attempts to identify rules that apply in many disciplines, and even rules about rules. For example, “The principle of indifference: Laws should not depend on a particular choice of notation”.

The author’s style is witty and clear, a joy to read. One of the most memorable examples points out a problem with analysing English grammar:

“Time flies like an arrow.”
“Fruit flies like a banana.”

It is difficult to explain the attraction of this book. All I can say is, I enjoyed it immensely, and I feel that it will bring benefits to my thinking, even if I am not aware of them. I highly recommend this book.

This review is based on the original 1975 edition, which I acquired just before I found out that the book was to be re-released in a Silver Anniversary edition.


  • Comment on An Introduction to General Systems Thinking
Replies are listed 'Best First'.
Re: An Introduction to General Systems Thinking
by perlmoth (Hermit) on Sep 25, 2003 at 19:53 UTC
    I wrote the following code to implement the OCCULT membership system as outlined in chapter 6:
    #!/usr/bin/perl -w use strict; use diagnostics; $|++; my $total = 20; my @members = map int rand 10, (1 .. $total); my @pointers = (" ") x $total; my ($teacher, $pupil); print "@members\n"; for (1 .. 50) { do { $teacher = int rand $total; $pupil = int rand $total; } while $teacher == $pupil; $pointers[ $pupil ] = "V"; $pointers[ $teacher ] = "."; $members[ $pupil ] = ($members[$teacher] * $members[$pupil]) % 10; print "@pointers\n@members\n"; $pointers[ $pupil ] = " "; $pointers[ $teacher ] = " "; }