I don’t like IDEs. Every IDE is a new system. No matter how powerful it is or how intuitively its features are implemented, it will still look different, feel different, and be different. It will be new. I work with a plethora of languages on a regular basis, switching between them frequently. IDEs are specialized for a single language. Using a specialized IDE for each one is simply unfeasible. Therefore, my only choice is to use an editor that, while at times may be slightly less powerful than a full IDE, can gracefully handle any language I throw at it and allow me to customize to my heart’s content.
To be honest, I don’t really mind. IDEs tend to do too much; a programmer should know how his language of choice works. You would be amazed at how many Eclipse users can’t compile a Java program using a terminal.
So then what do I use you ask?
For the last few years, the answer has been Sublime-Text. It’s a beautiful editor with a good collection of features and even more plugins. It has it’s problems, though. For one thing, it has always been a bit temperamental. Sublime would have odd bugs, never anything significant or consistent, but it often wouldn’t work the way it should. Also, the plugins system sucks. Now, before you burn me at the stake, let me explain. Sublime has a lot of useful plugins, but they are limited in scope and hard to write. Sublime doesn’t provide enough access to GUI elements and it’s api is clunky and punishes the developer for anything imaginative. All this comes together for an experience that, while satisfactory, doesn’t have that last bit of oomph to reach satisfying.
I’ve been using Atom for about a week so far and it has convinced me of its prowess. Not only has my Sublime workflow been transfered over nicely, but I’ve been able to get Atom to do things I could never get Sublime to do.
Atom is more extendable and shinier than Sublime with a more refined GUI and faster development.
In my short time with Atom, I have found quite a list of useful plugins. Here are some of the more useful for your perusal:
build / build-npm-apm
Define a command to compile/run your project. You can define a custom command or choose from a lot of modules for common build systems. I, myself, have only used the npm module so far.
Right click on colors to bring up this nifty little tool. I use this more than I thought I would.
I have gotten very used to seeing my tabs and spaces and while atom can draw ‘invisible’ characters out of the box, there was no way to limit that to only spaces and tabs.
All hail the eye candy!
I’m using it to write this right now.
I wanted this. Now I have it. I will never commit a file with inconsistent indenting ever again.
FTP on the sidebar. There are a few other packages that provide FTP access, so use whatever suits your fancy.
The ability to save files as root makes life just that much easier.
So I don’t have to remember to install all these plugins at work. Setup could be a little easier, but still a good solution.
Fancy spreadsheet interface for CSV files.
Terminals. I like terminals.