What editor for developing

TL;DR

I use IntelliJ IDEA for development and sublime for opening huge files and writing small stuff in python or bash.

Jupyter

I totally agree that this is not a real editor, like the one that are following in this post, but its very popular in term of data science, so I just wanted to mention it here. Its a webserver appication, writtin in python that allows you to create cells with python code (other languages can be installed as well, they are called "kernel"). You can add some markup in cells as well, given you the possibility to mix code and description of code just next to each other.

For small reseach tasks this is really handy, but from by experience, this "notebooks" in jupyter tend to get realy big and complex. Its easy to loose track what cell got executed while developing and what is the global state of the current notebook. The debugging possibilies are not as big as from a full editor - for example jumping inside a simple loop and looking at the program state. Restarting wil reset your state, what can break your notebook when you executes cells in a different order while using it, than when you just open it and want to run everything sequencial.

Atom

Atom is based on electron, what iself is a "wrapper" for chromium, the open source part of the chrome browser. Running Atom runs acually a webbrowser instance. Because of this setup, Plugins inside Chrome have to run in this webbrowser as well, resulting in being written in javascript. This have some negative impact (at least as I have used it last time, thats more than a year ago) - the most important one is performance. Opening even small files could have made atom hang or just reject to open the file. One old issue I found related is here . It got better, but the core issue still exist (the limit just got moved). For a data science use case, looking into (larger) files or debugging its not working well.

Vim

THE editor you will find even on every server to work with. A lot of plugins can be installed for vim to create a multi-column based editor (like sublime and atom look like) - But I never used it in that detail. My use case for vim is to manipulate server config files or git commit message when rebasing. Vim can handle really big files, but the user interface is not that intuitive. The most asked question on stackoverflow is how to quit it again: Press "ESC" to get into command mode and write ":q!" asnd press "Enter" - the bang will make sure that you wan't get prompted for anything.

IntelliJ IDEA

I think the most complete editor you can imagin. It supports python, scala and java development - all I need for my daily work as a data scientist. But even more languages are included that I use from time to time.

Unfortunately this editor have a downside. Editing huge plain text files is not possbile, only a read mode is allowed. The base source for this issue is the java or jvm that can't handle this kind of data in a responsible fast way. Atom whould have not even tried to open this file.

I use IntelliJ a lot for on my daily work for building up spark jobs or to do python development. The debugger works very well, with support to different dependency management tools in different languages (for example pipenv in python and virtualenv) or Maven, Gradle and SBT for scala.

Sublime

To handle the opening of files issue, I use sublime. Its really fast and can open even huge files (say 1 GB). It have some nice shortcuts like Shift + Alt + D for selecting different items of the same string somewhere in the document. It will than create a new cursor for each of the findings, allowing you to change the content of all items selected in parallel. When writing small bash scrips for spark jobs, I can fast change relevant values and I feel very productive.

You can install sublime on ubuntu with the following commands Source:

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -

sudo apt-get install apt-transport-https

echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list

sudo apt-get update
sudo apt-get install sublime-text