i attended a talk by Rick DeNatale the other day. he is an engaging speaker and seems to know his business inside and out. one word he used has stuck with me : ceremony. (sorry, Rick, i have a poor memory these days.) the definition i came away with (though perhaps not intended) was basically all the cruft that i have to type (or generate!) to communicate with the compiler or framework-of-the-day rather than with the humans who read it next (should you be so lucky).
while he spoke, i started to think more about ceremony in all the work i've done throughout the yarons. one of the reasons i like ruby is its ability to cut out much of that cruft. like declared fields that duplicate what's already in the database. or differentiating between short, int, and long. 99% of the time, i just want a number with or without decimal places. don't get me wrong, i appreciate having the option to conserve memory if i have to process a billion records simultaneously, but i don't do that often.
so why are we left with the cruft? why can't the direction setters ("architects?") understand the value in all the code that doesn't have to be written? the answer seems simple to me: intellectual laziness. not the kind that refuses to see the light, but rather the kind that doesn't show up for the debate, the fingers-in-ears-humming-tom's-diner version.
not all laziness is bad; we've all heard the quip that a good programmer is lazy, meaning they are smart enough to know that automating things is good. which brings me to a key underpinning of this laziness: tool support. i came to love eclipse when i was working in java, coming from c# that had a horrible IDE. eclipse let me run circles around the code without ever leaving the keyboard, provided i could remember the magic keystrokes. i thought it was the best thing since slicedbread.com. but i got incredibly tired of all the code, the shear volume of characters that had to be typed or generated to achieve the simplest things. (i won't even go into my dislike of xml/@xml overuse in javaland.) my circles were (are) ever-growing laps around a tangled maze of IoC, if i'm lucky.
but how much cleverness do we really need to inject into daily life before we take a collective step back and admit that we're too clever by far, that this monster we've created has escaped its pen and is wreaking more havoc than is worth the credentials of bringing this corpse to life? why can't we evolve this love of tool support into something more? why can't people recognize that smaller is better? let's use a language that speaks volumes in few words, delegates as much optimization as possible to a kick-ass VM, does NOT make me type any more than necessary to convey purpose, and is cleverly extensible out of the box.