The Software Imprinting Dilemma

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


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2007/07/the-software-imprinting-dilemma.html

Try Ubuntu :slight_smile:

You have just explained why people still use Visual SourceSafe.

It’s really sad to see that imprinting is such a strong characteristic of even developers that VSS still even EXISTS, especially given the existence of products that are superior in every way and free.

This is why I started playing with NetBSD at home. I liked it enough that it’s the only thing on my main desktop. I do need to learn more about editors for it though, because I’d really rather use KDevelop than Vim for programming projects, but I still hate the automake system…

I’ve totally experienced this. In fact, that’s probably the reason why I’m still using Windows nagware on my Linux box [1]. I just can’t find anything else with the same feature set, and I’m addicted to using those features.

[1] http://www.brainonfire.net/2007/04/26/windows-nagware-on-linux-box/

I think our IT department imprinted on Lotus Notes.

I agree that acquiring some level of experience with different editors/IDEs is very valuable. It has made me much more critical and curious about my user/developing experience, and how to make it better: shortcuts, add-ons, habits that might need changing…

I’m paid to work with C#/Visual Studio, but try very hard to come back to Java/Eclipse as much as possible for personal projects. I had experience working in Eclipse doing Java for at least a couple years before getting into .NET and thus VS2003. At first I hated VS because it was so far behind (or missing altogether) several of the Eclipse features that impressed me. With VS2005, the gap narrowed, and with ReSharper even more, but then my time working with Eclipse is also shrinking.

Meanwhile, I have never felt comfortable in either without having a session of UltraEdit open at the same time (for notes, random text/non-code files, extra (and cross-session persitent) clipboard storage, as well as certain editing function entirely missing from VS (and Eclipse) or just more comfortably done by me in UE (columnar-editing anyone?). I was imprinted to UE early on by my father using it for Java before Eclipse hit the community.

I now use a Macbook Pro for this exact reason. As a security professional, I need to be proficient in the top 3 desktop OSes or risk looking silly if I ever run across a Mac that I need to assess/audit. I also need to be able to run any tool out there on its native platform.

I’m trying to fight the OS religion by using all three on a daily basis (on the same laptop!). I’m a long time vi/vim user just because it is almost always available on a *nix system nowadays while emacs isn’t.

I think the attitude of “right tool for the job” goes well with fighting the tendency to imprint on a given technology.

Weird, I think I didn’t have that baby duck syndrome. My first IDE in college was visual C++ and I hated it. Then I used netbeans and I kinda tolerated it (damn! that thing’s slow). Struts studio was the next IDE and I liked it very much, until I was forced to use eclipse. Now I LOVE eclipse. Maybe now I have the duckling bonding with this IDE, but it’s my 4th IDE and I guess it doesn’t have much in common with visual c++.

In addition to thinking of this in psychological terms (imprinting) it’s also useful to think of switching editors in economic terms (switching cost: a href="http://en.wikipedia.org/wiki/Switching_costs"http://en.wikipedia.org/wiki/Switching_costs/a).

You have a point.
Thats the reason why I get upset when you say that 'Installiing an aplication in OSX is not designed well (no at all designed?) and someone else gets upset when I say that Vista security warnings are a pain…

By the way, I think one side effect of the Software Imprinting Syndrome is that we tend to follow the steps of the software imprinted in us in ALL THE PROGRAMS WE BUILD in the future. This, I think is more felt in GUIs (partially because they are the most visible parts).
When I design a JSP the buttons are always on the far right and when a Windows-imprinted person does, they are almost always on the center.

D. Markle: dude, I CANNOT get my brain around anything other than VSS! I need help! I love VSS and have NEVER had a corruption issue. Everything else seems unreal and overly complex for just a couple of users!

This is a great post, Jeff - and a great term that I had not encountered before; thanks! There’s a flip side, however, and I hope you’ll write about it. That is: those who are perpetually trying new things in search of the “best” can have trouble developing expertise - or even fluency - with any one of them. I think developers tend to suffer more from this than from BDS.

I dunno, I can see this happening to me in some ways but not in others.

C++ is still close to my favorite language, quite probably because it was my first. C# is giving it a run for the money, but largely because it feels like C++ minus the bad parts.

On the other hand, you spoke a lot about editors, and I don’t think I’ve imprinted at all on those. I started with a DOS based Borland IDE, but when I changed schools worked more with NEdit and g++ which I ended up liking better. On my internships there was CodeWarrior and ProjectBuilder. CodeWarrior was decent, but I didn’t develop any attachment to it. Then when I finally started doing some coding at my current company it was with VS2003, which I upgraded to VS2005 after a few months.

I’d probably be hesitant to try another editor now (other than a new version of VS) but it’s a bit late for it to be considered imprinting…

Steve Bush: The IT department at my company also imprinted on Notes. Unfortunately, I imprinted on Outlook 2003 long ago.

I CANNOT get my brain around anything other than VSS! I need help!

Are you serious? I’m really asking.

http://www.codinghorror.com/blog/archives/000660.html

those who are perpetually trying new things

Ah yes, the developer as magpie… http://www.wonderquest.com/magpie-shiny.htm

I really don’t think people imprint on software. The situation with the geese and ducks seems quite different; they have had their entire biological behaviour altered as evidenced by the statement regarding their attempts to court with Lorenz.

With software, I believe the hesitancy to move on is simply (a) fear of the unknown and (b) laziness. As long as we don’t know for sure that our software tools are holding us back, we will stick with them because it seems more difficult to switch and learn a new environment and we are afraid that that effort may be wasted if the tools don’t pan out. I don’t think most people are beholden to a software environment with the same level of passion as the term “imprinting” seems to suggest. People ask me why I don’t install and use Ubuntu; the answer is just that Windows does what I need it to do and so I see no tangible gain to switching. Switching would take time and effort and would likely not provide me with anything that I can’t get through Windows so I’m not going to make the transition.

I wouldn’t dream of using VSS even for a single-user project, since I use multiple machines and multiple operating systems. However, I might just be imprinted on non-distributed concurrent versioning systems …

So, I will be suppressing my advice to VSS users until I’ve worked with a distributed system for a while. After all, they find our use of non-distributed systems as horrifying as we find VSS (and other non-concurrent or pseudo-concurrent systems) …

http://www.youtube.com/watch?v=4XpnKHJAok8

I regularly use Visual Studio, Emacs and Eclipse in their latest versions. There are still things I can accomplish easily in Emacs which are very difficult to do elsewhere (editing binary files, parameterizable keyboard macros, regexp search and replace, running external filters on a selected region, etc… etc…).

Surprisingly I can also make this statement about eclipse. I can no longer easily digest a chunk of Java code without the ability to expand the call hierarchy of a function or find all references to a variable or a class without waiting for and endless churning and indexing of god knows what. Amazingly intuitive refactoring that just works.

I’m sure there are things VS is good for but so far I haven’t discovered them.

Switching would take time and effort and would likely not provide me with anything that I can’t get through Windows

Yes, but how can you know that without switching, at least for a little while?