Analogies about God from the realm of Software Development

Miracles

As a developer of a piece of software, I completely control its behavior.  The “average” user of my software is restricted to using it in the prescribed fashion and abiding by its “rules”.  However, as the software developer – the “creator” of this software, I may know how to make the software to behave in ways that are not possible for the average user (a secret key combination to enter or a particular login ID or a particular URL parameter).  If an average user was asked if it was possible to perform certain actions with the software, they would say no.  If I were to demonstrate one of these “impossible behaviors” in front of that user they may call it a miracle.  However, since I, as the creator of the software, control the “natural laws” for my software, I can make it do anything I want – even violating the “natural laws” I put in place.

In the same way, God, the creator of the universe (all time, space, matter and energy), has put “natural laws” into place.  But at any time, God can temporarily alter or suspend those laws, causing what we would call a miracle.  Miracles are hard to believe, yes, but are philosophically rational because God is the one Who put the laws into effect in the first place.

Omniscience / Providence / Sovereignty

As a developer of software, I put logging, monitoring and instrumentation into my program.  When a user of my software performs an illegal action, hopefully I have foreseen that this will happen and I put error trapping in place with notifications to the user that they are doing wrong – the program does not just “die” every time the user performs an illegal action.

As a user goes about the business of using my software, each action they perform is logged with their user ID, which component they were interacting with and the exact time down to the millisecond when the action occurred.  At any time I want, I can get a complete “transcript” of a user’s session and activities.  If the user says that the software has not behaved correctly, I can ask them what they were doing and what data they were inputting.  I will certainly be able to tell if a user is lying to me because I have the complete transcript of what they were doing.  When a user commits an illegal action or a performance problem occurs, as the creator of this software, I have designed a mechanism to notify myself that the user is experiencing troubles. Since I’m aware of all “troubles” occurring in my software, I can choose to intervene in the situation by either silently correcting the issue without the user’s knowledge (maybe making a database update or granting special access to perform an action behind the scenes) or to send a representative to contact the user or in extreme cases, I may even directly appear to the user.  Or of course, I can choose to let the user struggle with the temporary issue, knowing that in the end, they will be able to accomplish what they need to accomplish and will not be “harmed” in the process.   The user may wonder how it is that I have this comprehensive knowledge of their activities when I’m not physically present with them.  Yet, I know about their activities and problems because they are operating in the “world” of my software (my creation).

In the same way, God, as the designer and sustainer (maintainer) of the universe, is aware of all “goings on” in His universe.  He can choose to silently correct problems on our behalves or to send a representative (messenger, angel or another person) to contact and help us or in extreme cases in history, He has even decided to appear directly to us.  Of course, He is always at liberty to just let us struggle through the issue that we’re having, knowing that in the end, it will not hurt us and may even improve our character.

Get your own dirt!

Software Developers use a language and runtime environment created by a “higher power” (e.g. in the case of Java, James Gosling – http://en.wikipedia.org/wiki/James_Gosling) and after having created a piece of software are of the opinion that they’ve truly created something; however, they are just re-combining existing software in new and different ways.

In the same way, genetic engineers and origin of life scientists think that they are creating new and different life forms or creating life from scratch, yet, they could not do what it is that they do without the existing materials (amino acids, proteins, DNA, and all other matter).  Those existing materials were created by God, but these scientists ignore the Creator of these materials that make their jobs possible.

This is illustrated well by the following popular story on the internet:

One day a group of scientists got together and decided that humankind had come a long way and no longer needed God. So they picked one scientist to go and tell Him that they were done with Him. The scientist walked up to God and said, “God, we’ve decided that we no longer need you. We’re to the point that we can clone people and do many miraculous things, so why don’t you just go on and get lost.” God listened very patiently and kindly to the man. After the scientist was done talking, God said, “Very well, how about this? Let’s say we have a man-making contest.” To which the scientist replied, “Okay, great!” But God added, “Now, we’re going to do this just like I did back in the old days with Adam.” The scientist said, “Sure, no problem,” and bent down and grabbed himself a handful of dirt. God looked at him and said, “Huh-uh! You go get your own dirt!”

God does not change, but does He change His mind?

When I write a software program, it can exhibit different behaviors and responses to events, user actions and data input. The program itself does not change – I write the code and deploy it and it may run for years without change, but conditional logic built into the program will cause a different response given different input.

In the same way, God does not change and does not “change His mind”. However, He has stated in His word that there are certain conditions under which He’ll behave differently based on the behavior of humans. Consider 2 Chronicles 7:14: If My people, who are called by My name, will humble themselves, and pray, and seek My face, and turn from their wicked ways, then I will hear from heaven and will forgive their sins and heal their land.

Notice the conditional logic in there? It could be written in java as follows:

if (people.humble() && people.praying() && people.seekingGod() && people.turnFromWickedWays()) {
God.setHearing(true);
God.forgiveTheirSins(true);
God.healTheirLand(true);
}

Also consider the story of Hezekiah in 2 Kings 20:1-6:
In those days Hezekiah became ill and was at the point of death. The prophet Isaiah son of Amoz went to him and said, “This is what the LORD says: Put your house in order, because you are going to die; you will not recover.” Hezekiah turned his face to the wall and prayed to the LORD, “Remember, O LORD, how I have walked before you faithfully and with wholehearted devotion and have done what is good in your eyes.” And Hezekiah wept bitterly. Before Isaiah had left the middle court, the word of the LORD came to him: “Go back and tell Hezekiah, the leader of my people, ‘This is what the LORD, the God of your father David, says: I have heard your prayer and seen your tears; I will heal you. On the third day from now you will go up to the temple of the LORD. I will add fifteen years to your life. And I will deliver you and this city from the hand of the king of Assyria. I will defend this city for my sake and for the sake of my servant David.’ ”

This is a great case of God hearing prayer and changing His course of action.

My point here is that while it is true that God does not change and does not change His mind, He does have conditions that He has promised to respond to.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s