This nearly infinite flexibility of software, I have concluded, is why objective software design evaluation is nearly impossible: there is no objective reality inside software. This is the secret cause of all the debate headaches. We might as well be a bunch of loonies in the mental hospital arguing over which one of us is the real or best Napoleon. The difference is that in cyberspace we can all be Napoleon. Some have suggested that the reasons for lack of objective metrics are because we don’t know enough yet; that we just haven’t learned how or what to measure. Instead, the problem is that we can manufacture what we “know”. Today you are Santa Clause, tomorrow Cleopatra. This can be both in a literal sense, such as a role-playing game, or a figurative sense, such as software organization principles.
The argument here is that software design cannot be objectively evaluated because there is no optimum design or physical reality to which the process can be compared. Therefore, the methods for evaluating it become a matter of pragmatism: does it work, and how well does it work? However, if the software needs to be maintained or adapted because of new user requirements, new hardware, new algorithms, etc., then there is also the problem of reconfiguring it:
One of the reason the innards do matter is because different programmers have to maintain (fix or change) software code made by others. Using our God analogy, if God goes on vacation or retires, then his replacement needs to know how the world works in order to keep it running.
Also, this leads to the idea that if the process can be done more efficiently, then the best software can be more quickly discovered:
If virtual words can be built, changed, and debugged faster, then companies can save money and hopefully make the economy more efficient.
The point of this article, though, is simply to show that software design is more like math than science, insofar as it proceeds logically from a set of premises and operations, and is not necessarily tied to physical reality for evaluation of its ideal truthfulness. Nevertheless, some computer science premises are accepted as better than others:
This is similar to the purpose of the CS idioms we talked about. They have been road-tested. Any major inconsistencies or problems would have already been discovered by now, and smaller ones get incrementally fixed over time, or at least better understood so that workarounds are documented. Maybe there are revolutionary idioms that we have yet to discover that provide new and different ways to get the answer. But at this point we don’t know and can’t tell…. We might perhaps be able to test that one has learned how to use an idiom to some extent, but that does not necessarily say if it is the best idiom let alone the best possible idiom…. There may be an easy tweak that we just have yet to stumble upon. We just don’t know what we don’t know…. If one can perfect a new idiom by working out the bugs and oddities or better understanding it, then it can enter into the realm of useful idioms to choose from. It provides us with more options to use in our virtual worlds.
So, the article carries through a theme that ultimately the software designer makes a subjective decision about what is best:
- The only limitation is the imagination of the creator of the virtual world.
- My personal observation in combination with bits of Edward Yourdon’s studies suggest that the paradigm or language that a given developer is most comfortable with is the one that makes them the most productive.
- Going back to our god analogy, without some other universes to compare to, it is hard to create a universe from scratch.
- Inconsistencies like this may not matter much on scripted TV, but if somebody creates a world with such contradictory rules and tries to “run” it … then the inconsistencies start to bite…. As a virtual god, we won’t like the world that we created. It does not have the desired output (entertaining plots in this example).
- Variety may also allow more people to participate in world-building because there is a greater chance that an idiom can be found to match a given person’s personality and cognitive approach.
All of this may be seen as a parable about God, evolution, and Open Theism. For those who have eyes to see, let them see.