The Outhouse and the Mall

Wea­ring the so­ftwa­re en­gi­nee­r’s ha­t: Co­de is the most tri­vial and the leas­t im­por­tant part of a fea­tu­re.

—Mi­cha­el Ia­trou

Mi­cha­el twee­ted tha­t, I re­plie­d, he re­plie­d, but what the he­ck, I thi­nk ­so­me­ti­mes things can be be­tter ex­plai­ned in mo­re than 140 cha­rac­ter­s, thus this ­post [1].

So, why the ma­ll and the ou­thou­se? Be­cau­se when we ta­lk about so­ftwa­re and co­de and fea­tu­res, we are not all ta­lking about the sa­me thin­g. Ima­gi­ne if I told you ­that bri­cks are tri­via­l. After all, they ha­ve exis­ted in their cu­rrent form fo­r ­thou­san­ds of year­s, they are pre­tty sim­ple to ma­nu­fac­tu­re, and ha­ve no­ in­te­res­ting fea­tu­res, rea­ll­y, ex­cept a cer­tain re­sis­ten­ce.

No­w, su­ppo­se you are buil­ding an ou­thou­se. Sin­ce you are a funny gu­y, you wan­t ­to build an ac­tual bri­ck ou­thou­se so you wi­ll use bri­cks to do it.

No­w, sin­ce bri­cks are so bo­rin­g, you may feel com­pe­lled to be­lie­ve bri­cks are ­the least im­por­tant part of your edi­fi­ce, and that the ove­ra­ll de­sign is mo­re im­por­tan­t. Should you car­ve a moon-s­ha­ped ho­le in the door? How deep should the ­la­tri­ne be?

Ho­we­ve­r, that po­si­tion is fa­ta­lly flawe­d, sin­ce if you ig­no­re tho­se tri­via­l, ­bo­ring bri­cks, all you ha­ve is shit in a ho­le in the groun­d. That is be­cau­se you a­re con­si­de­ring the bri­cks as just a mean to your en­d. You on­ly ca­re about the ­bri­cks in­so­far as they help you rea­li­ze your grand ou­thou­se vi­sio­n. I am he­re to­ ­te­ll you that you are wron­g.

The first way in whi­ch you are wrong is in that ar­ti­fi­cial se­pa­ra­tion be­tween ­means and en­d­s. Eve­r­yo­ne is fa­mi­liar wi­th the ethi­cal co­nun­drum about whe­the­r ­the en­ds jus­ti­fy the mean­s, but tha­t’s gar­ba­ge. Tha­t’swhat you say when you tr­y ­to con­vin­ce your­self that do­ing things ha­pha­zard­ly is ok, be­cau­se what you do is just the means to whate­ver other thing is the en­d. Li­fe is not so ea­si­ly di­vi­de­d in­to things that ma­tter and things that do­n’­t.

Your wo­rk, your crea­tion is not just so­me ideal iso­lated end to­war­ds whi­ch you ­tra­vel acro­ss a sea of dir­ty mean­s, tr­ying to keep your sil­ver ar­mour clean. I­t’s one who­le thin­g. You are crea­ting the mean­s, you are crea­ting your goa­l, ­you are res­pon­si­ble for bo­th, and if you use sho­ddy bri­cks, your ou­thou­se shoul­d sha­me you.

In the sa­me wa­y, if you do cra­ppy co­de, your fea­tu­re is de­mea­ne­d. It may even wo­rk, but you wi­ll know it’s built out of cra­p. You wi­ll know you wi­ll ha­ve to­ ­fix and main­tain that crap for years to co­me, or, if you are lu­ck­y, ruin you­r kar­ma by dum­ping it on the head of so­me poor su­cker who fo­llo­ws your step­s.

I am pre­tty mu­ch a ma­te­ria­lis­t. If you re­mo­ve the co­de, you do­n’t ha­ve a ­fea­tu­re, or so­ftwa­re, you ha­ve a con­cep­t, ma­y­be an idea, perhaps a de­sign (or ­ma­y­be not) bu­t ­cer­tain­ly not so­ftwa­re, just like you do­n’t ha­ve a bri­ck ou­thou­se wi­thout pi­lin­g ­so­me damn bri­cks one on top of the othe­r.

I alwa­ys sa­y, when I see so­meo­ne ca­lling hi­mself a so­ftwa­re en­gi­nee­r, that I am ­me­re­ly a so­ftwa­re car­pen­te­r. I know my tool­s, I ca­re about the­m, I use them as we­ll as I can ac­cor­ding to my li­gh­ts [2] and I try to pro­du­ce as good a pie­ce of fur­ni­tu­re as I can wi­th what I am gi­ven.

This ten­ds to pro­du­ce hum­ble so­ftwa­re, but it’s so­ftwa­re that has one re­dee­min­g ­fea­tu­re: it kno­ws what it should do, and does it as we­ll as I can make it. Fo­r e­xam­ple, I wro­te rs­t2­pdf. It’s a pro­gram tha­t ­takes so­me sort of tex­t, and pro­du­ces PDF fi­le­s. It does that as we­ll as I coul­d ­ma­na­ge. It does no­thing el­se. It wo­rks we­ll or no­t, but it is what it is, it ha­s a pur­po­se, a des­crip­tion and a goa­l, and I ha­ve tried to achie­ve that goa­l wi­thout em­ba­rra­sing mysel­f.

My pro­gra­ms are ou­thou­ses, ma­de of ca­re­fu­lly se­lec­ted and con­si­de­red bri­cks. ­They are not fan­c­y, but they are what they are and you know it just by lookin­g at the­m. And if you ever need an ou­thou­se, we­ll, an ou­thou­se is what you shoul­d ­ge­t.

Al­so, peo­ple tend to do weird stu­ff wi­th them I ne­ver ex­pec­te­d, but tha­t’s jus­t ­the lu­ck of the ana­lo­g­y.

But why did I men­tion ma­lls in the ti­tle? Be­cau­se ma­lls are not ou­thou­ses. Ma­ll­s a­re not do­ne wi­th a goal by the­msel­ves be­yond making mo­ney for its buil­der­s. The ac­tual func­tion of a pie­ce of ma­ll is not even kno­wn when it’s being buil­t. Wi­ll ­this be a Mc­Do­nal­d­s, or wi­ll it be a co­mic book sto­re? Who kno­ws!

A ma­ll is built qui­ck­ly wi­th whate­ver makes sen­se mo­ne­ywi­se, and it should look ­bland and re­cog­ni­sa­ble, to not sca­re the her­d. It’s a buil­ding ma­de fo­r ­pe­des­trian­s, but it’s in­ten­ded to con­fu­se them and make the pa­th form A to B as ­long and mean­de­ring as po­s­si­ble. The pre­mi­ses on whi­ch its de­sign is ba­sed are a­ll askew, co­rrup­ted and se­l­f-­contra­dic­tin­g.

They al­so gi­ve buil­ders a chan­ce to make lo­ts of mo­ne­y. Or to lo­se lo­ts of ­mo­ne­y.

No­wa­da­ys, we li­ve in an age of ma­ll so­ftwa­re. Peo­ple build star­tup­s, ge­t ­fi­nan­cin­g, build cra­ppy so­ftwa­re and so­me­ti­mes they hit it big (Twi­tte­r, ­Fa­ce­book) or, mo­re like­l­y, fa­de in­to obs­cu­ri­ty lea­ving be­hind no­thing at all, ex­cept mo­ney lost and sad pro­gra­m­mers who spent ni­gh­ts co­ding stu­ff noone wi­ll e­ver see or use, and not mu­ch el­se.

Far from me sa­ying star­tups are not a no­ble or wor­thy en­dea­vou­r. They are! It’s just that peo­ple who wo­rk on them should rea­li­ze that they are not buil­din­g ­so­ftwa­re. Tha­t’s why co­de does­n’t look im­por­tant to the­m, be­cau­se they are ac­tua­lly se­lling eye­ba­lls to ad­ver­ti­ser­s, or co­llec­ted per­so­nal da­ta from thei­r u­sers to whoe­ver bu­ys tha­t, or cap­ti­ve pu­blic for ga­me de­ve­lo­per­s, or whate­ve­r ­your bu­si­ness mo­del sa­ys (if you ha­ve one!).

They are buil­ding ma­ll­s, whe­re the va­lue is not in the buil­din­g, whi­ch is pre­tty ­ghas­tly and us­ele­ss by itsel­f, but on the peo­ple in it, tho­se who rent spa­ce in ­the ma­ll, tho­se who wi­ll use the ma­ll, the so­ftwa­re, the so­cial ne­two­rk, whate­ver it is you are buil­din­g.

Twi­tter is not so­ftwa­re, Fa­ce­book is not so­ftwa­re. If they we­re, iden­ti.­ca an­d ­dias­po­ra would be bi­gge­r! What they are is peo­ple in one pla­ce, like a ma­ll is ­not a real buil­din­g, but a co­llec­tion of peo­ple un­der a roof.

So, the­re is no­thing wrong wi­th buil­ding ma­ll­s. Just re­mem­ber that your en­ds an­d ­your means are one and a who­le, that co­de is im­por­tan­t, that wi­thout co­de ­Fa­ce­book and Twi­tter do­n’t wo­rk, and that wi­thout peo­ple they are a bad­lan­d, an­d k­now what you are do­in­g.

Be­cau­se the on­ly hard thing in li­fe is kno­wing what you want to do. The rest is ­the ea­sy par­t. And be­cau­se ma­lls wi­thout toi­le­ts su­ck.

[1] If you really want to see the whole conversation, it’s here: (if anyone knows a better conversation tracker please post it in a comment).
[2] Yet here I am, an Engineering Manager at Canonical. Sorry guys!


Comments powered by Disqus
Contents © 2000-2013 Roberto Alsina