On Letting it Emerge

April 13th, 2010 § 2

One of the harder things I do in my cor­por­ate design gig is to try and main­tain some wiggle room with­in UI and in­ter­ac­tion projects. More of­ten than not these put front end pieces to mar­ket that grow from months of di­li­gently sched­uled meet­ings in­volving busi­ness ana­lysts, mar­keters, bankers, front and back end pro­gram­mers, and strict dates. The UI pro­cess ex­pect­a­tion is one of ex­haust­ive re­quire­ments defin­i­tion, then pro­to­typ­ing and si­gnoff, then code. And I don’t think the mod­el is an ex­cep­tion for big or­gan­iz­a­tions with in-house teams.

Time and again, however, I’ve found that some an­swers (let alone ques­tions) don’t present them­selves un­til long after the project plan has been signed, sealed, and de­livered. The prob­lem then be­comes that the plan as­sumes everything’s been answered and op­tim­ized up front while stick­ing to the plan will in fact prove to be the sub-op­tim­al route to take. I’ve some­times had to walk a nar­row line in re­con­cil­ing the ten­sions this can present in my job. I’ve re­cently also seen the ‘ma­gic’ that can hap­pen if the parties on a design project can ac­cept a cer­tain level of on­go­ing un­cer­tainty.

There have been big on­line suc­cess stor­ies of late, mint.com for one with­in the per­son­al fin­ance sec­tor, that have emerged from nimble or­gan­iz­a­tions will­ing to em­brace a sort of ir­res­ol­u­tion with pur­pose. 37signals, of Base­camp and Back­pack fame, is an­oth­er group that has em­braced anti-pro­cess and seen suc­cess. The fol­low­ing An­drew Hunt ex­cerpt was lif­ted from their re­cent book Get­ting Real. I don’t ex­pect Cor­por­ate’s staid or­gan­iz­a­tion­al cul­tures to go agile overnight but I do be­lieve there are les­sons we can take from flock­ing birds and dex­ter­ous de­vel­op­ment. Let’s try to let at least some of it it hap­pen…

Emer­gence is one of the found­ing prin­ciples of agil­ity, and is the closest one to pure ma­gic. Emer­gent prop­er­ties aren’t de­signed or built in, they simply hap­pen as a dy­nam­ic res­ult of the rest of the sys­tem. “Emer­gence” comes from middle 17th cen­tury Lat­in in the sense of an “un­fore­seen oc­cur­rence.” You can’t plan for it or sched­ule it, but you can cul­tiv­ate an en­vir­on­ment where you can let it hap­pen and be­ne­fit from it.

A clas­sic ex­ample of emer­gence lies in the flock­ing be­ha­vi­or of birds. A com­puter sim­u­la­tion can use as few as three simple rules (along the lines of “don’t run in­to each oth­er”) and sud­denly you get very com­plex be­ha­vi­or as the flock wends and wafts its way grace­fully through the sky, re­form­ing around obstacles, and so on. None of this ad­vanced be­ha­vi­or (such as re­form­ing the same shape around an obstacle) is spe­cified by the rules; it emerges from the dy­nam­ics of the sys­tem.

Simple rules, as with the birds sim­u­la­tion, lead to com­plex be­ha­vi­or. Com­plex rules, as with the tax law in most coun­tries, lead to stu­pid be­ha­vi­or.

Many com­mon soft­ware de­vel­op­ment prac­tices have the un­for­tu­nate side ef­fect of elim­in­at­ing any chance for emer­gent be­ha­vi­or. Most at­tempts at op­tim­iz­a­tion – ty­ing something down very ex­pli­citly – re­duces the breadth and scope of in­ter­ac­tions and re­la­tion­ships, which is the very source of emer­gence. In the flock­ing birds ex­ample, as with a well-de­signed sys­tem, it’s the in­ter­ac­tions and re­la­tion­ships that cre­ate the in­ter­est­ing be­ha­vi­or.

The harder we tight­en things down, the less room there is for a cre­at­ive, emer­gent solu­tion. Wheth­er it’s lock­ing down re­quire­ments be­fore they are well un­der­stood or pre­ma­turely op­tim­iz­ing code, or in­vent­ing com­plex nav­ig­a­tion and work­flow scen­ari­os be­fore let­ting end users play with the sys­tem, the res­ult is the same: an overly com­plic­ated, stu­pid sys­tem in­stead of a clean, el­eg­ant sys­tem that har­nesses emer­gence.

Keep it small. Keep it simple. Let it hap­pen. – An­drew Hunt, The Prag­mat­ic Pro­gram­mers

§ 2 Responses to “On Letting it Emerge”

  • Michael Sanders says:

    Refreshing Alex.
    It’s good to have a plan, especially when the designer and the person actually doing the lifting is a different person. But I see no need to have things set in stone. Things change over the course of a project and a team is better when they are more flexible to a shift in the project.

  • alexaitken says:

    Thanks for the perspective, In my case we (designer and developer, or ‘lifter’) are one and the same.

  • § Leave a Comment

meta

Tags: , ,