This is the first time I have heard of this. For that reason, I appreciate that it was posted. Nevertheless, the author is greatly mistaken. I think we can reject most of what he says, without making too much effort, similar to how we would reject a conspiracy theory.
To pick out three things:
> Mechanism holds that every aspect of the world can be represented as a simple hierarchical structure of entities. But, while useful in fields like mathematics and manufacturing, this idea is generally worthless, because most aspects of the world are too complex to be reduced to simple structures.
Without trying to manage complexity, it becomes impossible to build real systems.
> Software, the book argues, is a non-mechanistic phenomenon. So it is akin to language, not to manufactured objects.
Well, yes, to a degree. But if you arbitrarily change a word in a 1000 page book, the book will not fall apart. If you do the same in software, most likely it will stop working. This is because there is much less dependence between sentences in natural language and the dependence is redundantly spread over many pages.
> The software elites have turned software into a weapon, a means to dominate and control society.
Sounds like a conspiracy theory too me.
Judging from the description, I also think the book lacks perspective. It's what a software engineer might expect the world to be, if he lives under a rock. Most of the world is doing just fine, and is just somewhat affected by software here and there.
>> Mechanism holds that every aspect of the world can be represented as a simple hierarchical structure of entities. But, while useful in fields like mathematics and manufacturing, this idea is generally worthless, because most aspects of the world are too complex to be reduced to simple structures.
>Without trying to manage complexity, it becomes impossible to build real systems.
Both of you are correct. The real world is too complex to be modeled, and without trying, you can't build a real system. The answer to the conundrum that real systems include humans, which can handle the hard-to-model parts.
The author appears to be using bombastic language to communicate what is actually a simple point. I see the technique used often. There's a method to the madness. It's the long-form version of "to get someone to give you a correct answer on the Internet, post a wrong answer rather than just ask." Spiritual books are often written like this. Without a blend of the overly pedantic and the utterly simple, the reader won't be compelled to dissect what the author has written and won't have the intended epiphany where the reader discovers it wasn't as simple as he thought.
This is also the impression i get from the first chapter where his point seems to be that no amount of hip software methodologies can replace an intelligent, experienced software engineer.
> Without trying to manage complexity, it becomes impossible to build real systems.
Managing complexity is necessary for human designers and the limitations of their brains. Nature appears to be able to evolve more and more complex mechanisms by random mutation + Darwinian selection. It remains an open problem if there is an upper bound for the level of complexity that such a mechanism is able to generate.
> Well, yes, to a degree.
Any computation is equivalent to the operation of a machine (as Turing and Church demonstrated). A computer program is a representation of the configuration of a machine.
The problem is that people underestimate how deep the concept of machine is (for example, by not being aware of Gödel's work).
> But if you arbitrarily change a word in a 1000 page book, the book will not fall apart.
This is a property of a type of program (the typical type that humans create). Many algorithms are known that can be much more tolerant to random perturbations (e.g neural networks). It just so happens humans are better at designing linear, synchronous mechanisms.
Seems it avoids conspiracy theory in the first few pages: "This book attacks the mechanistic myth, not persons. Myths, however, manifest themselves through the acts of persons, so it is impossible to discuss the mechanistic myth without also referring to the persons affected by it."
Skimming through the book, personally I'm sympathetic to its approach and would probably learn much from it. (I happen to disagree with very many conclusions, but fine.) The discussion of irrationality and mana in dev seems useful... and morbidly hilarious.
>> similar to how we would reject a conspiracy theory
I fully agree that this book is lacking in rational arguments. But I IMHO you are not using the phrase "conspiracy theory" correctly. There are a lot of conspiracies out there. E.g. the wage fixing between Google, Oracle and Microsoft is on the YHN front page today.
I would call reductionism and logical positivism the baseline assumed perspective in much of science - definitely in biology, the field with which I am most familiar. So they're very much alive and well in science.
As far as philosophy, the philosophers most closely associated with science and the 'New Atheists', e.g. philosophers Dennett, Churchlands, adopt more sophisticated versions of these philosophies but I'd still call them a variety of reductionist/logical positivist.
Interesting. I thought at least physicists only viewed their models constructs that have predictive capabilities, but aren't concerned whether their models actually represent reality in an objective/ontological sense (to say nothing 'meaning' in the LP sense). I'm sure there are different camps of folks out there especially in the different branches
Based on what I've skimmed, which is admittedly not that much, I'd bet the author spends most of the book making mind projection fallacies like this one:
> while we can easily recognize a familiar face, we cannot describe that face precisely enough to enable someone unfamiliar with it to recognize it as easily as we do (see pp. 110–111). Thus, when we know a face, we possess a type of knowledge that cannot be expressed as methods or rules. We can readily use this knowledge, but we cannot explain how we do it. What this means is that the only way to acquire this knowledge is by allowing it to develop in our mind; we cannot acquire it by learning some facts. [...]
> [...]
> For a phenomenon that is a complex structure, the only exact representation is the phenomenon itself.
Here the human inability to directly introspect on how we recognize faces is explained as an underlying facet of reality. A fact about faces, instead of a fact about the limitations of our mental architecture. That's why no one has ever been able to write facial recognition software that works even a little bit /s.
It would be wrong for me to say the book is not worth your time, because I haven't read enough of it to make that judgement, but I can honestly say I expect it to not be worth my time.
(Also I want to complain about a minor error the author keeps making again and again: stating that scientific explanations form hierarchies. This is simply wrong. The graph of we-use-X-to-explain-Y isn't a tree, it's a directed acyclic graph. For example, consider jet airplanes, chemistry, aerodynamics, and physics.)
I got as far as 36ish where he decided that all extant academic study of the mind is an exercise in futility and that mathematics is incapable of representing nondeterministic phenomena. (Gee. Warn the psychologists, warn the statisticians, tell them all to stop wasting their time.)
It seems like the author realizes that behavior of complex and chaotic systems is really hard to reason about and model accurately (he calls out sociological systems, which also are lovely and heterogenous), and I guess reasoning about complex software is similar. Sure. But he tries to parlay that into a quasi-spiritual characteristic of the systems rendering them immune to simulation, instead of a limitation of our current capacity to efficiently construct models.
After a quick skim, I would recommend Master and his Emissary as a book with similar themes about the limits, dangers and over-dominance of reductionism and mechanistic views of reality, but significantly better written and argued and ultimately much broader (although not focused specifically on software). An introduction can be found here:
Written by Andrei Sorin. Published by "Andsor Books".
Uh oh.
This guy is obsessed with hierarchies and taxonomies.
His rant on Software Irresponsibility, starting at page 828, has some good points. He starts out with "Partial or total software failures are such a common spectacle that they are now taken for granted. ... In most cases we know the actual individuals involved in its development, purchase, or installation; but we don’t feel that these individuals must be reprimanded, that they are accountable for their work in the same way that physicians, pilots, or engineers are for theirs. In other professions we have the notions of incompetence, negligence, and malpractice to describe performance levels that fall below expectations. In software-related matters, and particularly in programming activities, these notions do not exist."[1]
He has a point. Compare, say, the NTSB report on an aircraft accident with a DHS US-CERT report on a blatant software security hole. The NTSB will name names and assign blame. Careers can be ended and licenses pulled by those reports, even though the NTSB has no law enforcement power. Now look at a US-CERT report for a company which knowingly and willfully put a default password into millions of products. Was the responsible manager located and identified? Were there sanctions against the company?
A point I've made about security bugs in open source - who put them there? That should be made known, and it should be a significant career setback. Yet the identities of those at fault are seldom mentioned.
Obviously what we need to do is abandon the algorithmic model of software and switch to a synchronous, signal-based model, as used in electronics and described in the Biblical account of how the human brain works. Then all software complexity problems will magically disappear, just like that.
Reading parts of this may cause a knee-jerk reaction, because mechanistic thinking is so useful to us in engineering!
What I essentially see in this is a reminder -- that it is easy to conflate how we look at something with what something actually is.
This is why it is important to be able to step back and understand how you are thinking about a phenomenon, and to generally cultivate an internal library of different methods of thinking.
22 comments
[ 4.5 ms ] story [ 54.4 ms ] threadTo pick out three things:
> Mechanism holds that every aspect of the world can be represented as a simple hierarchical structure of entities. But, while useful in fields like mathematics and manufacturing, this idea is generally worthless, because most aspects of the world are too complex to be reduced to simple structures.
Without trying to manage complexity, it becomes impossible to build real systems.
> Software, the book argues, is a non-mechanistic phenomenon. So it is akin to language, not to manufactured objects.
Well, yes, to a degree. But if you arbitrarily change a word in a 1000 page book, the book will not fall apart. If you do the same in software, most likely it will stop working. This is because there is much less dependence between sentences in natural language and the dependence is redundantly spread over many pages.
> The software elites have turned software into a weapon, a means to dominate and control society.
Sounds like a conspiracy theory too me.
Judging from the description, I also think the book lacks perspective. It's what a software engineer might expect the world to be, if he lives under a rock. Most of the world is doing just fine, and is just somewhat affected by software here and there.
>Without trying to manage complexity, it becomes impossible to build real systems.
Both of you are correct. The real world is too complex to be modeled, and without trying, you can't build a real system. The answer to the conundrum that real systems include humans, which can handle the hard-to-model parts.
The author appears to be using bombastic language to communicate what is actually a simple point. I see the technique used often. There's a method to the madness. It's the long-form version of "to get someone to give you a correct answer on the Internet, post a wrong answer rather than just ask." Spiritual books are often written like this. Without a blend of the overly pedantic and the utterly simple, the reader won't be compelled to dissect what the author has written and won't have the intended epiphany where the reader discovers it wasn't as simple as he thought.
Managing complexity is necessary for human designers and the limitations of their brains. Nature appears to be able to evolve more and more complex mechanisms by random mutation + Darwinian selection. It remains an open problem if there is an upper bound for the level of complexity that such a mechanism is able to generate.
> Well, yes, to a degree.
Any computation is equivalent to the operation of a machine (as Turing and Church demonstrated). A computer program is a representation of the configuration of a machine.
The problem is that people underestimate how deep the concept of machine is (for example, by not being aware of Gödel's work).
> But if you arbitrarily change a word in a 1000 page book, the book will not fall apart.
This is a property of a type of program (the typical type that humans create). Many algorithms are known that can be much more tolerant to random perturbations (e.g neural networks). It just so happens humans are better at designing linear, synchronous mechanisms.
Skimming through the book, personally I'm sympathetic to its approach and would probably learn much from it. (I happen to disagree with very many conclusions, but fine.) The discussion of irrationality and mana in dev seems useful... and morbidly hilarious.
I fully agree that this book is lacking in rational arguments. But I IMHO you are not using the phrase "conspiracy theory" correctly. There are a lot of conspiracies out there. E.g. the wage fixing between Google, Oracle and Microsoft is on the YHN front page today.
As far as philosophy, the philosophers most closely associated with science and the 'New Atheists', e.g. philosophers Dennett, Churchlands, adopt more sophisticated versions of these philosophies but I'd still call them a variety of reductionist/logical positivist.
http://www.scientificamerican.com/article/a-meta-law-to-rule...
> while we can easily recognize a familiar face, we cannot describe that face precisely enough to enable someone unfamiliar with it to recognize it as easily as we do (see pp. 110–111). Thus, when we know a face, we possess a type of knowledge that cannot be expressed as methods or rules. We can readily use this knowledge, but we cannot explain how we do it. What this means is that the only way to acquire this knowledge is by allowing it to develop in our mind; we cannot acquire it by learning some facts. [...]
> [...]
> For a phenomenon that is a complex structure, the only exact representation is the phenomenon itself.
Here the human inability to directly introspect on how we recognize faces is explained as an underlying facet of reality. A fact about faces, instead of a fact about the limitations of our mental architecture. That's why no one has ever been able to write facial recognition software that works even a little bit /s.
It would be wrong for me to say the book is not worth your time, because I haven't read enough of it to make that judgement, but I can honestly say I expect it to not be worth my time.
(Also I want to complain about a minor error the author keeps making again and again: stating that scientific explanations form hierarchies. This is simply wrong. The graph of we-use-X-to-explain-Y isn't a tree, it's a directed acyclic graph. For example, consider jet airplanes, chemistry, aerodynamics, and physics.)
It seems like the author realizes that behavior of complex and chaotic systems is really hard to reason about and model accurately (he calls out sociological systems, which also are lovely and heterogenous), and I guess reasoning about complex software is similar. Sure. But he tries to parlay that into a quasi-spiritual characteristic of the systems rendering them immune to simulation, instead of a limitation of our current capacity to efficiently construct models.
http://www.iainmcgilchrist.com/The_Master_and_his_Emissary_b...
https://www.kirkusreviews.com/book-reviews/andrei-sorin/soft...
This guy is obsessed with hierarchies and taxonomies.
His rant on Software Irresponsibility, starting at page 828, has some good points. He starts out with "Partial or total software failures are such a common spectacle that they are now taken for granted. ... In most cases we know the actual individuals involved in its development, purchase, or installation; but we don’t feel that these individuals must be reprimanded, that they are accountable for their work in the same way that physicians, pilots, or engineers are for theirs. In other professions we have the notions of incompetence, negligence, and malpractice to describe performance levels that fall below expectations. In software-related matters, and particularly in programming activities, these notions do not exist."[1]
He has a point. Compare, say, the NTSB report on an aircraft accident with a DHS US-CERT report on a blatant software security hole. The NTSB will name names and assign blame. Careers can be ended and licenses pulled by those reports, even though the NTSB has no law enforcement power. Now look at a US-CERT report for a company which knowingly and willfully put a default password into millions of products. Was the responsible manager located and identified? Were there sanctions against the company?
A point I've made about security bugs in open source - who put them there? That should be made known, and it should be a significant career setback. Yet the identities of those at fault are seldom mentioned.
[1] http://softwareandmind.com/extracts/Software_and_Mind.pdf
http://www.ntsb.gov/investigations/AccidentReports/_layouts/...
What I essentially see in this is a reminder -- that it is easy to conflate how we look at something with what something actually is.
This is why it is important to be able to step back and understand how you are thinking about a phenomenon, and to generally cultivate an internal library of different methods of thinking.