The Software Imprinting Dilemma

I used to also have UltraEdit open all the time… But now it’s Notepad++ which is also free :slight_smile:

Imprinting or Cost of Switching or whatever you wanna call it has deep implications for developers as well.

If one is trying to replace (or at least provide an alternative for) some well established application, one should not try to be too original. When the user finds out that the shortcut keys xe memorized (or got imprinted in xis muscle memory) are not working, xe is instantly disgusted of the prospective replacement. Et cetera.

I tried SharpDevelop and it was awesome and it had all those great features not even occured to VS guys, but, ya know. It also had all those crazy key combinations that didn’t even make sense (yeah, I don’t even see CTRL-K+CTRL-D – all I see is blonde, brunette, redhead…) and the IntelliSense (sorry, that’s a ™ so it’s Code Completion, yep?) just didn’t behave right, ya know? So SD’s gathering dust in my HD while I kid myself that I’ll give it another whirl sometime.

When Opera browser first went free (and stopped sucking at the same time) its devs had insistently insisted on not implementing CTRL-Enter for address completion. They honestly believed their way was better and more intuitive. This was almost a turnoff. Luckily they gave in after a few minor versions.

There’s no question about which editor is the best. The best editor is vi.

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

Jeff, dead serious. I am forced to use Clear Case, which bites.

VSS rocks! (for = 3 people).

Loved this once again Jeff, what a great article. I hope your site isn’t imprinting me though, as I’m starting to get strangely addicted to your codinghorror logo. keep up the good work…

The thing I’d worry about is, by acquiring a broader experience in my tools, I might become a jack of all trades, but master of none. But I suppose that’s a question of balance.

It’s no good to be super-efficient in one editor, but virtually useless in anything else. But it’s also no good to be 50% as efficient in each of 5 different editors, when you’re using just one of them 95% of the time.

So the key is probably to develop passable usage skills in a variety of tools, without neglecting your “primary” tool. You may be able to pump up your efficiency by filling the gaps in your favorite tool’s functionality by booting up others as needed.

For example, when I am working in SQL, I usually have a query editor, a notepad instance, and an Excel instance open. The query editor is used for the bulk of the editing, but when I need to query all but two of the columns on a table, I can copy the column list out of a schema browser into excel, add commas and aliases to each column in the adjacent cells, use notepad to replace the tabs with nothing, or spaces repetitive manual typing or even pasting.

with nothing, or spaces repetitive manual typing or even pasting.

should be…

with nothing or spaces. All with minimal repetitive manual typing or even pasting.

Software imprinting is one thing that, for whatever reason, isn’t a issue for me. I’m a geek at heart basically; I enjoy trying and getting proficient with new OS’s and applications. I can use GUI and the Command Line, KDE/Gnome/Windows/Mac OS…

…but that said, IDEs take some getting use to, so I can’t really switch between them willy-nilly on a given project. At the moment I’m using KDevelop under Debian. The hardest part was getting my head around the automake/separate compilation process, but once you’ve done that, it’s easier than doing it by hand.

I’m suffering brain tumors because I daily use Visual Studio with C#, Eclipse with Java, Xcode with Obj-C++, and an IDE that I created for editing web pages. I hate them all. I’ve even sampled a few other tools (my biggest flirt was to try command line unix using emacs as the core editing tool), and I can only say that they are all universally awful.

I know that its bad form to use swearing in a post, but I really need to describe the available dev tools in lots of four letter words that would turn a sailor’s hair disabled system grey.

We’re software developers and develop the tools that we use - so the people that we need to point accusing fingers at are ourselves. Our lives are already hard so why are we making it harder by writing unusable software that we have to work with? Something seems crazy about that.

But while programmers remain poor software interface designers, this horrible situation will remain.

Steve, I can’t believe you’re serious.

SourceSafe is urine. Pure asparagus-tainted, post-workout, semi-dehyrdrated urine.

Let’s just forget about the corruption issues for a moment. Let’s forget about the stale-locking issues and all of the ludicrous artificial contention issues on project and solution files. Let’s also forget about the poor performance over WANs, and forget about the incredibly annoying “VS Integration” that makes it all but impossible to easily copy your project to another location on your disk.

The real reason you need something better is this: VSS can’t version directories. Without that feature, what is the point? I mean, really? You delete a file or folder in VSS. Where’d it go? Uh, somewhere. Oh, and if you add another file back to your project, VSS wants to know if you want to “recover” the old file? WTF? It’s a different file, and the product should know that. What if you want to see a copy of your project as of a certain point in time? No way to reliably do that in VSS, not even with tags, since directories are not versioned. And don’t tell me that you never go looking for old versions of your code – the reason you don’t do it is because you don’t try because you know you can’t.

If you want something simple for 3 users, download a copy of Subversion. Run the default install, without apache or BerkelyDB or any of that crap, just do a FSFS repository on your LAN on a file share, just like VSS to start. Run a copy of TortoiseSVN to integrate it with your desktop. Run AnkhSVN if you want VS integration.

I swear to God, I was interviewing this guy 3 months ago for a lead developer position. I asked him, “What do you use for SCC?” He said “VSS”. He was quite proud of his “repeatable” build management and code control strategy, so I asked him what he did when a developer moved a file from one directory to another. He said, (I shit you not), “I punish that developer.” This man did not get the job.

Spend some time working on better tools, and you will be a better programmer. Obviously you read this blog, so you’re well on your way. Now take it to the next level. 4 hours spent on SVN, and you will never ever go back.

Sorry for the long post, but VSS is one of those things that just pushes my buttons.

My editor of choice is vi/vim, which I have user for … well forever.

My opinion is that you cannot try an editor like vim. You have to use it day in, day out, learn every new trick you can, talk to all your friends that use it, and then over time you “get it” and editing becomes very fast and productive.

Until that time you are less productive.

The investment is so high that IMHO it doesn’t make sense to “try it” and see if its better than what you are using now.

But why would anyone want to use anything but OSX? :wink:

Joseph, that’s a cult. Totally different thing!

Hi Jeff,

I’ve been learnt Microsoft stuff at school (VB, ASP and Access). We learned also with Oracle database.
After my training (Visual C), I got a job to work on OpenVMS with Cobol, DCL and Fortran. It was very interesting… Then I’ve been decided to install Linux(Red Hat) at home. Then I’ve been learnt many interesting tools like Perl, VIM…

I want to buy a Mac. I want it to continue to explore computer world. And also it’s easier to use an Ipod with a Mac than Linux :slight_smile:

If someone really likes his job, he (or she :slight_smile: )find a way to improve himself, try new technics, push limits…

It’s the reason why Christopher Colombus discovered America…

Regards.

P.S.

My chinese is worst than my english…

I agree with you because at first I thought linux was not for me but when I tried I love it more than windows and use it more and more for my programming tasks.

Either “The Pragmatic Programmer” or possibly “My Job Went To India” recommends learning unfamiliar development environments for precisely this reason. To avoid Baby Duck Syndrome. If you’re used to Ruby and TextMate, build something in Java with Eclipse, etc. It’s very tricky. The more gear-switching involved, the harder it will be. It’s not the language or architecture that’ll throw you, it’s the little things. And it’s hard to stay completely up to date in two languages at the same time. It’s like being on top of slang and pop culture in both America and Japan at the same time.

Wow. You’ve just described every ColdFusion developer.

I can find examples of software imprinting in my own life, but at the same time I can find examples of bucking the imprints, as well.

My first experiences with a computer were with a TI-99 4/A, the first OS I really used to any extent was on the Apple II clones, the first GUI was on an Apple IIgs, the first code editor I used was emacs.

I’m currently using Windows 2000 and Vista (work and home, respectively) for my OS, and Visual Studio for my coding environment.

That being said, my switch to Intel was mostly due to the release of Doom and previous exposure to Wolfenstein 3D. My use of Windows was also largely related to games around the time DirectX 3.0 became widespread. The use of Visual Studio is largely related to exposure at work.

Today I find the largest block to switching any part of my development environment (OS, IDE) has to do with the fact that I find it easier to learn new languages than to learn new APIs. I’ve found that even most of my resistance to Java and many scripting languages has had to do with APIs more than the languages themselves.

The imprinted duck (forever stuck on what they learned at first) and the magpie (forever going after that next shiny object) represent the two extremes of the spectrum of tool use in the software development community. The important factor in this issue is understanding that the spectrum represents the use of tools.

What works best? There should be some criteria for choosing. This criteria should be based on economics (cost of switching minus the cost of extended benefits). It should also be based on the user satisfaction and the quality of the results. Why isn’t there more discussion on that level?

Without some kind of objective analysis in the project we end up with the religious wars that we have been plagued with since the dawn of the computer nerd (e.g.: VSS is evil; no it’s good!).

“There’s no question about which editor is the best. The best editor is vi.”

One of the things that really annoys me about openSUSE (or at least my particular installation, or even my own lack of skill) is my persistent inability to successfully compile Vigor. It makes Emo Kid cry.