Software and Mind Blowing
There's a 3-inch-thick book sitting on my desk that I just finished reading. It took me about 3 days - ok, I skipped a little here and there, but mostly, I was glued to it.
The line on the back cover convinced me to buy it: "Programmers rely on worthless theories, development environments and ready-made pieces of software, instead of programming and improving their skills".
The book is "Software and Mind" by Andrei Soren.
Over the course of 927 pages, I was introduced to a bunch of new concepts that at first didn't seem to have anything to do with programming. There's a section on anthropology, then a clear description of something called "Karl Popper's principles of demarcation", (glad to know about that) and a finally what the author calls the "mechanistic myth".
From my understanding, this myth is the assumption that all sorts of phenomena can be explained by breaking them up into smaller and smaller pieces. If you get to the lowest level and find the smallest little bits, you can combine them and create anything.
If only it was that easy. As it applies to software, processes composed of simpler processes do not always work as planned. Products that promise to be easy to use often turn out to be more complicated than just writing code in the first place.
The software theories singled out as examples are Structured Programming, Object Oriented Programming and the Relational Database model. All of which I had assumed had been carved in stone by ancient software gods.
But as I read further, I began to see the cracks in these edifices. I had to agree that attempts to eliminate the need for "coding" often created more problems than they solved.
There is a good analogy in the book: What if we couldn't use words in conversation, but had to depend on premade sentences. We would have a really hard time expressing ourselves. He compares large software structures with sentences, and code with words. This is true from my own experience.
Recently, working with a popular CMS, I realized that I spent a lot of time working around the enormous modules designed to help the user avoid code. However, the user was required to learn a lot of complicated rules anyway.
I often thought wouldn't it would be easier to code the whole thing from scratch and add their content for them.
This book was not only full of useful insights into the practice of computer programming, but into the hidden assumptions we make about technology and science, and altogether a wonderful distillation of a lifetime of observation and insight.
GO TO Amazon and buy this book!