Dorian Taylor’s Iconocodes

| May 14, 2012

The issue I have with code is that as a medi­um it is too damn pre­cise. You sim­ply can’t op­er­ate over any con­cept until you have de­fined it ex­act­ly, whether or not it ex­hibits any fi­deli­ty to its ref­er­ent. Then there are the myr­i­ad con­sid­er­a­tions pe­cu­liar to the im­ple­men­ta­tion. It’s like dig­ging the Pana­ma canal with a tooth­pick, or with re­cent ad­vance­ments, a chop­stick. Some might boast that as a four­fold per­for­mance im­prove­ment, but that isn’t good enough for me.

Soft­ware code is al­most at the very end of a long chain of trans­for­ma­tions be­tween sym­bols that begin in your head and ter­mi­nate in the tran­sis­tors of a mi­cro­pro­ces­sor. The al­most is sig­nif­i­cant, be­cause it’s those last few links in the chain that make the prac­tice even re­mote­ly close to man­age­able, and offer a hint to make it more so. I’m speak­ing of course about com­pi­la­tion or in­ter­pre­ta­tion, as­sem­bly, and the trans­la­tion of ma­chine code into mi­crocode. The only way this can pro­duce pre­dictable re­sults is if the coars­er, more pal­pa­ble sym­bols are iso­mor­phic to col­lec­tions of the finer, more ar­cane ones. So my ques­tion is why don’t we put more ef­fort into ex­tend­ing this chain in the op­po­site di­rec­tion? So we have an un­bro­ken line of iso­mor­phisms, punc­tu­at­ed by rep­re­sen­ta­tion­al ar­ti­facts, that go from the men­tal model of the sys­tem’s de­sign­er all the way down to the sil­i­con?

Now, a few peo­ple have tried to bolt an­oth­er layer of ab­strac­tion onto the hu­man-touch­ing side of code, usu­al­ly as some sort of graph­i­cal in­ter­face. This is in­ter­est­ing, but has yet to add all that much to the pli­an­cy of its se­man­tic struc­ture. The meta-dis­ci­pline col­lec­tive­ly known as user ex­pe­ri­ence de­sign has come from the op­po­site di­rec­tion, clar­i­fy­ing and en­hanc­ing men­tal mod­els to at­tempt to rec­on­cile them with a vi­able im­ple­men­ta­tion. But there is still a gap, and it’s sig­nif­i­cant.

Of course code needs to be writ­ten in order to cre­ate a soft­ware prod­uct. That’s tau­to­log­i­cal. To hes­i­tant­ly re­vive the con­struc­tion metaphor, it’s like say­ing you can’t have a build­ing with­out build­ing a build­ing. But that doesn’t mean you should im­me­di­ate­ly run down to the job site and start lay­ing bricks and pour­ing con­crete. That isn’t an in­di­ca­tor of per­for­mance, it’s an in­di­ca­tor of lu­na­cy.

via The Isomorphism Shuffle — Dorian Taylor.