In our latest adventure at work, we’re racing headlong and headfirst down the road of “emergent design” in Agile software development. We’re learning how to “fail fast and fail often” the hard way, and it’s been a challenge to determine whether we’re failing “correctly” — if there really is such a thing!
Traditionally, software was developed in some form of “waterfall process” in which a relatively firm set of requirements were defined by sales or marketing, which then flowed down to engineering who then designed, developed, and tested the product. The product was usually well-defined, designed, developed,
and tested with long-term considerations in mind, and wasn’t released (usually) until sales/marketing had received the product or feature they wanted. Then the entire process would start over with the next set of marketing requirements flowing down from on “high” again.
Unfortunately, the problem with the waterfall process is that it’s often slow, cumbersome, filled with latency/bottlenecks, and the products can become quickly outdated and often difficult to maintain over time. Sometimes the market is simply changing faster than the company can keep up with, and the product has become irrelevant before it’s even released. In certain markets, the product has become outdated even before the requirements are finished being written! Most software products are like any other perishable product: they have a certain shelf-life of a few years (or months!) and then they’ve lost their usefulness. In the worst cases, it’s like trying to bake a batch of cookies in which the ingredients expire before they’re done being mixed!
One of the more popular alternatives to the waterfall process is emergent design, in which the software development life-cycle is greatly shortened but sped up, and the product rapidly “emerges” in a series of small steps instead of one big release. In the end, the same product may be made available, but the user-base sees the product or feature evolve in a series of frequent steps with more functionality being added every few weeks instead of several months — or longer.
From Wikipedia (the final authority of all that is known on the Internet), “With emergent design, a development organization starts delivering functionality and lets the design emerge. Development will take a piece of functionality A and implement it using best practices and proper test coverage and then move on to delivering functionality B. Once B is built, or while it is being built, the organization will look at what A and B have in common and refactor out the commonality, allowing the design to emerge. This process continues as the organization continually delivers functionality. At the end of an agile release cycle, development is left with the smallest set of the design needed, as opposed to the design that could have been anticipated in advance. The end result is a simpler design with a smaller code base, which is more easily understood and maintained and naturally has less room for defects.”
While I’m still getting used to working in the emergent design world, I can see its benefits — and it’s drawbacks. The product/features receive frequent feedback from the user-base and the software changes to meet their needs and/or demands accordingly. Emergent design gets a larger user-base involved in shaping the product earlier and more often rather than at the beginning and end of the process. However, while emergent design does solve some problems, it also causes some that could be avoided with the more
traditional waterfall process, namely in the design phase. Going back to the cookies example, sometimes emergent design feels like you’re trying to bake a batch of cookies in which there’s no written recipe (just general guidelines) and the batter is being mixed by trial and error! Not only that, but the recipe is being continually refined based upon your kids’ taste-buds at any given moment!
I hate having to do a job twice – especially jobs that I’ve put a lot of time and effort and heart into. I was taught that if you have to do something twice, then you didn’t do it right the first time. I dislike writing “disposable” code, functionality that I know will likely be thrown away in a few months or even weeks! It’s one thing to write code in such a way as to prepare for new features you know will be coming soon, but quite another to write code that you know will be deleted or never even seen by the users!
Needless to say, that’s become a big part of my job over the last year or so – continually reworking and refactoring roughly the same code over and over again. A tweak here, a tweak there, with sometimes an ugly gutting of all the innards and practically starting over. While I understand and mostly agree with the new process, sometimes emergent design goes against every common-sense software-development bone in my body! Before we code up something, how about we slow down for a minute and make a good design that will last longer? Instead of swinging from one extreme (waterfall) to the other (emergent), can’t we come up with a happy medium somewhere in between?
In both worlds, the user-stories/requirements change and the software has to be modified accordingly. Customer A likes this feature but Customer B doesn’t, so we try to find a way to make both happy. In emergent design, the process is sped up and both customers end up getting a portion of what they really want. They may want a Cadillac, but they have to settle for a 10-speed, then a Kia, and then a Lexus (if they’re lucky). The software doesn’t necessarily become better and better as much as different and more inline with what the customers want (or can somewhat agree to), though that often changes over time too. I’ve been working on this project from Line 1 on Day One and while it’s continually changing, it’s not always evolving in a certain defined direction as much as being more “fleshed out” as time goes on.
Maybe that’s the way it is with us – maybe we’re not always improving in any tangible, particular ways as much as being stretched, deepened, thickened, and being more fleshed out. Circumstances outside our control change and we have to respond accordingly. People are constantly coming and going, feeling, responding, changing, and affecting us (for good or bad). Maybe we who are being molded and shaped by the Divine Potter don’t always become better and better in the way we think we should be as much as different and more inline with what He requires of us at that particular point in time, though that often changes too.
Maybe it’s more important to be walking with God along this long, winding, and bumpy road — wherever He may be leading us — than it is to get to what we think should be our position or destination as quickly and directly as we can. We like all those shortcuts to make things faster and easier on ourselves more than how the long, difficult journey will prove our character and faith — but He doesn’t. I think He is much more concerned with how we’re responding to Him and those around us at any given moment and seeing us draw closer to Him with every step along the way. I think He’s more concerned with how we emerge from our circumstances and how we conform to Him than anything else.

Maybe God is more concerned with our character and how it’s being shaped day-in and day-out than how quickly and easily we get Home, because that’s already been assured once we become part of His Family. He expects us to get battered, bruised, and calloused along the way, doesn’t He? After all, those blisters prove we’ve been walking a long way for a long time, don’t they? He expects us to live fully and take risks just like the men the shrewd master entrusted his talents to (Matthew 25:14-30). He’s already promised to bring us Home and be with us all along the way on this Journey, but He hasn’t said much about the ardors of the Journey itself!
Though our lives and our walk may indeed resemble software being written by “emergent design”, we can trust that the Potter knows exactly what He’s doing and that He’s shaping all of us precisely how He wants us to be not only at any given moment, but the final product of our lives.
Now to Him who is able to keep you from stumbling, and to present you faultless before the presence of His glory with exceeding joy, to God our Savior, Who alone is wise, be glory and majesty, dominion and power, both now and forever. Amen. — Jude 24-25

The Bible says in 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 sin and heal their land.”
but the God of the universe reigns and exposes secrets, lies, and cover-ups for what they usually are: sin. He hears everything, sees everything, and knows everything — even the tiniest thoughts of your heart. Recall David’s sin with Bathsheba and the subsequent cover-up in which her husband was murdered; he would’ve gotten away with it if God hadn’t told Nathan the Prophet who marched into the throne-room and stuck his finger in the king’s face!
the website to provide the most optimal web experience. For example, newer websites may look and respond much differently when you browse them on your phone instead of your laptop or tablet. Before responsive design, developers had to create completely separate pages, code, and graphics for different devices which multiplied efforts, costs, and time. With responsive design and mobile-first (in which the site is first designed for a small mobile size and then expanded for larger devices), the pages and code are written once but automagically change their layout and styling to optimally fit any device.
but breaking-balls? And don’t get me started on knucklers! How “responsive” are we when our “dimensions” suddenly change without warning, when we’re flipped on our side, upside down, or suddenly stretched (or squished)?
those closest to us. We really aren’t very good at dealing with somber, dark moods and depression in others or ourselves most times. When the darkness really sets in and hope seems completely lost, we tend to start analyzing and advising instead of just listening quietly. We have this notion that such dark feelings are always bad and should be avoided or brought to an end quickly, and that we should be happy or relatively content most of the time.
Living God. Like a deer pants for flowing streams of water, so our soul pants after God, and in Him and Him ONLY can our souls be satisfied. When we’re crawling through that desert of our souls or trapped in that dark pit, He is there with us and offers hope and comfort in Him (Psalm 139). Through pouring out our hearts in prayer and clinging to His Word, He draws near to us, even if we may not feel it. God is close to the brokenhearted and saves those who are crushed in spirit (Psalm 34).

everything. My career as a software developer is highly portable/mobile, and a wide variety of options are available to me. Since I love the ocean, I had first planned to move somewhere in Florida, then settled on southeastern Virginia in the Virginia Beach area — right where the hurricane is headed this weekend. However, after looking at the job market and looking at the cost of living, my prospects shifted slightly south to Raleigh.
mountains, a great job market (at least for technology), lots of open spaces, and is still pretty affordable, at least compared to the coasts! I’ve only seen a fraction of Colorado, and then there’s the great places nearby like Utah, New Mexico, and other states in the big West. And to top it all off, my youngest daughter is here and I’ll be able to spend oodles of time with her and help her keep growing up into a great young woman.
over things, places, or even experiences, our regrets will be small, if we even remember them at all! But when we choose what we want over people — stuff that we’re really just being selfish about or impatient for — those decisions cause the biggest regrets that can haunt us for the rest of our lives. At the end of the day, at the end of our lives, it’s all about how we loved God and how we loved those around us.
f how He answers (and doesn’t answer) them for awhile now. And He has indeed answered many of them…
words as he entered the monolith in the movie “2001: A Space Odyssey”; what made them especially memorable is probably because most of the movie was silent. The other movie line that’s permanently stuck in my head is: “1.21 gigawatts!??!” from “Back to the Future”.
system of word-pictures to help them remember the names of the stars. The names of the stars in the constellations tell the story of God’s plan throughout all history: that mankind had been corrupted by sin, that man’s sin could only be atoned for by sacrifice, that God Himself would provide a Redeemer to restore the broken relationship between God and mankind, that this Redeemer would then destroy the wicked Serpent, and then He would finally restore peace and harmony to all Creation.
pumpkin spice beer, pumpkin spice pancakes, pumpkin spice burgers, and even pumpkin spice hummus. (Pumpkin spice hummus?? Something just isn’t right about that one…pumpkins and squash aren’t native to the Middle East, or even that hemisphere!)

