TITLE: Personality and Perfection AUTHOR: Eugene Wallingford DATE: November 23, 2009 2:53 PM DESC: ----- BODY: Ward Cunningham recently tweeted about his presentation at Ignite Portland last week. I enjoyed both his video and his slides. Brian Marick has called Ward a "gentle humanist", which seems so apt. Ward's Ignite talk was about a personal transformation in his life, from driver to cyclist, but as is often the case he uncovers patterns and truths that transcend a single experience. I think that is why I always learn so much from him, whether he is talking about software or something else. From this talk, we can learn something about change in habit, thinking, and behavior. Still, one nugget from the talk struck me as rather important for programmers practicing their craft:
Every bike has personality. Get to know lots of them. Don't search for perfection. Enjoy variety.
This is true about bikes and also true about programming languages. Each has a personality. When we know but one or two really well, we have missed out on much of what programming holds. When we approach a new language expecting perfection -- or, even worse, that it have the same strengths, weaknesses, and personality as one we already know -- we cripple our minds before we start. When we get to know many languages personally, down to their personalities, we learn something important about "paradigms" and programming style: They are fluid concepts, not rigid categories. Labels like "OO" and "functional" are useful from some vantage points and exceedingly limiting from others. That is one of the truths underlying Anton van Straaten's koan about objects and closures. We should not let our own limitations limit how we learn and use our languages -- or our bikes. -----