In choosing a code editor, your options range from simple, dressed-up versions of Notepad, to integrated development environments capable of running applications.
Developers decide to use specific code editors for a variety of reasons, but atop the list are concerns such as basic coding support, collaboration and runtime support.
But there are some features that are hard to do without, even in basic code editors.
“The most obvious one is syntax highlighting,” said Finn Terdal, a lead instructor at Fullstack Academy, a coding bootcamp. “I need it to be colored correctly with variables and functions.”
Even lightweight code editors generally have this feature, which displays code in different colors corresponding to different syntax. For instance, variable names may be displayed in light blue while strings are displayed in orange. Syntax highlighting helps orient developers as they work, allowing them to understand large blocks of code more quickly than if they were in monochrome. The feature also helps developers quickly catch mistakes while they write code, since some mistakes are likely to display in an unexpected color.
Syntax highlighting is one of many possible features that editors can offer if it supports the programming language a developer uses. Related features such as refactoring support and code completion also rely on editors’ language support. Terdal said that he was especially impressed with how the code editor Atom provided syntax support, such as helping developers rearrange code in a file.
“Your editor can do some smart things, like choose to move brackets around, to make it valid.”
“If you want to take a block of code and easily move it up and down on the page, it already knows how to move around brackets and parentheses correctly,” he said. “What you often do is, you can select a whole block of code and move that block up. As you’re moving it up, it’s going to become invalid. And so your editor can do some smart things, like choose to move brackets around, to make it valid. In my experience Atom is just really good at that.”
Intelligent code completion is an important related feature that suggests variables, functions and other applicable names as developers are typing. This feature can be helpful for preventing typos and even teaching developers to use library functionalities they are unfamiliar with.
Choosing Editors That Support Collaboration
Even though code editors are differentiated by the support they provide to individual developers, one of the most important things developers consider when choosing code editors is which tools other developers are using.
“Picking a code editor is sometimes like going to a college party,” Terdal said. “You’re not even as interested in what’s at the party so much as who’s at the party.”
Sarah Holderness, a Pluralsight instructor who has taught courses on Python, Java and Android development, said one of the reasons developers adopt popular code editors is to make collaboration easier. This is a consideration especially in the workplace, where developers commonly work in teams and developers may pair program at the same computer.
“If they know shortcuts, they can share them with you, and they’re not confused.”
“When we pair program, we’re in the same editor,” Holderness said. “If they know shortcuts, they can share them with you, and they’re not confused, like, ‘I don’t know how to do that in this editor.’”
Visual Studio Code is the code editor that currently seems to be throwing the biggest party. Stack Overflow’s annual developer survey reported that the majority of developers surveyed in 2019 use VS Code, including 55 percent of web developers and DevOps engineers. VS Code’s standing lags only in mobile development, where it’s at a close second behind Android Studio.
In late 2017, VS Code introduced a feature called “live share,” which allowed developers to collaborate in real time, remotely. The new functionality allowed multiple developers to write code collaboratively from their own computers. Soon, the feature spread to other code editors as well.
“It was wild and crazy and totally new,” Terdal said. “It basically creates a Google Docs-like interface so someone else can join your editor session. You see a cursor in your editor with their name attached to it, and so you can both be editing the same document at the same time.”
IDEs Offer Runtime Support
Sometimes it’s important for editors to also serve as integrated development environments (IDEs) that are capable of running the code. In mobile development, for instance, where the lightweight VS Code is not dominant, most developers rely on IDEs to see what the application looks like even as it is being coded, without the hassle of deploying the application and downloading it on a mobile device.
“Android Studio is very specific to Android and is great, you can run emulated phone environments on there,” Holderness said. “You can use just a basic text editor, but a lot of people use Android Studio because of all the built-in integration with the emulators. It has all the built-in functionality that just makes developing in Android easier, whereas if you’re just using a code editor, you don’t get that.”
The benefits of running an application within an IDE isn’t limited to mobile development; it can also come in handy during testing, which requires running the code as well. As with most things, developers don’t need an IDE to run tests, but it can make testing easier.
“I like IntelliJ and Android Studio, because there’s a graphical user interface where you can run your tests, and then seven out of 10 light up green, and then it’s easy to drill in and see, ‘Oh, the other three failed and this is why,’” Holderness said.
The Benefits of Lightweight Editors
Lightweight editors have advantages as well. For tasks that don’t require the functionality of IDEs, developers sometimes turn to lightweight code editors such as VS Code and Notepad++.
“Some web developers like Notepad++ because they don’t really have to run it per se,” Holderness said. “It’s just straight HTML and CSS — they’re just viewing the file in the web browser.”
Holderness said that, aside from front-end development, she also prefers light-weight code editors for DevOps tasks such as scripts that dictate commands to run on the server.
“That’s a big advantage, especially for beginners who are just getting started.”
Lightweight editors also enjoy the benefit of being smaller and easier to install.
“That’s a big advantage, especially for beginners who are just getting started,” Terdal said. “A lot of senior-level software developers have kind of forgotten how frustrating that process is, getting started with the code editor and getting your tool chain set up. I still remember going through that and feeling absolutely lost. [The instructors] were talking about high level concepts, and I’m like, my editor doesn’t work — I felt embarrassed asking that question, but it’s real!”
It’s not unusual for developers to use multiple code editors, preferring one over the others for specific tasks. Terdal said it was beneficial to have a diverse range of code editors to choose from, because that leaves more room for competition and experimentation.
“There were features about VS Code that I didn’t know I wanted until I saw them,” Terdal said. “If there aren’t enough alternatives popping up, and people trying new experimental things from the ground up, we as a developer community are missing out on things because there isn’t enough innovation.”