There Is Always Another Way
In Software engineering there usually is more than one way to achieve a goal however there are the places where there is exactly one way, and nobody calls that a design flaw. Noah's ark was one of those.
By Dumebi ยท
Dry land...
There is a man on a field, and he is building a boat.
Not by a river. Not by the sea but on a field, on dry ground, in a country where it has never rained the way he keeps saying it is going to rain. He has been at it a long time, long enough that the people who laughed at him when he started have had children, and those children have grown up and learned to laugh at him too.
Let us look at the numbers and it is important because a lot of people tend to skip the numbers.
Three hundred cubits long, fifty wide, thirty high. A cubit is roughly the distance from a grown man's elbow to the tip of his middle finger, call it eighteen inches, so that comes out around four hundred and fifty feet by seventy five by forty five. Three decks. For scale, that is a bit longer than a football pitch and about four storeys tall, made of timber, cut and fitted by hand, by just one family.
And here is a detail that we may or may not skim over when we read the story. It is not a ship! It has no rudder. No sail, no oars, no mast, no keel worth the name, and no destination. You cannot steer it. It was never built to go anywhere.
It is a box that floats. Its entire job is to keep what is inside, inside.
Hold on to that "box", because we are going to try and see if there is a connection between faith and software engineering and the two ideologies meet in a place I did not expect. Stay with me.
One door
Here is the specification. It is worth reading slowly, the way you would read a ticket somebody clearly took care over.
Make thee an ark of gopher wood; rooms shalt thou make in the ark, and shalt pitch it within and without with pitch. And this is the fashion which thou shalt make it of: The length of the ark shall be three hundred cubits, the breadth of it fifty cubits, and the height of it thirty cubits. A window shalt thou make to the ark, and in a cubit shalt thou finish it above; and the door of the ark shalt thou set in the side thereof; with lower, second, and third stories shalt thou make it. - Genesis 6:14-16
Read the end of it again. The door of the ark shalt thou set in the side thereof.
The door. Singular. Three storeys, one door.
I have seen enough specifications to know what that is. When a spec says "the door", not "doors", and never mentions a second one anywhere in the rest of the account, that is not an omission. Somebody would have caught that in review. That is the design.
And when the time came, that door was shut. Not by Noah, because Noah was inside. Someone else closed it, from the outside, and once it was closed there was no handle on the other side, no service hatch round the back, no window low enough to climb through. One way in, and then no way in.
Now, the people outside. This is the part I find hard, and I am not going to pretend otherwise.
They were not judged on their swimming. Some of them were surely strong swimmers. Some of them had boats, real boats, boats with rudders. Some of them climbed, and there is always higher ground right up until there is not. Some of them, I have no doubt at all, prayed very sincerely on the last day. The water did not weigh any of it. There was one thing that worked, and it worked completely, and everything else failed completely, and there was nothing in between.
Now the engineer in me objects
I want to be honest about my first reaction to that, because I doubt I am the only one who has it.
If you showed me a spec for something related with a single entry point and no second one, I would leave a comment on the ticket. Single point of failure. No failover. No plan B. What happens when the door jams? Where is the redundancy? We have so many words for these types of situations: resilient, fault tolerant, highly available. A system with exactly one way in is a system one bad day away from being a system with no way in.
But it goes deeper than architecture, and this is the bit I want to sit on for a second.
Software is a field built on the belief that there is always another way.
Perl had an actual motto for it: there is more than one way to do it. There are at least six reasonable ways to reverse a string, and engineers will happily argue about them for an entire afternoon. REST or GraphQL. Postgres or Mongo. Monolith or microservices. Tabs or spaces (and if you said spaces just now, we can still be friends, but only barely) ๐. If you ask a senior engineer almost any technical question the first two words out of their mouth will be "it depends", and they are not dodging you, they are being accurate. Most questions in the job genuinely do have several right answers, and the skill is picking the one that fits the situation in front of you.
We are trained into pluralism, and we should be. It has made our software better.
So when somebody tells me there is exactly one way to God, the trained part of me reaches for the same review comment. Surely not. Surely there is an alternative implementation. Surely if I am sincere enough, or good enough, or clever enough, I can come in from another direction, because I always can everywhere else.
Enter ye in at the strait gate: for wide is the gate, and broad is the way, that leadeth to destruction, and many there be which go in thereat: Because strait is the gate, and narrow is the way, which leadeth unto life, and few there be that find it. - Matthew 7:13-14
I hope you are still with me, because we are going to turn this whole thing around.
Where software runs out of ways
Here is something about being a software engineer you know but don't pay much mind to it until you go looking for it.
There are places in software where there is exactly one way in. No alternative, no fallback, no clever workaround. And not only do we accept that, we would be appalled at anybody who tried to add a second one.
For example take a private key.
If you take away the mathematics (and I hope I dont offend anyone by that) what is happening is this: you generate two very large numbers that are related to each other in a particular way. One of them you publish to the entire world and genuinely do not care who has the number. The other number you keep, and you keep it if possible in a vault because you don't want anyone knowing what it is. It is a private number. When you want to prove you are you, you use that private number you kept to make a mark on a message, and anybody at all can take the published number and check that the mark could only have come from whoever holds the other half.
If you check the number of ways you can go there is only one. You have that private number (key), or you do not.
There is no second private key. There is no "well, I know most of it". There is no alternative implementation, no fallback path, no support line you can ring to explain that you are definitely yourself and you have just misplaced the key. Sincerity does nothing here. Effort does nothing. Being a decent person does nothing. The door opens or it does not, and what opens it is one specific thing that you either have or you have not!
Nobody in the history of software industry has ever filed a bug asking for a second way to prove they are themselves. We do not call that a limitation. We call it security, and we sleep better because of this security.
Or take the certificate your browser checks when you visit your bank. Your browser does not negotiate. It does not weigh things up. It does not think, well, this certificate is nearly right, the site seems legitimate, the logo looks correct, let us proceed. It follows the chain upward to a root it already trusts, and either that chain holds the whole way or you get a full page of red and a warning you have to click past on purpose.
That is not a fault tolerant design. That is a door with one key, and we build it that way deliberately.
The pattern nobody says out loud
Line those two halves up next to each other and something falls out.
The number of acceptable ways to do a thing collapses as the stakes rise.
Where being wrong is cheap and recoverable, we permit a hundred ways, and we are right to. Nobody has been harmed because you reversed a string with a loop instead of a built in function. If you pick the wrong database you will have a rough eighteen months, then you will migrate, and eventually it becomes a talk you give at a conference.
But where being wrong is not permitted, we permit exactly one way, we defend that one way, and we call anybody who wants a second one careless. Not narrow minded. Careless.
Which means the objection you might be making was never really the objection you thought it was. You and I already believe in exactly-one-way. You build with it. You insist on it, everywhere correctness is not negotiable, and you have never once felt oppressed by it.
So the honest version of the complaint we make is smaller than the one we make out loud. It is not "how dare there be only one way?!". It is "who gets to decide which one it is?". That is a completely different argument, and it happens to be the one actually worth having.
Neither is there salvation in any other: for there is none other name under heaven given among men, whereby we must be saved. - Acts 4:12
What the ark was actually for
The New Testament picks the ark back up centuries later and says plainly what it was.
Which sometime were disobedient, when once the longsuffering of God waited in the days of Noah, while the ark was a preparing, wherein few, that is, eight souls were saved by water. The like figure whereunto even baptism doth also now save us (not the putting away of the filth of the flesh, but the answer of a good conscience toward God), by the resurrection of Jesus Christ. - 1 Peter 3:20-21
A figure. A picture. The boat was never the point, the boat was the illustration.
And look at what the boat did not do.
It did not make Noah a better man. Walking through that door did not improve his character, sharpen his judgement, or settle his temper. The account is remarkably unsentimental about him afterwards, and if you read on a few verses past the flood in the very next chapter you will find him doing something fairly undignified involving a vineyard. The ark did not fix him.
All it did was put him on the right side of a door when the water came.
That is the entire mechanic, and I think it is the part that gets missed most often. It is not a merit system. It is a location. The question the flood asked wasn't "how good are you?". It was "where are you?". Inside, or outside.
Which, if you sit with it for a minute, is the difference between a rule and a gift. A rule says be good enough to survive. This one says be inside.
The door has a name
So we have a picture with a door in the side of it. And a very long time later somebody stands up and says a thing that only really lands if he had that picture in mind.
I am the door: by me if any man enter in, he shall be saved, and shall go in and out, and find pasture. - John 10:9
And then, with no hedging in it at all:
Jesus saith unto him, I am the way, the truth, and the life: no man cometh unto the Father, but by me. - John 14:6
Notice the grammar. As somebody who reads and implements specifications for a living, I promise you the grammar is the whole thing.
He does not say I know the way. He does not say I teach the way, or I discovered the way, or here are some principles which, correctly applied, add up to the way. He says I am.
That is a different category of claim, and it changes what sort of thing you are dealing with. A doctrine can't open a door. A principle cannot shut one. A technique has never waited for anybody, and a system has never once come looking for you. Only a person does those things.
The one way is not a rule. It is somebody! It is Jesus!
The real idea
Strip away the cubits and the gopher wood and the forty days, and what is left is one small, uncomfortable fact: there was one door, it worked completely, and nothing else worked at all.
We spend years finding that offensive, and we find it offensive on professional grounds, which is an extremely comfortable place to be offended from. We do this for a living! We would tell ourselves we know a brittle design when we see one.
Except we do not actually believe the thing we are claiming to believe. We do not want a second private key. We do not want our bank's certificate to be flexible about who it lets through. Everywhere in our working life where the cost of being wrong is total, we demand exactly one way, and it has never once occurred to us to call that narrow. By the way this is not just limited to software engineering; Other industries have one way ideologies as well.
There is also another part we might walk straight past and miss as well.
That door stood open for a very long time. Decades of hammering, in a field, in the open, in front of everybody, by a man who kept telling them why. And then, once everything was aboard, seven more days of nothing happening at all. Seven days of an open door on a boat in a field under a perfectly clear sky, with the ramp still down.
The narrow part of this story is not the hard part. The hard part is how long it was wide open, and how ordinary the weather looked the entire time.
It was not raining when he started.
and they that went in, went in male and female of all flesh, as God had commanded him: and the LORD shut him in. - Genesis 7:16