Have you ever used a (software) product that just felt and/or looked like it wasn’t finished? That had kind of an unpolished feel to it, rough around the edges and minor or even major issues? One that you knew had great potential because you enjoyed using some of its features and could have been a big winner if not for those shortcomings?

Well that is what life feels like to me.

Before I continue, I’d just like to make it clear that for the rest of this post, I’m going to assume that god exists and that I’m going to look at certain things from the perspective of the bible.

With that out of the way, let me state right away that I think god has got to be a very lousy designer and engineer. I’m not sure how they refer to his occupation in heaven, but I’m going to simply compare it to an engineer to make the comparisons I’m going to make easier.

You see, the way I see it, is that god is like one of those smart arrogant programmers who think they created this incredible program that is a testament to how much of a genius they are. They obviously put a lot of work into it, spent days wrestling with some difficult problems, came up with some very clever solutions and finally managed to make it all work. And although the program works, and works well, it is far from ready from an end-user perspective. It only works as intended when you follow the exact procedures given by the programmer in the exact same conditions the programmer expected it to work in. For example, if you press some buttons in the wrong order, or click some menu options you weren’t supposed to click at a given point (even though they were enabled, leading you to think it was okay to click them), the program explodes, possibly in a very spectacular way and in the worst case bringing the whole operating system down with it in the process.

What is clear from this example is that even though major functionality was already implemented by the programmer, from a usability and end-user point of view it still needed work. And depending on the type of program, that could still mean quite a lot of work. It also has to be tested in various situations, all the features have to be tested when used in various sequences and possible combinations etc. Basically everything an end-user might try to do with it. The program also has to protect the end-user from himself by not allowing (disabling) functionality that should not be used at a given moment, especially when you know it might cause unexpected behavior inside the program and cause a lot of inconvenience to the end-user. The smart arrogant programmers don’t like to work on these kinds of ‘unimportant’ and tedious things. If something breaks, obviously the user didn’t follow the right procedures (even though the program actually allows the user to try all the wrong procedures possible).

So with that in mind, when we look at life, there are so many problems to point out from an end-user point of view, us being the end-users. Reality is just full of problems and unexpected and undesired behavior, or just bugs, if you will. For example, sometimes the weather acts up and produces storms causing a lot of destruction to the work of end-users. This, of course, is not normal behavior as the weather is expected to be nice all the time by the end-user, and the bugs just happen sometimes under certain conditions. The same can be said about floods, tsunamis, earthquakes etc. The end-user expects it to rain, yes, and normally it just rains enough to keep life going, but sometimes, under certain conditions, a bug causes too much rainfall causing floods that destroy the work of end-users. In severe cases it even takes the lives of end-users, which, I think, is the worst possible bug a product can have. Imagine the class-action lawsuits that would have been filed if it was possible to sue god. Of course that’s not possible since he can’t be held accountable, which enables him to keep the arrogant attitude of “you’re just going to have to use it as is, and I’m not fixing anything.” Having a monopoly in life also helps. I mean, if we end-users could go to another provider for life, that’d give god some incentive to improve the life he offers, right? As it is now, we’re pretty much stuck with what he offers us.

But okay, I’m moving too far away from the subject. I was talking about the various bugs in life. You often hear people talk about what kind of genius it would take to design something like the human body for example. And yes, I have to admit, it takes a lot of genius to design and build something like the human body. But once again, it is far from finished. There are numerous bugs and even security vulnerabilities. Sometimes bugs cause women to give birth to disabled children. Bugs cause people to get cancer, suffer and die. Due to security vulnerabilities, viruses, for example, are able to install themselves in the human body and cause all kinds of diseases, disabling major functionality, causing system instability and possibly leading to a complete system failure. Etcetera, etcetera. I’m sure you can name thousands of bugs yourself, all of which shouldn’t be part of the user experience, and only cause inconvenience to the end-user. Had god taken the extra time to do some extensive testing before deploying life, we’d probably not be experiencing all of these problems. And I haven’t even mentioned design issues yet. Have you ever heard the joke that asks, with regard to the human body: “What kind of designer would put a waste dumping area next to a recreational area?” Need I say more?

And like any end-user facing such issues with a product, we’re trying to find solutions and workarounds to the various bugs, but there are limitations to the things we can do as end-users. For one, we do not have the source code to life. It would sure make things easier if we had that. So we’re stuck having to try and reverse engineer as much as we can of life to see how things work, and try to come up with solutions to the bugs we’re having to deal with everyday. It might be difficult for us end-users to repro such bugs and find actual causes, but I can imagine that god almost certainly is able to debug reality and find what is causing all the issues very easily. Not necessarily because he is smart, but simply because he has the tools and the source code. Of course, being as arrogant as he is, and having a monopoly, we shouldn’t be expecting him to put any effort into it.

You see, what actually happened in god’s case, is the worst thing that can happen to one of those smart but arrogant programmers who don’t like to work on the small ‘unimportant’ and tedious things. God created this really great product, started boasting about how he’s so cool and smart, and how incredible life is going to be, when the product wasn’t even tested yet. In addition, god designed life with the intention to be very scalable, but never actually did any tests to make sure it would scale well to billions of users. What he did was do an initial deployment in a very small environment (Eden) with only two users (Adam and Eve) who just followed the exact operating procedures and used life exactly the way god intended it to be used, at least in the beginning. And as we all know end-users are very unpredictable, and given the possibilities to use a feature or combination of features in a given way that makes sense to them, they’ll do it and expect it to work properly.

So after the initial deployment, things worked well in the beginning, and god was proud of himself, boasted about how big of a genius he was, how he was almighty etc. But then the users got more experienced and didn’t feel like constantly reading the manual anymore. And as we all know at this point, then things started to get more interesting. In addition to that, more users started to use life, and the weaknesses became more evident as the number of users grew. The growing amount of users made it necessary to expand the deployment of life beyond Eden and to the rest of the world, which brought along other problems with it. You see, it’s one thing to do a small deployment of a product on 2 computers for example, but it’s an entirely different story to deploy to an enterprise with thousands of users around the world in various locations. And in god’s case, it was far, far, faaaaar worse, as I’m sure you can imagine.

Imagine the technical support nightmare god created for himself. Just imagine the scale of it. When was the last time you called for support, or prayed, and actually got an answer from god? He doesn’t even have an answering machine! And he’s supposed to be almighty? With billions of people, and who knows what other creatures, calling in for help at any given moment because of the countless issues with their life, it should be easy to imagine why god never answers.

So what can we learn from all of this? Apart from the fact that one can clearly see that I have way too much free time, we can also see that it can sometimes be easy to make mistakes. Sometimes we even knowingly make mistakes. Sometimes those mistakes are because of our own stupidity. Sometimes we make mistakes, but have too big an ego to admit it and correct it. Everyone makes mistakes, but the important thing is to be able to realize you’re making a mistake as quickly as possible, as early as possible, and have the guts to immediately admit to it, and having done that do everything possible to correct it or minimize the damage done by it.

If god had admitted to himself and all his users that life wasn’t ready for universal deployment, and had he then stopped the deployment to work on fixing issues when it was already clear there were issues during the initial smaller deployment in Eden, we would not have this mess today. Instead, he was arrogant, didn’t want to admit that the problems existed, and went ahead with the deployment. Now it will take a much greater effort on his part to fix the user experience for the billions of users he has today. This is of course assuming he will admit that life as it is now sucks, and that he will listen to his users. A service pack to this version of life is long overdue in my opinion.

But I have to admit that when I look at life, I see great potential. I see a runaway hit. If only god would work on fixing the bugs and polishing it a bit more so we could have a much more improved overall user experience…