Not every application needs a full-blown IDE. Tools like Eclipse or Microsoft's Visual Studio are overkill for a Node.js microservice written in JavaScript using GitHub for source control. Sometimes you just want to write code.
That's where a new generation of code editors comes into play: lightweight tools for working with high-level scripting languages and with common development frameworks. Often, they work directly with source control services. Think of them as an extension of cloud-based development on our desktops, designed to help Web developers get productive fast.
At the heart of many tools in the current generation is Scintilla, an open source text editing component. Using a component like Scintilla simplifies building an editor, because it supports key development features, including syntax highlighting and code completion. It powers tools like the popular Notepad++ and the reboot of the classic Programmer's Notepad (the tool I used through the late 1990s and early 2000s).
Scintilla-based editors range from tools focused on single languages or platform to more general code editors. While single-function tools are useful, especially if you're working with languages like PHP and Perl, a general-purpose editor is more suited to today's cross-platform, full-stack development, where you're as likely to be debugging a JSON message as writing C++ code.
Sublime Text
One of the more extensible editors is Sublime Text, with a Python-based extension API. You can use it write code in just about any language, and because it's cross-platform, you can use it to work with code on Windows, Mac OS, and Linux.
Sublime Text has a number of attractive features, including the ability to make multiple selections, which allows you to change all the instances of a single variable in a file at the same time. You can also switch to a distraction-free mode that fills your screen, leaving you with nothing but your code. I'm particularly fond of its code map, which helps you see just where you are in a large file.
It's not just for code: Sublime Text also offers support for common text formatting languages, including the academic LaTeX and the documentation-focused Markdown. With Markdown, the favored formatting language for many Web services, including GitHub, you can work with your documentation in parallel with your code, especially if you're writing code for public release.
GitHub Atom
GitHub's Atom is a new kid on the block, a customizable and (as GitHub describes it) "hackable" editor. Under the hood, it's an HTML/JavaScript application, making it easy to extend and to modify. You can even use CSS to change its look and feel.
You can find nearly 2,000 extension packages on the Atom site -- not bad for a tool that saw its initial release just 14 months ago. Some extensions add new editing features, while others handle integration with compilers and tools. You can download new UI themes to customize Atom quickly for specific tasks or to just make it look the way you want it to look.
A search-driven command palette makes it easy to find Atom functions quickly and use them on your code. There's a lot to like in Atom, and it's likely to become the editing component of choice in many tools -- GitHub's licensing is permissive and it's easy to fork and exploit the Atom Git repositories.
Microsoft Visual Studio Code
Microsoft's Visual Studio Code, announced at Build 2015, is Microsoft's addition to the next-generation editor pack. Based on the Electron fork of Atom, it's an HTML and JavaScript application running inside Google's open source Chromium on top of Node.js, a combination that means it runs on Windows, Mac OS, and Linux.
Code comes with a mix of themes and an integrated debugger, as well as integration with Git workflows. It's also accessible from the command line, making it ready for most common workflows and for use with build and continuous development tooling.
As you might expect, Code is focused on the Web frameworks Microsoft supports on Azure. There's direct support for both ASP.Net and Node.js, with online documentation on using scaffolding tools to build applications as well as using Code's debugging features. You can use Code with both Express and Yeoman, with support for the Mocha JavaScript testing tools.
A sidebar lets you see the current working set of files, with up to three separate editing panes so you can handle refactoring across an entire Web app or see the differences between multiple versions of a file. One highlight is support for Microsoft's IntelliSense code completion tooling, which handles objects, methods, and variables as well as language structures. You can also see changes in code from Git repositories, with inline notifications for deletions, additions, and modifications.
Code still needs quite a bit of work. For one thing, its debugger is limited to Node.js, with ASP.Net support under development. Even so, it's well worth investigating. I've been running it on both Mac and Windows machines, and it's turned out to be an ideal lightweight development tool on both platforms.
A code editor is a very personal tool. You're likely to spend much of your time in one, so finding one that works for you is vital. Luckily, most of the new generation of tools are free, or at least have free evaluation options, so you can find one that fits -- and then customize it to work just the way you want.