Coding Horror

programming and human factors

The Software Imprinting Dilemma

Ducklings and goslings imprint on the first creature they see shortly after birth.

[Austrian naturalist Konrad Lorenz] discovered that if greylag geese were reared by him from hatching, they would treat him like a parental bird. The goslings followed Lorenz about, and when they were adults they courted him in preference to other greylag geese. He first called the phenomenon "stamping in" in German, which was translated to English as imprinting. Lorenz thought that the sensory object met by the newborn bird was somehow stamped immediately and irreversibly onto its nervous system. In other experiments, he demonstrated that ducklings could be imprinted not only to human beings, but also to inanimate objects such as a white ball. He also discovered that there is a very restricted window of time after hatching that proves effective for imprinting.

Imprinting is a powerful biological imperative in certain species, particularly geese and ducks.

ducklings and duck

But humans also succumb to imprinting, in our own way; in computing this is known as Baby Duck Syndrome:

Baby Duck Syndrome is the tendency for computer users to "imprint" on the first system they learn, then judge other systems by their similarity to that first system. The result is that users generally prefer systems similar to those they learned on and dislike unfamiliar systems.

I'm as guilty of software imprinting as anyone. I was provided an evaluation copy of Visual SlickEdit, but I couldn't bring myself to try it out because I have already "imprinted" on the Visual Studio editor. I'm still learning ways to be more effective in my preferred editor; is it really worth my time to divide my effort and attempt to learn a new, unfamiliar editor that I may not even ultimately use? That's the software imprinting dilemma:

Baby duck syndrome affects the way you learn to use computers and software. It can make it hard for you to make the most rational decisions about which software to use or when the learning curve of a given thing is worth the climb. In general, it makes the familiar seem more efficient and the unfamiliar less so. In the short run, this is probably true -- if you're late for a deadline, the best thing to do is not to switch to a new operating system in the hopes that your productivity will increase. In the long run, it's worth trying a few things knowing that they won't all work out, but hoping to find the tools that match your style best.

It's impossible to understand the alternatives when you can't muster the energy to get past your own software imprinting. You can't rationally compare alternatives with no experience in the alternatives, and software imprinting robs you of that vital experience.

There are periodic Usenet group debates about programming editors where various people will proclaim with conviction that their preferred editor is the best. In some of these debates I've asked some of the believers of various editor faiths if they'd ever tried various other alternatives. Well, no. They had never used CodeWright or Visual Slick Edit or Multi-Edit or assorted other editors. Some claimed to have used another editor about 5 or 10 years ago, but not the latest version.

When I started asking around, I discovered that it's hard to find people who have used recent versions of two major editors, so it's hard to find anyone who can intelligently compare the features of various editors. I use Visual Slick Edit personally. There are things I want it to do that it doesn't do. But I don't know whether any other editor can do all the things I like about Slick plus the things I wish it did.

Maybe it's time to experiment with new operating systems, new applications, and new editors, even if we're happy with our status quo. We should put allegiances and familiarity aside, and push ourselves harder to go beyond our software imprinting-- otherwise, we literally won't know what we're missing.

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Exchange and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: http://twitter.com/codinghorror