Affiliate Disclosure: By buying the products we recommend, you help keep the site alive. Read more.
For those who are new to coding, there’s nothing more important for your productivity than a comfortable integrated development environment (IDE). But are integrated development environments always good? How do they differ from text editors and command-line tools?
And more importantly, what are the best IDEs out there? What should you look for when choosing one? All of these questions can be overwhelming, so lets take it slowly and go through them one step at a time.
Why You Should Use IDEs
We’ll start with the D and the E: development environment. What this means is rather straightforward: it’s a program (“environment”) where software development takes place. In other words, it’s where you write code and turn that code into a final product (e.g. compiled program, web app, etc).
What makes an IDE so useful is the I: integrated. You could use just about anything for a development environment — and many people use a variety of basic, individual programs in place of an IDE — but an integrated environment gives you the ability to do everything in a single editor.
For example, most IDEs contain debuggers. This means you can write your code and debug it in the same program. Without an IDE, you’d have to write your code in a text editor and then debug it with an external linter or compiler. Depending on the language, this can be a frustrating mess.
Many IDEs also include convenience features (e.g. easy navigation functionality, code auto-completion, class explorers, hierarchy diagrams, etc) and tools that help you automate development (e.g. source version control, testing tools, etc). Not all IDEs include all of these tools, and you may choose to use one with fewer features if it suits you better.
Every IDE supports a specific set of languages. Some of the bigger-name IDEs support just about every language you could ever want, while others are meant for a single language or a small subset of languages. (A great example is Xcode, Apple’s native IDE, which supports all languages that are used to develop Apple products.)
Most people will use a big-name IDE that supports a wide range of languages, but smaller ones can also be very useful if you’re in a niche area. For example, Eclipse can be used for Java, C, C++, Python, and even TypeScript, while something like ZeroBrane is specifically meant for Lua and nothing else.
By putting all of these features in a single place and interacting with them through a single interface, IDEs allow developers to program more efficiently. You don’t need to learn multiple programs, check compatibilities, get them working together, and even switch between them. This can save you a lot of time and energy.
When IDEs Are Simply Overkill
Of course, not everyone wants to use an IDE. For many projects, it’s overkill. For example, if you’re learning to code with Arduino, you’re not going to need a big, complicated IDE to get everything working. If you’re whipping up a quick script in Ruby to help you automate some tasks, you also likely won’t need one.
For these projects, there are lighter-weight options, like code-centric text editors. These editors provide syntax highlighting, are designed with more flexible interfaces, have powerful search and navigation tools, and are often extensible and easily customized.
But all they do is edit text. If you’re creating a program, you’ll still need a compiler, and debugging will need to be done manually. One massively popular code-centric text editor is Sublime Text:
Some coders prefer even more bare-bones methods of development. These guys use command-line tools to do their work. Although these tools don’t give you nearly as much help as an IDE, their command-line nature makes them great for automation and scripting.
Learning to use the command line is also great at helping you learn more about your computer and how it works on a basic level.
Which IDEs Are Worth Using?
There are tons of IDEs out there, and even if you’re new to coding, you’ve probably heard of many of them without even realizing it. You might have even used one without knowing what it was!
According to the IDE Index, Eclipse and Visual Studio are the most popular IDEs at the time of this writing.
Eclipse is a cross-platform IDE that works well on Windows, OS X, Linux, and Solaris, and is primarily used for Java, C, C++, PHP, and Python development. It also provides cloud-based IDEs so you can develop online.
One of the reasons why Eclipse is so popular (besides being 100% free) is that it’s highly extensible, so its behavior can be altered with plugins to better fit your workflow.
Visual Studio, on the other hand, only runs on Windows and is primarily meant for creating Microsoft apps and products. However, it can be used to produce programs for a variety of other platforms, including Android and iOS.
The most basic version of Visual Studio is free, but premium versions can be used to manage multi-programmer workflows and larger projects—you can even get development operations and large-scale team management functionality.
Another popular IDE for Windows, OS X, Linux, and Solaris is NetBeans. It’s designed around the creation of modules, which can be used for modular development of software. While it’s primarily meant for development in Java, NetBeans also supports C, C++, PHP, and HTML5.
And, of course, Apple’s native XCode IDE is another popular one. While it’s mainly used for building iPhone and Apple Watch apps, it can also be used to create for OS X and a few other platforms with support for C, C++, Objective-C, Java, AppleScript, Python, Ruby, and Apple’s Swift language.
IDEs Are Indispensable for Coders
As you can see, there are a wide variety of IDEs that support different programming languages and styles across all different operating systems. There’s even an IDE for the Raspberry Pi. Choosing an IDE when you’re getting started can be difficult, but going with a free one like Visual Studio, NetBeans, or Eclipse is a great place to start.
Once you become a coding master, you’ll have a much better understanding of what you need from your development environment.