Additionally, although all screenshots in this article were taken on Windows, every editor mentioned has both Windows and macOS versions (and other platforms too), and I used most of them cross-platform frequently.
Unfortunately, being a text editor, Sublime lacks full IDE features, such as go-to-declaration or finding/replacing all usages of a symbol. For that reason, it’s not ideal for working on anything beyond very simple one-file projects, and I decided to try something different.
Atom quickly became a popular editor in the developer community due to its extensive package/plugin system, which lets you add custom modules to the editor to do any number of things. It’s built on the Electron stack, and even open source. I decided to give it a try, since my boss at the internship was using it as his main editor at the time, and one of my friends spoke highly of it as well. In addition to the long list of plugins people made, you can also build your own if you can’t find something that suits your needs. Similarly, you can download and apply style packages that let you customize the look and feel of the editor completely. Personally I ended up using the material design theme.
However behind all those features, it’s still just a text editor, not unlike Sublime Text. It features the same editor-esque features, but still lacks more powerful IDE functionality. It’s worth noting though that there are some plugins that can bring you pretty close to IDE-like functionality. On top of that, I could feel it slowing down at times, though I’m sure that should improve as it’s developed further. I didn’t delve too deep into the Atom ecosystem, and I wouldn’t recommend Atom for larger projects.
Unfortunately it wasn’t perfect either. It feels quite bloated and heavy when working with any code base, and it only gets worse for large code bases (as was the case during my internship). It lagged frequently for me. Furthermore it sometimes crashes or exhibits inexplicable odd functionality; one time it registered all my source code files as being external to the project, thus refusing to index symbols in them and essentially turning into a mere text editor. Webstorm feels like it has gotten too big to maintain consistency and high quality throughout its various components, so it ends up being somewhat unpleasant and unintuitive as an whole.
The latest step in my editor exploration journey has been VS Code. It’s another Electron-based editor, developed by Microsoft, that has seen an explosion of popularity among the developer community since its recent launch. To me it almost feels like Webstorm, but redone from scratch, and refined. Its interface feels more clean to me, and it still does everything I want out of an IDE. Importantly, it hasn’t been as laggy or buggy in my usage either. VS Code manages to do this without giving up full-fledged IDE features, so I can do mostly all the same things as I could with Webstorm. This is the editor I use presently, and I’m really enjoying my experience with it so far. It might be important to note, however, that I haven’t tested very large codebases in VS Code, as I only started using it after my internship ended. Thus I can’t speak to how well it’d perform in that scenario.