The Software Imprinting Dilemma

I wonder if this is what drives the brace style wars.
I first read and used Alman style braces (Actually Begin End type of keywords in pascal). My brain got set up to look for the brace to find where the block begins and ends. Now I have a hard time reading code with KR style bracing, where you just look at the overall indentation. If I had read and used KR style first, I wonder if that would make a difference.

I believe that we imprint on the first tools we use. I cut my computing teeth on 8-bit platforms where BASIC was the “operating system”, then moved to AmigaOS 1.3 at home and DEC Ultrix in university. Both had GUIs but really demonstrated their power at the command line shell. In fact I used AmigaOS as my primary OS in one form or another right through to early 2000 and almost always had a CLI shell open as I worked. KingCON with command and filename completion was way faster then pushing icons around.

Now I use Windows at work and do nearly everything using Cygwin command line tools. I use Linux at home and usually have multiple terminals open. My brief period of Windows usage at home just about drove me insane trying to do anything (I didn’t know about Cygwin then).

I’ve developed something of a resistance to using GUIs for a lot of tasks, because I know I’ll just get things done more slowly and feel frustrated by the experience. But for managing and manipulating photos, where the first tools I used were GUI-based, I wouldn’t dream of using command line tools (even though the Imagemagick suite is very capable).

For imprinting I was a Mac user for a long time and occassionally jumped to Windows when it was necessary (school and work basically). When using Windows, Linux and Mac desktops you can see the shortcomings in all of them.
I’ve tried to use XCode on the Mac but couldn’t get it. I’m much more comfortable with Visual Studio on Windows for some reason. But I think part of it is because I use it 8 hours a day instead of an hour or two after dinner.
I wouldn’t say I’m imprinted but I do have my preferences. .NET and Java jobs pay way better than PHP based jobs. I use the free stuff when it will do, but I know I’m more productive when I have the tools for the job (visual studio, IIS 6, and SQL Server).

Could this ( (software) imprinting) also be the root of OS/IDE/Editor ‘holy wars’?

In my own experience, early on in developing skills for Linux, I realized quickly I was going to have to move on from pico/nano if I was going to do anything ‘serious’. And in the world of Linux, it mostly comes down to two choices: Vi or Emacs. I chose Vi, because it was the quickest for me to adapt to and be productive in.

I should probably take a tip from this article and the accompanying comments and take another stab at Emacs, now that there’s no pressure to have to fix that ‘XF86Config’ file(it was something different in the 3.3 version…)!

And bravo to commenter who mentioned Forth!

complaining about an extra feature on Google that was only useful to advanced users who learn how to use it

That actually wasn’t what I was complaining about; I was complaining about the fact that this advanced feature is on the homepage of every single Google user.
http://www.codinghorror.com/blog/archives/000920.html

How can you just continue to write in English, without switching to Japanese or Polish, at least for a little while?

I hardly think trying a different editor is analogous to learning a new language. Heck, I don’t even think learning a different computer language is remotely analogous to learning to speak and write a human language.

Regarding speaking different languages - I think this is similiar… but not something easily done given most of our ages (I say that because I’ve been informed that the younger you are, the easier it is to learn another language). I learned Spanish when I was a young teen, and it does show you (like living in another country for some amount of time) a different side of things that I think you wouldn’t normally see.

Some things in Spanish just can’t easily be translated into English… and unless you can see that possibility (which is also possible with programming languages - you certainly may not be able to think about let’s say object-oriented design when the only experience you have is with VB6 that really doesn’t allow you to do it) it probably is very hard to think with those terms.

Wouldn’t you agree?

As the years have passed (I lived there in 93), I barely recall the Spanish, but can still speak a little bit to some people.

Jeff ‘The Shank’ Atwood: “I hardly think trying a different editor is analogous to learning a new language. Heck, I don’t even think learning a different computer language is remotely analogous to learning to speak and write a human language.”

I’m not so sure about that. To a point, I agree with Danny’s analogy, but not his conclusion. Leaning a foreign language gives you a new perspective on communication and may help you become more expressive, just like seeing what else is out there in IT-land may help you become more productive.

It’s more about not keeping yourself insulated from the big, scary world out there than it is about “effort exerted vs. information gained”.

imprinting can be leaveraged all the way to monopoly.

One thing that I try to be aware of when trying a new tool is to not develop an opinion of it too early. It’s easy to dismiss something as being bad when it’s really just different.

It takes time to learn the “best” way to perform the same task with different tools, and if we form our opinion quickly, and jump ship we probably didn’t grasp the true potential of the tool.

This discussion reminds me of the old saying “If all you have is a hammer, all the world looks like a nail.”

I’m all for trying new things in an attempt to improve my skills. However, biological imprinting of baby ducks (and humans for that matter) is actually a physical process of building neural pathways in the brain which provide the infrastructure to accomplish the learned tasks. This is the reason you can’t teach an animal that has imprinted on a human to be like it’s wild brethren. It’s also one of the reasons languages are easier for young people to learn and harder for adults. Adults form those same hardwired infrastructures for complex repetitive tasks (although much more slowly). I think this biological factor frequently outweighs intellect in our decisions to try new things. In many situations it’s probably a good thing though. It’s our brain instinctually telling us that we’re going to suck or that we are going to have to expend too much effort to learn something new that strays significantly from our imprinting because we don’t have the right hardware. My brain tells me that I’m going to suck at things a lot.

YEAH AND I FOUND OUT THE MAC REALLY IS BETTER!!!

I have things in my kitchen, arranged that way for over 10 years. I know where everything is, I don’t even have to think about where things are when I’m cooking. I just automatically grab things. It’s a beautiful dance.

If someone were to come into my home, re-arrange my kitchen in the most efficient manner, maybe optimizing my cooking time with the new layout, does that mean I will thank them and like it? I will have to relearn where the spices are, where the pots are, where the cooking ladel is… and, after a significant time investment, maybe I can cook meals faster. But while I am re-learning the location of my cooking implements, dinner will be delayed for a period of time. And if my husband does not allow delayed dinners, I’m gonna tell the person who re-arranged my kitchen to stuff it and leave me alone.

To a cook, knowing how to use your tools, where things are, and getting to them efficiently is very important. When someone wants to “help” us in utensil placement, they are usually chased out of the kitchen. We are creatures of habit.

Probably chimed in too late, but after watching the first demo of SlickEdit I’m left wondering what the heck the diff is - it seems like just another editor that does all the same things VS can do.
The titles of the other demos don’t seem to indicate otherwise; can someone tell me about a feature that is compelling enough to make all the effort worthwhile?

Even though I’m just talking about SlickEdit, the same seems to apply to many other apps/systems. They just do the same thing in slightly different ways, right?

"FOOLS!!!
“Don’t you know that ‘ed’ is The Standard System Editor?!?” ;-

(Or maybe punch cards. Honestly, punch card machines were better than many early editors! :wink:

Lately I have been trying to learn the D programming language. After using C# for so long, it’s hard to be patient without good tools. Visual Studio spoils programmers with intellesense and a powerful debugger. When a new language like D comes out, there are no books, no tools - just a specification and a compiler. It’s a big step backwards in productivity and it really hurts. D is a revolutionary new compiled language that is compatible with C and C++, compiles to native code, has many of the new programming constructs of C#, Ruby, Java, and Python, has garbage collection, autogenerates api docs like javadoc, and allows inline assembly language. It’s remarkable in so many ways, yet I’m really having trouble getting motivated to code without good tools. That’s one reason why it’s so hard for some of us to break away.

Another good way to break a comfortable imprinting is to change your phone OS the next time you upgrade your phone. I went from the Treo (PalmOS) to the Samsung Blackjack (Windows Mobile) and making those adjustments to accommodate the new interface really shook up the old neurons.

I’m currently trying to switch from MS Office to OO.org and from PhotoShop to Gimp, and while the Office switch has gone fairly well so far I can’t say the same about the Gimp. I’ve never been an “advanced” user in these programs though, and the most commonly used features are fairly similar (at least in the Office suites).

As a contrast, the switch I made from Visual Studio to SlickEdit some years ago gave me a huge performance boost. :slight_smile: I got some help to set it up to work almost the same way as Visual Studio, but with a few extremely useful features easily accessible. It only took me ten minutes to get hooked, but someone without the same help would no doubt need at least 20. :wink:

I still use Visual Studio occasionally (when I have to debug Windows SW) and it’s gotten better than when I first switched, but I can’t live without the superb code navigation features in SlickEdit.

My first system was a 286 with windows 3.1 with a 35mb drive. I don’t know what they where smoking when they came up with this syndrome but I’m sure as hell not comparing anything against that

I’m with others here in that imprinting is both a user and developer phenomenon.

Bad developers tend to become “imprinted” in all kinds of ways that actually hinder their ability to grow a better system. It’s the square peg / round hole syndrome all over again. Whether it’s laziness or fear of change, these devs keep making the same system.

I’ve seen devs make these highly functional Access systems that they turn around in days instead of weeks (for all its faults, Access is definitely RAD). But then when they are dropped into a .NET environment they start making screens that look like these Access Detail Control edit screens even though it’s actually bad for the app. I’ve seen the same thing with long-time web devs trying to build their first WinForms app. They’re so used to thinking in terms of post-backs and Sessions that they start building UIs centered around hurdling these limitations, even though they no longer exist.

But users are definitely guilty of the same thing and worse. Many users tend to attach business processes to screens. I’m rewriting a system here soon where the primary user has been ritually “snowed” by her current system. Her current system incorrectly implements the processes, but she’s been using it for so long and training others in its use and working around its limitations, that she hasn’t really stopped to think about iwhat/i is actually going on or iwhy/i she’s even having these data issues.

e.g.: every day they punch in data for Project X, then at the end of the week they punch in “weekly” data for Project X. But the weekly data is actually just 4 pieces of data for each day of the week, presented as 28 cells in a grid. Why not punch in this extra data every day along with everything else? “Because we need weekly totals from these numbers, they’re for weekly reports.” And if we punch them in every day, does that stop them from being part of the report? “OH yeah, no it doesn’t” (that’s a distilled 15 minutes conversation).

Personally, I think that users are actually the worst for Baby Duck Syndrome. Especially users who have always used the same system for their job. They get caught in the “system as process” rather than the “system implements process” line of thought.

Pfft. “People are sometimes resistant to change.”

sarcasm
Whoa. Stop the presses! Shocking!
/sarcasm

:expressionless: