A fool with the best tool for the job is still a fool
Geplaatst door Danny Lagrouw ma, 21 aug 2006 21:52:00 GMT
In mijn jeugd kende ik twee timmermannen, die elk een eigen manier van werken hadden. De eerste, mijn opa, was zo iemand wiens handen konden maken wat hij zag. Kasten, tafels, trapjes, hij kon alles. Je gaf hem een beschrijving van wat je wilde hebben, hij kreeg een glans in zijn ogen, en ging aan het werk. Hij had een enorme verzameling bij elkaar verzameld gereedschap, waar hij echter meestal maar een klein deel van gebruikte. Hij ging zo op in zijn werk, dat hij soms de moeite niet nam om het gereedschap te gaan halen dat hij nodig had; met wat hij toevallig in zijn handen had ging het vaak even goed. Tijdens het werk had hij altijd voor ogen hoe het het wilde hebben. En na enige tijd liet hij je vol trots het eindresultaat zien. Hij had plezier in zijn werk.
De tweede timmerman die ik kende was mijn oom. Mijn oom had een aantal jaar lang een timmercursus gevolgd, maar vond dat hij eigenlijk nog altijd niet genoeg geleerd had om volwaardige producten af te kunnen leveren. Als je hem vroeg om iets te maken, wilde hij precies weten hoe het eruit moest zien, wat de maten moesten zijn, welk materiaal hij moest gebruiken. Dan kreeg hij een vermoeide blik in zijn ogen, en ging aan het werk. Ook hij had veel gereedschap, nieuw gekocht van het beste merk. Als hij met zijn klus bezig was, lette hij er altijd op het juiste gereedschap te gebruiken, zoals hij het had geleerd. Hij verachtte mijn opa, omdat hij hem ooit een schroevedraaier als beitel had zien gebruiken. In zijn ogen was er voor elke klus een gereedschap dat het best geschikt was. Tijdens het werk had hij altijd het juiste gereedschap voor ogen. Het eindresultaat haalde hij niet vaak. Ik heb hem nooit blij zien kijken als hij bezig was.
Wanneer is PHP “the best tool for the job”, en wanneer is Ruby dat? Volgens mij is het beste gereedschap voor een klus datgene wat de programmeur in kwestie op dat moment het beste gereedschap vindt. Er is in principe geen (in Platonische zin) ‘absoluut’ beste gereedschap aan te wijzen voor een willekeurige klus. Als ik klaag dat ik geen Ruby kan gebruiken voor kleine webformuliertjes, dan is dat niet omdat ik koste wat kost Ruby wil gebruiken—maar om de klus te klaren grijpen mijn handen naar het gereedschap dat op dat moment het dichtstbij ligt, dat het meest vertrouwd aanvoelt, waarmee ik het snelst klaar kan zijn. En op dit moment is de programmeertaal waarin een programma-idee in mijn gedachten zo ongeveer 1 op 1 overeenkomt met een uitwerking op de computer, (naast Java), Ruby. Hoe kan iemand dan nog beweren dat ik beter PHP kan gebruiken? For any job?
Dit artikel slaat natuurlijk als een tang op een varken. Je maakt een ontzettend kromme vergelijking tussen een (fictief?) verhaal en een engelse zin die je het beste kunt interpreteren als een richtlijn wanneer je met (computer software) aan het werk bent. “Use the right tool for the right job.” Kun je vele malen breder bekijken, het houdt in dat je beter verschillende gereedschappen kunt hebben, welke eigen hun specifieke sterke eigenschappen hebben, dan dat er 1 stuk gereedschap is wat alles kan.
Je opa kan het advies “Use the right tool for the right job.” nog zo in de wind slaan, maar ook hij zal zich er aan houden. Hij gebruikt een schroevendraaier als beitel in sommige situaties, iets wat prima zal gaan, echter neem ik aan dat hij nooit een hamer als beitel zal gebruiken of een beitel als schroevendraaier, ook al heeft de beste man dat stuk gereedschap op dat moment in zijn handen en voelt het o zo vertrouwt aan.
Op dit moment vind ik Ruby een heerlijke taal, ik doe er dan ook van alles mee, zo ben ik net als velen bezig met het ontwikkelen van webapplicaties, maar ik stuur er ook een stukje hardware middels een printerpoort mee aan en ik lees er ook mijn netwerk statistieken mee uit. Ik begin er steeds handiger mee te worden, en ik kan steeds meer met dat ene stuk gereedschap. In al deze gevallen is Ruby voor mij ‘the right tool for the job’, echter wanneer ik met iets totaal anders bezig ga, zoals bijvoorbeeld (je raad het waarschijnlijk al) kleine webformuliertjes en dit kost me vele uren welke ook nog eens resulteren in een bar slecht resultaat, dan wil ik wel de moeite nemen om de ‘beitel’ te pakken en het karwei hiermee af te maken wanneer ik weet dat ik het hiermee snel, veilig en op een nette manier afrond.
Nog een manier om te PHP-en met ruby; Making Ruby into PHP Populaire bezigheid. ;-)