My son, 22, has wondered about the Free Orthodox Software web site:
-- What is in common between faith and programming?...
I didn't give him a satisfactory answer except that both are about truth. And that wasn't good enough: we owe satisfactory answers to the young people. So, let me try now.
I have been programming computers for quite a while -- much longer than he's been seeing sunlight. First as a matter of learning, later as a game and mental entertainment -- what is properly called phoney science, -- later for material gain, to support my family. But then my family blew up in my face, and all that material gain came crushing on top of my head... Since then I haven't earned a cent by programming. I was unloading trucks for UPS (and yes, I was a member of Teamsters' union!), then designing jewelry catalogs, and now I am teaching fire alarms: duties hardly related to programming. But it is precisely since then that I have grown to understand and appreciate programming as a venerable craft, an agency of man's creativity as well as that of the soul development. To be sure, that can be said about any real craft -- but I will speak of what I know.
So, in which way programming is related to the Christian faith? What is it to computer software that can make it Orthodox -- or non-Orthodox, if things are not the way they should be? I've found six separate items -- same in number as the Six Days of Creation.
1. In the beginning let me repeat what I said to my son: programming is literally hinged on the notion of truth. This is visible on all levels, from design to writing code to testing to handling bugs: what an ax is for a logger, what an awl is for a cobbler, clarity of mind is for a programmer. As the result, he is the hardest to dupe: that's why there are so many programmers among the newcomers in the Church.
Dependency on truth might not seem like a distinctive feature, but in the Clinton era it certainly is, and the young people ought to be keenly aware of that. Those who are not aware will pay the price -- I don't mean a price in software business, but a huge price in personal business.
2. Once you are anchored in the truth, you will notice something else directly related to it: coherence and consistency. Exactly as in the Christian world view, everything makes sense in programming. You cannot know everything, but you can dig and find out. If there is an error, it also makes sense; moreover, programmer's duty is to find errors by making observations and drawing conclusions, and then to eliminate them, -- just like in our everyday lives.
3. Coherence and consistency bring about the utmost sense of responsibility. In programming there is nothing hidden, nothing impersonal, nothing "just the way it is". You write the code, and it remains exactly as you have it written: no wear, no tear, no shrinkage, no annihilation -- forever. True, no one might notice what you have done, but when we say "no one", we are not completely honest.
4. Like no one else, programmer knows what computers are all about. Don't tell a programmer that "computer has done" something: for him it is like "screwdriver has turned" a screw. And such understanding of computer's nature brings about unique understanding of the human nature. Of the three factors ascribed to the human nature -- emotions, intellect and will -- we have always known that we share emotions with higher animals. But it is only now, as we speak, that we are grasping to which extent we share our intellectual abilities with computers -- man-made programmable devices.
This is the end of rationalism as we know it: driven by intellect alone, man descends to the level of a machine -- precisely as driven by emotions alone he descends to the level of beasts. And this is also a proof that will is the centerpiece of the human nature -- free will through which the soul is endowed with both freedom and accountability.
5. With the knowledge of the human nature, programmer acquires certain distinctive professional features which are equally distinctive as personal features of a Christian: humility and patience. Why does that piece of software miss the quality mark? Because you have programmed it this way. You have missed the mark, it is your amartia -- your sin. You test your program, you examine your code, and finally you see it, clearly and unambiguously, like nowhere else. It might be something very trivial, like an "=" instead of "=="; you are so happy, you correct the error, re-build your program, test it -- and it does not work again. Yes, you have found something, but that's not it: there is another reason for trouble. Keep searching.
Or, sometimes, you review your design, and it's as if a ray of sunlight cutting through the clouds. But you are not happy at all. In fact, your hair are raising with horror: you realize that you've screwed it up big time. It is not going to work this way!... How could you have possibly done that?... Anyhow, you ought to redo your entire job, and the time to start is now. Sounds familiar?
6. Finally, there is an aspect of programming, widely known but rarely discussed and acknowledged, totally unexpected by the outsiders: beauty. Beauty and quality are closely related, but quality can be seen and measured from outside by the end user, while beauty cannot. Beauty is human dimension in programming. The notion of beauty puts the programmer in the same relation to his software as the Creator is related to the creature. The sense of beauty confirms that man, indeed, is the image of the Most High.
Programmer in his everyday work touches upon the mystery of creation. This awesome fact ought to be tackled with extreme caution -- but it is not by incident that the gift of humility is so generously offered to programmers. Start gaining the sense of humility, and the sense of beauty will open up for you.
God has created universe out of nothing by the word of His mouth. Impossible? Ask the programmer. I am sitting here at the kitchen table, thinking. Then I get up, go to the computer and call to existence something which did not exist before. And behold, (it is) very good.