IDEs are Code Smell

A pile of various hand toolsPretty much every computer programmer uses an Integrated Development Environment. Pretty much everyone has their favorite: Eclipse, IntelliJ, Sublime Text, Emacs, Vim. There will never be consensus on which is best. Fortunately there doesn’t have to be. The wide variety of work environments in use in the open source world has forced language designers to invent standard, robust, IDE-agnostic build environments. Java has Maven and Maven archetypes. Javascript has npm and Yeoman. Scala has sbt. These tools allow you create, build, and manage the dependencies of your project without ever touching an IDE.

IDE-independence has a lot of advantages. Command-line only environments play nice with continuous build systems. They make it easier to on-board new developers by removing IDE-specific tweaks that often take root as undocumented lore. They tend to be more stable, more future-proof, and more popular than IDE-specific build techniques. (Which makes a big difference when you have to go ask a question on StackOverflow.) Also, developers have their favorite tools for a reason, and when you force them to use something else it hurts their productivity.

When starting a new software project you should adopt a strict IDE-agnostic policy. The rule is “I shouldn’t be able to tell from anything you check in to source control which IDE (if any) you are using”. Putting this policy into place isn’t hard–it’s just a matter of using the right tools to create a fresh project. After that, things pretty much take care of themselves. A little up-front standardization wards off a lot of build environment technical debt down the line.

This entry was posted in Those that have just broken the flower vase. Bookmark the permalink.

3 Responses to IDEs are Code Smell

  1. Jeremy Kahn says:

    Reblogged this on Trochaisms and commented:
    Some useful thoughts on IDEs (really, the virtues of packaging) from my complementary-distribution doppelganger Bill McNeill, now currently occupying our interdisciplinary niche in Boston.

  2. W.P. McNeill says:

    True story. I once worked on a team that had a very important piece of code that would only build under Eclipse. I checked out the code and installed Eclipse, but couldn’t get it to build on my machine. So I sent email across the country to the developer asking for help. We went back and forth for a while, but we still couldn’t figure out my problem. “I don’t know,” he said. “It works on my machine. Why don’t you give me a call.” So I called him on the phone, and he tried to talk me through debugging my environment, still to no avail. “Can you share your screen with me?” he asked. I did, and we spent a little while longer on the phone with him watching what I was doing. Finally he said “Can you give me control of your screen?” I turned over control of my keyboard and mouse, and watched as he made an arcane series of adjustments to my Eclipse configuration. “There,” he said, “now it works.” And indeed it did. But all I could think was “how many other people on the team have wasted four hours of their time?”

Leave a Reply

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

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

Google photo

You are commenting using your Google 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

This site uses Akismet to reduce spam. Learn how your comment data is processed.