Posted by kathysierra
on December 9, 2004 at 2:51 PM PST
Is "picking the right tool for the job" truly the responsible approach? Is wanting your tools to be cool really a sign of immaturity? Can we and *should* we still be passionate about Java?
Brett's blog on Java's declining cool factor created quite a stir: Ho Hum Java . I'd sum up a lot of the comments as something like, "Cool doesn't matter. It's just a tool. You pick the right tool for the job regardless of how cool it is." Some hinted that it's a less mature attitude to expect your tools to be cool. To wildly paraphrase, "It's a programming language, for frick's sake, and all that matters is what you can accomplish with it."
I don't think it's that simple.
There are a bunch of somewhat-related issues I could play with, but for this blog I'm narrowing it down to:
1) The notion of "pick the best tool for the job".
2) The notion that the "coolness" of your tool is not important (and that it may be detrimental to *want* your tools to be cool).
The rule that says mature, responsible programmers "pick the best tool for the job" makes a lot of sense, of course, but in practice very few can (or *should*) live by it. Obviously for most of us there are tradeoffs we have to consider:
* If you aren't already experienced in the "best" tool, there could be a substantial learning curve. So you weigh the benefits of using the tool against the loss of productivity while you come up to speed. The arguments to this are usually something like, "Well, a good programmer would spend time trying to learn as many languages as possible so that his toolbox is bigger." Which brings up another tradeoff:
* Even if you DO have a big toolbox, the phrase "jack of all trades, master of none" comes to mind. There will always be only a very small number who can not just learn but *master* multiple languages, and KEEP their high level of proficiency. So we weigh whether the additional gains by the tool being a somewhat better fit are wiped out by the fact that your ability to exploit that tool are much lower than another, less suitable, tool that you're particularly brilliant with. Which brings up another tradeoff:
* Context-switching isn't free. Each time you switch to another language, even one you know, there's still a certain amount of mental and physical overhead. Reloading the rule set for "working with this language" into your brain can be costly, and with it comes the reloading of your support materials. Even something as simple as rearranging your reference book shelf is a potential hit. Then there's figuring out where to get support -- which website forums, etc.
These are all the standard points, of course, that have been discussed to death already:
being language agnostic
picking an OK tool
But this really leads me to the whole coolness thing. Those in strong support of always picking the best tool argue that when people are in love with their tool, there's the "everything looks like a nail" syndrome. That if they become so enamored with the cool factor of their tool, they'll do whatever is needed to slap the tool into submission just so they can continue to use it on problems far better suited for some other tool.
Is that SUCH a terrible thing? Taken to the extreme, yeah. Trying to do architectural drawings with a crayon is pretty lame, and doing the equivalent with software development tools could really hurt. But there's a big difference between using a tool that's simply not the best fit for the job vs. using a tool that's clearly wrong for the task.
So if you can assume that perhaps being in love with your tool isn't the end of the world, as long as you don't take it to the extreme, and assuming that your tool (like Java) is capable and powerful and works *well* (even if not always the best) for the widest range of problems you're faced with, then what else can we consider about coolness and being in love?
(First, yes I am making the assumption that people who really care about the coolness of their tools are also likely to really love those tools. I love my Mac. I even love my cool skis. And yes, I still love Java. Could be a girl thing, sure, but I've been around enough men in my life to know they're just as capable of feeling the "L" word for their [insert cool gadget including stereo system, car, guitar, power drill, espresso maker, golf clubs, tivo, etc.])
But first, I'll argue that if tool coolness really didn't matter--that it was about what cool things you could DO with it, rather than its inherent coolness or sex appeal--then why does it matter in so many other areas? We are emotional creatures, even when we claim to be logical and rational. If the coolness of our tools didn't matter, we'd all be driving (forgive the phrase) "butt-ugly" cars. Things where not an ounce was spent on design or aesthetics or coolness, so that it could all be spent on things like safety, reliabilty, efficiency, etc. After all -- if the goal is to drive to San Francisco, then THAT's the "cool thing we can do with it", and all we should be concerned about, right? The tool we use to get there is not what matters as long as it's the "right tool for the job" and in that case the right tool would presumably be the one that would get us there with the least amount of pain and expense. And iPods certainly wouldn't be dominating the mp3 player market. And about a zillion other products that rational left-brained engineers buy would look different and be purchased with different criteria.
The psychologists and neurobiologists tell us it matters even when we kick and scream and claim it doesn't. Our brains betray us under the scrutiny of an fMRI scan, where parts light up when we see something beautiful or sexy. (There's a whole other issue about WHY we perceive certain gadgets as "sexy", but I won't go there.) The point is, sexy and cool matter to us at our core, as human beings. We cannot escape it. Sure, we can work to "fight" those impulses... but I remember attending a sales training course a decade ago where the teacher's first words were, "The biggest misconception people have is that *consumers* buy emotionally while *business* customers buy on logic. The fact is, EVERYONE makes decisions with an emotional component, it's just that with business customers you have to provide the facts they need so that they can justify their emotionally-made decision and continue to delude themselves that they made The Rational Choice." Think about all the things you've bought in the last year where you told yourself a really good story to justify it..."The extra pixels on that 23" display will make me more productive." and "No, seriously, this car has a better resale value. It's an investment."
I think I mentioned in an earlier post how Don Norman, usability guru, was once known for strongly advocating ease-of-use over aesthetics , smugly deriding designers for choosing, say, "sleekness" over ease. And of course even HE has somewhat changed his message -- although he still demands usability, he is (passionately) acknowledging that the emotional aspects of design DO matter. A Lot. (And since I have a rule that says I must try to work in something related somehow to Jini with every post, don't forget my favorite geek book of all time, Gelernter's Machine Beauty ).
Cool matters to you. Get over it. It's just part of what makes you human. ; )
But now we come to the Big One. The reason that coolness SHOULD matter: Passion.
Coolness (or just perceived coolness, it really doesn't matter) is linked to passion. The cooler you perceive your tools to be, the more passionate you are about those tools. And passion, while it might lead to the "everything is a nail" syndrome, has an extraordinary amount of value!
Obviously there's quality of life... a life with passion is certainly more fun than one without. And the more passion, the greater the chances that a person has what psychologists label optimal experiences . And the more optimal experiences one has, the more likely one is to describe life as being "happy". So, passion = optimal experiences = happiness. And research says happy people are generally more productive. Certainly they're more spirited and fun to be around...
But that's still not the Big One. That people are happier in their life is just a nice side-effect. After all, plenty of people believe that you do some things for money (work) and then you do some things for the chance to express your creativity and passion (hobbies). Hugh Macleod refers to it as the sex and cash theory . Many people believe that it's naive and immature to expect your job to offer self-actualization and personal fulfillment, and that you're on your own for THAT. Of course the level of enthusiasm and passion on java.net means I'm largely preaching to the choir here; although there's still a division between people who are passionate about the things they create using the tool vs. the tool itself. And often, that distinction really doesn't matter. If you're passionate about doing the work, that's the real key.
Still... here's why having a cool tool DOES matter:
Think about how people behave when they're passionate about a hobby or cause. They read about it voraciously. They stay up late at night trying things. They seek out others who share the same passion. They're always trying to get the latest and greatest. They're excited. They try to go from user to power user to master.
Tool coolness can increase the chances of the tool user becoming passionate. And when the tool user is passionate, all those other good things happen. As a manager, I'd much rather have employees who wanted to learn more, stay current, be excited about learning cool new things, etc. rather than the kind for whom any spare time is spent on their *real* things they think are cool. More importantly, as a product *creator* (and this is where we ALSO come in as developers), I'd MUCH rather have my customer/users be passionate about my product. Then I don't have to resort to advertising gimmicks, since word-of-mouth from people who are passionate is unstoppable and the greatest marketing power today.
Can this be dysfunctional? Of course. Passion can become an unrealistic obsession. But that's the exception, not the rule. And of course we DO hope there's a certain amount of fickleness over the long run... that we don't just say, "this is the only tool I will ever love for the rest of my life." In other words, we hope people can become passionate about multiple tools, even if that passion is sometimes serial as they leave one behind when finally seduced by the newer, still COOLER tool...
I guess I could summarize all this by saying that the idea of tool coolness is *not* disrespectful to the professional community of software developers, but just the opposite. That by working to make a tool cool, the tool itself becomes an object of excitement, enthusiasm, and passion. And THAT has value all by itself. So coolness for coolness sake really DOES matter, because it ulimately ripples throughout someone's daily life in ways that can seriously matter. People have changed careers and lives based on a tool that was just cool enough to spark the light that eventually became something much richer and deeper. I do believe that building tools that give someone the power to do something cool is the most important goal, but often the best way to help make that happen is to make the environment in which they do those things... cool.
So I'm not really addressing whether Java IS or IS NOT still "cool and sexy" (personally, I think it is. ), because that's a personal choice. But anything any of us can do to try to inject coolness into the tools that WE build (as Sun can and sometimes does with Java), can actually help make the world a better place. : ) (She says, typing this on her very cool G5 iMac while listening to her very cool iPod through her very cool stereo and googling on the very cool saddle she wants to get for her very cool Icelandic horse, and grateful for everyone who helped create these things.)
I feel very lucky indeed that the things I'm paid to do are also the things I find really cool. If we can make that happen for other people, by building the tools WE develop with an eye towards the cool factor, they'll thank us.
(And if anybody involved in the creation of the iPod, or the new iMac G5, or Adobe InDesign, or the J2ME Wireless Toolkit (although I'm still pissed you aren't supporting Macs), or Jini happens to be reading this, thank-you!)