Rebuilding an Airplane…While it’s Flying!

Aviation systems are some of the most complicated engineering wonders of the modern world. The dozens of buttons, switches, lights, and other controls in the cockpit alone boggle the mind, especially in the larger aircraft like 747’s. But behind all those controls and gauges are even more complicated, precisely-tuned instruments, systems, and subsystems that monitor and control everything from lift and thrust to temperature, air-quality, and cabin-pressure, not to mention the in-flight movies and WiFi.

Early_747_cockpit_with_engineer_station

So imagine our dismay about two years ago when the executive-team at the office began comparing our heavy equipment monitoring system to a 747 — and then declared that we would begin building an entirely new system from the ground up, completely from scratch. There would be no more legacy-code lurking around to bite us years later because it was too critical to fail yet too complicated to tear apart and rebuild. In basic terms, the system gathers and processes utilization data from heavy machinery all over the world and renders it to a website. Sounds simple, right? Not so much. Imagine a system that can gather, digest, and process a never-ending avalanche and render intricate ice-sculptures on the other end — in real-time and without losing any snow in the process.

To make it even more interesting, the executive-team informed us that we would be rewriting everything while the existing system was still in place — and working without interruption. They likened it to redesigning, rebuilding, and retesting that 747 while it was still flying at 30,000 feet in the air. They didn’t say much about nose-dives or the very-real threat of crashing, and they certainly didn’t mention anything about parachutes!

Needless to say, shortly after that announcement several of those executives left the company, but their deadlines and goals remained in place. And though we are currently rebuilding the system, at least we have the slight luxury of constructing the new system in the hangar while keeping the existing one in the air for another year or two. Along with redesigning the system to handle hundreds of thousands of users and millions of devices (it’s lucky to handle a fraction of that today), we’re moving from quarterly releases to a deploy-on-demand model. Not only is our technology-stack completely different, but our engineering processes have been flipped upside-down to meet the new demands.

The team I’m on has had both the privilege and responsibility of exploring new technologies, developing the strategies, and laying the groundwork for the rest of the organization. We were the first to construct the prototypes that have been tossed around, beaten up, and reworked over the last eighteen months. About a year ago, the look-and-feel of the application was finally agreed upon and the “real work” began. And since we’re a pioneering sort of team, we’ve taken many arrows over the last year.

sleep-desk

For the last twelve months, we’ve been looking at the same basic pages with the same data-elements day after day, week after week. Compared to how we used to write software in the old system, the new methodologies of ATDD (automated test-driven development) seem very inefficient, overly-complicated, and rather pointless at times. We fix the same failing tests on the same pages over and over on code we know will be thrown away in a couple months. We fail fast and fix often. There’s endless refactoring on the inside with very little visible improvements on the outside. It’s been rather discouraging at times because nothing substantial appears to be happening, and compared to the current website, the new one looks like a prototype. An award-winning enterprise workhorse is going to be replaced by this…caricature?

Until last week. Last week, the “little prototype that could” got a face-lift and was demo’d to the Board — and they loved it. Over the last couple weeks, the site has been coming together and is actually becoming something worthwhile. More teams have come on-board and are making tangible contributions. All the foundation-laying we’ve been doing for the last year has made it much easier to spin up new teams with fewer problems. And with the face-lift, the new application looks to surpass the current one, making the old look as slow, fragile, and clunky as it really is.

For a long time, very little appeared to be happening and no substantial progress was being made in the new application. On the surface, the same handful of pages didn’t look much different than they did a year ago. But what was going on behind the scenes? What was happening inside and beneath the surface? Inside, everything has been completely changed; it has an entirely new architecture and is rock-solid. It’s been ripped apart, rewritten, refactored, and tweaked at least half a dozen times. It’s fully-automated so bad-code will never seeing the light of day. Soon we’ll be able to release features whenever we want — weekly, daily, or even hourly — instead of every couple of months that require hundreds of hours of testing.

Consider how similar this is with us after Christ calls us to Him and unveils a new plan for us. His plans are audacious and rather absurd: He’s going to rebuild us from the inside out and still expects us to function well while being reconstructed (if not better!). He’s going to make us holy even though we’re mired in this fallen, sinful, depraved world. He going to do all this intricate, painstaking work on these clunky, fleshly prototypes of ours which will soon be discarded into the grave. All too often it’s a wonder that He doesn’t step back and honestly ask Himself if it’s worth all the trouble with us!

The Bible says that immediately after we accept Him into our hearts, the Holy Spirit sets about working in us, reshaping us for eternity, conforming us to Himself. Yet for months and usually years, we appear much the same on the outside with few visible improvements (or sometimes even worse for the wear). It’s hard to see that He’s actually doing much of anything. His work in conforming us to Himself seems to be a very long, slow, and rather agonizingly inefficient process. We seem more like clumsy caricatures than disciples of Christ.

So if He’s busy working in us, why do we keep failing the same tests over and over? Why can’t we ever seem to get it right the first time, the second time, or even the thousandth time? Why do we keep failing regardless of how hard we try? And even after we “get it” and walk that narrow path for awhile, we’re prone to get smug and prideful about our success only to fall right back into the gutter! How many times do we have to put our hand on that stove before we realize we’re gonna get burned? If we trip over and over on the same stumbling stones, how do we know He’s even walking alongside us, much less living inside us?

matrix

Perhaps it’s because so much of His work, the really hard (if not impossible) work of making the unholy holy, is occurring where only He can see. Not even we ourselves know what’s really going on deep down in our hearts. He’s dredging up all the errors, bugs, and hacks within our clumsy, mangled code and perfectly rewriting it one character at a time. He’s pouring over every single line in our lives and testing it, watching it break, fixing it, and then proving it. He’s taking us from limping along in this fallen world that’s passing away and refactoring us for eternity. He’s busy throwing away our pseudo holiness (self-righteousness) and false love (selfishness) and transforming them into real holiness in Him and true, sacrificial love for others that will last forever.

While we think He’s nowhere to be found and doing next to nothing in our lives, He’s still there, busily rewriting all the code of our hearts, running us through endless tests that we fail at over and over, until that refactoring is complete. Then He keeps running us through those same tests day after day in this fallen world, purifying us, purging us of the dead-code of the old men and women we once were. Whenever change of any sort comes into our lives, we stumble and fall and He fixes us up again over and over, seventy times seventy to the nth degree.

Yes, His refactoring of us is a long, slow, and agonizing process — but this is His process, His design, and His timeline, not ours. He has His own schedule for each of us, and it’s seldom what we think it is, much less what we think it should be. And when it feels like He’s practically absent from our lives, could that be because that’s when He’s doing the most work inside us? While we’re flying through this crazy life 40,000 feet in the air at 500 miles per hour, He’s busy rebuilding us from the inside-out.

And while we don’t even know what He might be shaping us into, He certainly does. In fact, He’s known exactly what He wants us to be since before time began.

His plans for us are perfect. His plans for us are eternal. His plans are to make us like Himself.

“Count it all joy, my brothers, when you meet trials of various kinds, for you know that the testing of your faith produces steadfastness. And let steadfastness have its full effect, that you may be perfect and complete, lacking in nothing.” — James 1:2-4

Advertisements

About Chris Hambleton

Chris resides in Denver, Colorado, where he is employed as a software developer and consultant. He has authored more than a dozen books, as well as developed several websites, software applications, and written software-related articles. His other interests include traveling, hiking, running, studying the Bible, reading American history and politics, and literally devouring good fiction books. Recently, he has been learning to enjoy classical music, playing the piano, and learning Hebrew.
This entry was posted in Character, Christian-life, God, Personal, Refactoring, Software, Trust, Work and tagged , , , , , , . Bookmark the permalink.

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