To IDE or Not to IDE?

Choosing the right tool for the beginning programmer

You’ve picked the language you want to learn, and you’ve learned more about the various language paradigms. You want to get started writing some actual code—but what tool do you use? With almost all languages, you can start writing code in any old text editor available to you, and that’s what programmers used to do, decades ago. Any good engineer, though, will find tools to make his or her job easier, and that’s where the Integrated Development Environment (IDE) comes into play. So now you need to learn how to use a tool before you can learn the language? Not necessarily. Although many programmers consider “should I use an IDE?” to be a question with an obvious answer, they don’t necessarily agree on what that answer is.

What’s an IDE, anyway?

In most cases, an IDE is a text editor with some extra bits added on to help you write code more easily. The text editor is at the core of the IDE, and works more or less like you’d expect. Many will highlight simple syntax errors on the fly, so you don’t have the experience of having a simple typo ruin hours of coding. They also often have an “autocomplete” feature, so that if you type system.math. and pause, the IDE will present you with a list of the various math functions available, so you don’t need to remember whether the square root function is sqrt() or squareroot().

Just about every IDE has a build automator of some kind that compiles the code, and builds an executable program by adding in any necessary libraries, some of which you may not even be aware of. Those same tools make it easier to organize and include any optional libraries, or ones you’ve created yourself.

The feature of most IDEs that you’d be spending the most time with, though, is the debugger. Depending on the IDE, it’s a suite of tools that will find errors in your code before it compiles, and then (hopefully) point them out to you so that you can fix them easily. That’s an oversimplification, and it’s far from foolproof: you’ll be swearing at the debugger for telling you that there’s a type mismatch on line 354 when the root of the problem is a logic error on line 256. But it’s a heck of a lot better than debugging by hand.

The Case Against IDEs

Now that you know what an IDE is, you want to run right out and get one? Not so fast; there are other sides to the argument. Depending on the language you want to learn, your choice of IDE may be quite limited, and the choices available might be fairly complicated applications. For example, if you want to use one of Microsoft’s .NET languages (C#, Visual Basic, or ASP.NET), you’re going to hear a lot about Visual Studio, which isn’t your only option, but it’s most common. The full version of Visual Studio is expensive, and has a lot more tools than a beginner needs, which is why Microsoft offers “light” versions for individual languages, free of charge, but even those can be pretty intimidating at first look.

You may also hear stories about “real programmers” who don’t use IDEs, but type all of their code perfectly the first time, from beginning to end, perhaps even in hexadecimal. Even if you don’t, you’ll probably hear from somebody who thinks that IDEs are overkill, and you can do everything you need with vi or emacs (which will then start an argument about whether vim or emacs add-ons constitute an IDE, and you don’t want any part of that; just back away slowly). Speaking very broadly, programmers who work in scripting languages, or languages that evolved from scripting languages, are more likely to regard an IDE as optional.

Your Fourth Grade Teacher’s Advice

For the very beginning learner, I think of it like using a pocket calculator. When you’re in the fourth grade, you learn to do long division by hand, but once you’ve mastered that skill, how often do you do it the hard way? You use a pocket calculator instead. Similarly, when you’re first learning, no matter what the language, it’s a good idea to be able to trace through the execution of the code by hand. You’re going to be generating lots of bugs, even in short programs, but you’ll learn a lot about your code by tracing through it on your own.

The programs you’ll be writing at this stage will generally be pretty short, and you won’t miss most of the features of a full IDE. You’ll be able to shorten the feedback loop between code and results if you don’t have to worry about a tool you’re not conversant with yet. The period before you’re ready for an IDE may be very short, a matter of days or weeks, depending on how quickly you’re learning. As a rule of thumb, once your code goes beyond one file, you should invest some time in learning an IDE.

Depending on the language, you may find it difficult to get any instructions on how to code without an IDE, or you may find the command-line interface for the compiler to be more obscure than a visual IDE. It’s worth noting that if you start by learning JavaScript, as I recommended in my first post in this series, all you need is a text editor and a browser, although you can certainly find JavaScript IDEs when you’re ready for them. The bottom line is that when you’re learning to program, the tool should be a help, not a roadblock.


Sign up for the O'Reilly Programming Newsletter to get weekly insight from industry insiders.
topic: Programming
  • zambithegreat

    IDEs are great for creating front end GUI type code which is mostly based on using API and canned libraries. IDEs are also good for decyphering large volume of convoluted legacy code you have to take over and maintain. But in general I think IDEs tend to weaken programmers’ technical skills (e.g. debugging skills) because the IDE automates and hides too much detail. As a result lot of programmers don’t have a clue what is actually going on under the hood which may be fine until you hit a problem where IDE has bugs or does something wrong, in which case a lot of programmers are dead in the water. Perfect example is the Eclipse IDE which is notorious for having bugs. If you use Eclipse you better get used to searching online for workarounds and bug fixes. Programmers who bypas the IDE tend to have a much stronger understanding of the build and compile process and can tweak and hack it if needed. A good analogy to what I’m saying here would be airline pilots whose flying skills have been weakened from their heavy dependence on automatic pilot (see WSJ article Pilots Rely Too Much on Automation, Panel Says).

  • ARaybould

    I have used IDEs, and found them useful up to a point, but I have yet to find one that does much to ameliorate the more difficult problems of software development.

  • Jeremy Deats

    Yes, your fourth grade teacher did tell you not to use a calculator. But find me one banker or accountant who doesn’t use a calculators and advanced spreadsheets to enable them to do their job at a professional, competitive level? Are you still a fourth grader? Are you an amateur coder who has something to prove to the world “I don’t need any assistance from software to help me write software” or are you a professional who understands in this competitive world, the IDE is your friend not your badge of incompetence. Grow some confidence my younger generation of coders and also know what your secret weapons are. A good IDE is such such a thing. A bad IDE on the other hand can do the opposite.

    Professionals software developers want to be as productive as they possibility can. The (right) IDE is just a tool that’s going to allow you to enhance your already honed skills and give you an edge. There is no good reason to not use an IDE. It’s just power tools.

    If you were a carpenter would you build your furniture 100% using hand tools or would you use power tools? In situations where you can be more productive with a power tool, you’d be a fool not to. Knowing how to pick a good IDE that meets your needs, understanding what performance improvements it provides for you and understanding how to customize it are core to being a professional developer. The key thing is it should never be a crutch. You should always be capable of going back to the manual way of doing things if you need to. But to avoid IDEs altogether is not a rational thing to do outside the immature bragging rights that seem so important these days.