First Exposure Effect

Programming is difficult business, and is not meant to be taken in ignorance, so says Douglas Crockford.

I mean non-trivial computer programming in a real world context (in your job, for example). As Alan Perlis would say, programming entails

making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical.

So it is no surprise that you devote so much time, energy, sweat and resources into building your programming career. Whatever is your first programming language exposure, it’s becoming more and more entrenched into your professional career.

When it’s time to program in another language using syntax that is way too different from your first language exposure, you may feel deeply annoyed. The programming idioms, style and philosophy are different.

You may encounter one of the following:

  • class-based vs prototype-based
  • imperative vs functional programming
  • OOP vs functional programming
  • strong typing vs loose typing
  • compiler vs interpreter
  • Java vs .NET
  • and so on and so forth

If you don’t know anything about the theory, history or rationale behind a programming language, you may be experiencing programmer crunch (that is, code first, theory later). The code deliverable is too urgent and all too important for your work that you don’t have time to learn the theory. You risk getting your tools bland. Or worse, it manifests as the Law of the Instrument.

If the only tool you have is a hammer, you tend to think of all problems as nails.

The worst of this first exposure effect is that, you tend to think of tools as if it’s a religious dogma. There is no such thing as the best tool. The best tool is the one you already know. But the caveat is, you need to be aware of its shortcomings lest you befall the tar pits of technical debt and obsolescence.

The antidote to the first exposure effect is jumping off the cliff onto a vastly different terrain. Taking a contrasting viewpoint and adopting it can be a rewarding experience. I like to think of it as the programming counterpart to mixed martial arts.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s