On June 4 1996, the European Space Agency launched a brand
new rocket. It was the first launch of a new generation of spacecraft: the
Ariane 5. They had spent $8-billion developing the Ariane 5. It didn’t carry
people, but it did carry a half-billion dollars worth of satellites into space.
Everything went as planned during the count down, all
systems were working flawlessly. As the rocket lifted off in a beautiful cloud
of white smoke, the mission control crew were excited. Beautiful colors
followed the spacecraft as it streamed into the sky.
Then 36 seconds into the flight, everything went wrong. The
space craft suddenly went completely unstable, started turning violently turned
toward earth. The mission control was forced to push the self-destruct button.
Immediately the rocket exploded into a huge ball of fire.
Silence reigned in the control room. Everyone sat dazed,
numb, staring at their screens or into the sky as the huge ball of fire grew
cold, and pieces of their spaceship fell to earth.
In the days that followed as they analyzed what happened, it
became clear what went wrong. They lost their spaceship because of . . . a computer
programming bug. The software had not been properly tested. And at a critical
moment the program crashed and everything went out of control.
The Need of Testing
Testing is essential. 1 Peter 1:6-7 says:
“In this you greatly rejoice,
though now for a little while, if need be, you have been grieved by various
trials, that the genuineness of your faith, being much more precious than gold
that perishes, though it is tested by fire, may be found to praise,
honor, and glory at the revelation of Jesus Christ.” (NKJV)
Writing computer programs and software is one of my favorite
things to do. But for a number of years, I kind of dreaded testing. It was
boring, it was tedious. In some ways I didn’t see much of a point. (If I wrote
it right in the first place, testing was a waste of time. On the other hand,
how could I possibly find all the bugs by testing anyway? That would take
forever!)
But I’ve learned that testing can be fun if it’s done right,
and like that passage from 1 Peter 1 says: I don’t need to be grieved by the
various tests—In the end, even if the code is tested with fire—if it passes the
tests, that is a wonderful thing.
On that morning in June of 1996, the software responsible
for keeping the Ariane 5 rocket stable and pointed toward its destination in
space crashed. Immediately the backup computer took over, but it was running
the some program and crashed because of the same bug.
Without a program to keep it on course, the rocket immediately
twisted out of control, and started breaking under the stress. The engineers
were forced to blow up their rocket to keep it from coming down and possibly killing
people on the ground.
This is one of the more catastrophic results of a software
bug.
But bugs are common. The more bugs a program has, the worse
it runs and the more problems it can cause. But bug-free software can do
amazing things.
Bugs
On September 9, 1947, computer scientist Grace Hopper
reported the world’s first computer bug.
She was working on the Harvard Mark II—one of those massive
early computers that took up a huge room—and had the computing power of a 1980s
pocket calculator.
It was full of circuits, relays, tubes, and moving parts. In
Hopper’s case, the bug in the program was literally a bug: The program kept
giving errors. When they opened the computer’s hardware, they found a bug—a moth!
The moth had gotten trapped in one of the relays and caused
it to stop working. And taking that moth out was the first instance of “debugging”—getting
the bugs out of a computer program.
And the name stuck.
The Bible speaks about us debugging our lives and hearts.
Hebrews 12:1-2 says: “Therefore we
also, since we are surrounded by so great a cloud of witnesses, let us lay
aside every weight, and the sin which so easily ensnares us, and let us run
with endurance the race that is set before us, looking unto Jesus, the author
and finisher of our faith.” (NKJV)
That laying aside of the weights and sins in our lives is a
kind debugging: taking the bugs out of our hearts and characters.
Test
One of the great goals of programmers is to write bug-free
programs. And bugs are a problem that plagues software development. How do you
know the program is going to do what you want it to do in every situation?
And the ultimate test that the software gets put through
when it is put into real use:
- The testing that happens when it is the code
that 200 lives depend on to enable their plane to land safely.
- The testing that happens when the stock market
or health care system is turned over to computers.
- The testing that happened when the European
Space Agency launched their rocket that went out of control.
The whole world will be tested this way in the near future. Revelation 3:10 says:
“Because you have kept My command
to persevere, I also will keep you from the hour of trial which shall come upon
the whole world, to test those who dwell on the earth.” (NKJV)
In that day, most will fail as catastrophically as that
Ariane rocket. But none of us have to fail. And that is one of the reasons God
tests us today: to help us get the bugs out of our lives so we can stand in
that great and final test.
Test First
How do you avoid failures and bugs with software? You test
the code as you write it. Instead of one big fiery test at the end that ends
catastrophically, you write dozens or even hundreds of little tests.
In fact one of the best programming practices is to write these
tests first. When you want the computer to do a calculation, you write a test
to show that it does it correctly. Then before you write the code to make it do
it, you run the test.
What happens if run a test to see if your program does
something correctly before you’ve written the code to make it do it? It
fails the test of course. But this proves you have a good test. (If it passed
the test before you wrote any code to make it do it, you’d know your test was
flawed right?)
Then once your code has failed the test, you fix it. You add
the instructions to make it pass the test and then run the test again. Often it
fails a second time, and you keep refining until this little test passes.
Then you write another little test—and a failure of this test
shows there’s more work to do in the program. You write that additional code,
or refine the code you wrote, until the test passes. This is called “Test First
Programming”.
The interesting thing is that God works like this with us
too. We think we’re doing pretty good passing our daily tests—and then God
gives us a new test that shows that we still have bugs.
- We think we’re patient, and find ourselves
getting angry.
- Or we think we’re unselfish, and the test shows
we’re selfish.
- Or we think we’re Sabbathkeepers, and the test
shows we’re not.
Think about the disciples just before the crucifixion. They
all felt pretty good about themselves. Look what Peter said:
“Though all men shall be offended
because of thee, yet will I never be offended.” (Matthew 26:33, KJV)
Jesus remonstrated with Peter and told him:
“Assuredly, I say to you that this
night, before the rooster crows, you will deny Me three times.” (Matthew 26:34,
NKJV)
Did telling him that work? Did this reform Peter? Did that
get this bug out of his character? What was Peter’s response?
“Peter said to Him, "Even if I
have to die with You, I will not deny You!" And so said all the disciples.
” (Matthew 26:35, NKJV)
So how did the Lord refine Peter—how did He get this bug out
of his character? He started with a test. And Peter failed the test. The test
showed Peter there was a bug in his soul. And when Peter could see he had
failed the test, he opened his heart to receive correction, forgiveness, grace,
and power to become a new man in Christ.
“Beloved, think it not strange
concerning the fiery trial which is to try you, as though some strange thing
happened unto you: But rejoice, inasmuch as ye are partakers of Christ's
sufferings; that, when his glory shall be revealed, ye may be glad also with
exceeding joy.” (1 Peter 4:12-13, KJV)
“That the trial of your faith, being much more
precious than of gold that perisheth, though it be tried with fire, might be
found unto praise and honour and glory at the appearing of Jesus Christ: Whom
having not seen, ye love; in whom, though now ye see him not, yet believing, ye
rejoice with joy unspeakable and full of glory: Receiving the end of your
faith, even the salvation of your souls. ” (1 Peter 1:7-9, KJV)
Final Test
All computer code that is used is eventually tested. The
question is—when is it going to be tested? How is it going to be tested?
The choice a programmer has is—Will the testing happen in a
safe, controlled environment? Or is it going to happen out in the world—on the
road—in the air—when lives are at stake?
And our characters will be tested too. Our characters can be
tested and debugged now in these days of probation under grace. Or they can be
subjected to the final test, unfinished and unprepared.
Now when it comes to programming, I can tell you from
experience what is more fun: It is more fun to write code, than it is to test
it. It’s more fun to just write the code, figure it’s good and send it out.
At least it’s more fun to a point: And that is when your
code that you had pinned your hopes on—and your reputation—comes crashing down
and does something unexpected. And people are hurt, companies go out of
business, reputations are ruined, and people are angry and upset. That’s no fun
at all.
“Now no chastening seems to be joyful for the
present, but painful; nevertheless, afterward it yields the peaceable fruit of
righteousness to those who have been trained by it. ” (Hebrews 12:11, NKJV)
And Ellen White wrote in Faith
I Live By, p. 119:
“It requires the testing time
to reveal the pure gold of love and faith in the character. When trials
and perplexities come upon the church, then the steadfast zeal and warm
affections of Christ's true followers are developed.”
So try and appreciate the tests you have this week. They are
God’s method of debugging our characters. And the promise is: “When He has
tested me, I shall come forth as gold.” (Job 23:10, NKJV)