Home > Projects > Code Completion Considered Harmful

Code Completion Considered Harmful

At least, for me. ;) Here’s why:

I’m working on a project to interact with a complex COM-based Windows DLL. There is some decent (not great) documentation of the deeply-nested object model used by this DLL. So, to get started, I decided to prototype in VB.Net. I figured that the IntelliSense in the Visual Studio IDE would help me get the nested properties right.

A few hours into it, I realize I’m not thinking anymore. I’m not even trying. Instead, I’m typing something that might be close, then scrolling through the list of properties. I pick one, type a dot (.), then repeat. It’s “programming by poking around.” And it’s wasting my time. (Sigh.)

Here’s the truth: I don’t really know what I’m doing with this DLL’s object model (yet). I have a vague idea, but rather than read the documentation, I jumped into it. “Git ‘er done!” After all, “it’s just a prototype,” right?

Wrong. It’s a learning experience. And the best way to learn to ride a bike is to throw away the training wheels.

Four years ago, I was forced to throw away my statically-typed security blanket and code-completion training wheels. I kicked and screamed like a baby. But, I started to mature as a programmer. I became better, by using tools that were worse*. It might stand to reason that I’m better now in VB.Net after learning Python…if I didn’t have to constantly fight the warm, cozy lull of the IDE as it tries to put my brain to sleep.

Finally, a question, esp. for Managers. Which would you rather have: better tools or better programmers? (Hint: the latter will save you a lot of money in the long run.)

*Incidentally, this works with music, too. Get good on a piece-of-junk guitar, then trade up for a Strat.

Advertisement
Categories: Projects
  1. guitarmanvt
    December 28, 2011 at 8:40 am | #1

    A friend commented on another venue:

    You and I batted this around before so not rehearsing old points. But I did shake my head just now.

    Saying this with loads of respect, but also being truthful – you’re dissing a tool because you used it wrong. Intellisense is an incredibly powerful tool that when used correctly, makes a programmer much more productive. You used it incorrectly, then blamed the tool for existing, threw it away, and then said you somehow became more mature as a programmer afterwards.

    I love you homie, but can’t buy that line of reasoning.

    • guitarmanvt
      December 28, 2011 at 8:41 am | #2

      I hear you, my friend. I used to love IntelliSense and the Microsoft Visual Studio IDE. I really did. They do still help me with the extremely verbose syntax that is necessary with deeply-nested object models and meaningful-but-long type and variable names.

    • guitarmanvt
      December 28, 2011 at 8:42 am | #3

      It was despite my deep emotional attachment to code completion that I was forced to learn Python. I complained until my boss bought me Wing IDE, which has the best code completion for Python, IMHO. But after a while I realized I could write better code without code completion. So I don’t even use Wing IDE much anymore.

    • guitarmanvt
      December 28, 2011 at 8:43 am | #4

      And, as always, thanks for your honest feedback. :)

  1. No trackbacks yet.

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 )

Connecting to %s

Follow

Get every new post delivered to your Inbox.