Although software is an intellectual discipline, every self-respecting programmer uses a multitude of tools in his day to day life. As if it were a craftsman, programmers try to choose the tools that best suit our hands. We spend many hours with them, so we like that the tool is to our liking, that it adjusts to our workflow and that it does not force us to change it.
We adapt aesthetic aspects, such as colors, fonts or position of the menus. But we also adapt the functional parts, such as keyboard shortcuts or install plugins that save us from working more than necessary. In the end, we customize the tools we use so much that it could be said that there is one for each programmer.
When choosing a programming tool, we usually choose between two options: IDE or text editor.
IDE (Integrated Development Environment) or Integrated Development Environments, are applications that allow us to develop software in a simple and including practically everything we need without having to leave the environment. We have a source code editor; tools for code autocompletion and snippets; tools for debugging and compilation; as well as tools for construction or build.
Over the years, the existing IDEs on the market have included more and more options. But adding so many options comes at a price, and the general complaint about these environments is that they tend to be heavyThey need a powerful machine and tend to be slow.
Some of the IDEs that we can find in the market are Visual Studio, Eclipse, NetBeans or many of the Jet Brains company such as IntelliJ, WebStorm or PHPStorm.
Text editors are simpler than IDEs, and therefore have fewer built-in functionalities. The number of basic functions depends on each editor, but they generally have some type of code highlighting and formatting. Nowadays it is very common that they can be extended with extensions of all kinds, although that makes them a bit heavier and slower, moving away from the concept of a text editor and closer to that of IDE. The idea of an editor is to be fast and light.
Some of the editors that we can find are: Emacs, Vim, Atom, Sublime Text, Visual Studio Code or even Swiss army knife tools like Notepad ++.
Which to choose?
The choice of tool to choose is only conditioned by the language and the platform that we are going to use. If we want to develop Windows applications we will have a limited number of options. If we are going to develop applications for iOS or web applications with Java, we will have other different options. But beyond that division, we are only limited by our tastes (or budget). As we have said before, even if we use the same editor or IDE as other programmers, we will probably have it customized to our liking, making it totally different.
So to get an idea about the possibilities, We have decided to ask a few programmers about the tool they use in their day to day, how they have it configured and why they use it.
Even if you haven’t used them, you’ve probably heard of Vim and Emacs. Vim launched its first version in the 90s, although it was an improved version of the well-known Vi that many Unix systems integrate since the late 70s. Emacs was developed by Richard Stallman, among others, also in the late 70s. As you can see, it is many years , but both are still widely used by programmers around the world, given their customizability.
It is the case of Mario, backend developer (Ruby, Python, SQL) at Carto, who has been using Vim for many years. As the same account “I have been using VIM for about 4-5 years and the current configuration has been adapted as I have needed it. The advantages of this configuration is having the great power of Vim but with plugins that allow it to work without missing the functionalities of other more modern IDEs.“.
And is that customization is the great strength of both Vim and Emacs, since over the years thousands of extensions have been developed for them. And if there is no extension to our liking, we can always develop it. Is what he tells us Juanma who works developing software for businesses at IGT Microelectronics and uses Emacs for part of their development: “I really like the ease of customizing Emacs and the good support it has for most languages. With Visual Studio, for example, although you can create plugins in C # (a language I know well), the experience of doing it is horrible. With Emacs, despite having to use elisp (a language that I know much less), it is much easier to make small improvements to adjust it to what you want and it is something that I do frequently“.
The advantage of this type of editor is that the configuration can be easily shared. Normally the configuration is usually included in a single file, and it is enough to download it from GitHub and overwrite it to have the editor configured to our liking (or that of another developer who has shared it). It is for example what it does Gaspar at Cbi Consulting, “Lately I spend my day between bash scripts, python and servers. Although I also usually play PHP stuff and sometimes I have to do some programs in C or C ++. I edit with Emacs. I have a very custom configuration and I have it posted on github to download whenever I need it. I have special settings for the languages I usually use, code checking, compilation, custom keys for many actions, undo with undo-tree (important because Emacs undo is very heavy), auto-completion, and a few more things. I do not ask too much.
“The learning curve in Emacs is hard and it was a matter of stubbornness, but now I find it very comfortable”
Although Emacs and Vim work really well, they also have their buts. For example the learning curve. Its way of working and its hot keys are designed to be as efficient as possible, but not to be easily memorized. Learning to use one of these editors takes a long time, and it is one of the reasons that they are not more widespread.. As Juanma says “The learning curve in Emacs is hard and it was a matter of stubbornness, but now I find it very comfortable”
Despite the power of many editors, you have to add many extensions to obtain the capacity that IDEs already have as a base. This makes many people prefer this tool, since They have all the functionalities integrated in the same environment and you only have to configure a few things to customize them to our way of working.
For example Adolfo, who works as a Teaching Technical Advisor at CAM, uses Eclipse (Spring Tool Suite) for his day-to-day work with the backend: “I have been using Eclipse since its inception, and I am very productive with that tool because I already know all its keyboard shortcuts and all its tricks. One season that I was with Groovy, I switched to IntelliJ IDEA because they had told me very well about it, but in the end I stayed with Eclipse, which is also Free Software“.
Diego Jose, who has been working as a freelancer for 17 years, to desktop uses Delphi “He is not dead“, tells us. “Now it compiles for Windows, OSX, iOS and Android and has not stopped having versions. It is not well known for its pricing policy (which amounts to a goose pasta). The language is Object Pascal. I have been with Delphi since its first versions. The IDE and its Visual Control Library provide extremely high productivity.“. For PHP you prefer to use PHPStorm.”PHPStorm is a complete IDE. And it is what I am looking for. Without worrying about looking for more, I have all the utilities I need. It has everything and more“.
And it seems that PHPStorm is one of the best known tools when programming with PHP. You use it for example Michael, professor at the University of Táchira and freelance web developer, “I work in PHP using Yii2 Framework and developing WordPress plugins, however sometimes I have to improve the views so I have to use HTML / CSS and JS on a smaller scale. I use sublime-text when I need to edit something quickly or make small scripts. When they are larger projects I use an IDE, in this case PHPStorm. From the same IDE, perform all the activities that I need: access the Database, test REST services, perform tests, validate code, etc. More than anything I seek to automate things“.
Working at autos.com, we have Jesus, who is another PHPStorm fan: “I’m a bit of a keyboard shortcut freak and little by little I’ve been memorizing PHPStorm shortcuts for almost everything: Open a class / file, search in a directory, extract a method / constant / variable, … also if there isn’t a shortcut for something I want to do is very easy to create in PHPStorm. The integration with docker is great and it also has a lot of plugins for almost everything from composer autocomplete to creating the .gitignore“
In the end, IDE users seek to have the majority of integrated functionalities, and not complicate their lives. Is what tells us Luke, which generally works with Visual Studio (with Resharper) and C # (although it also uses Vim or PyCharm): “To obtain maximum productivity an IDE is required, an environment with integrated facilities that allow you to refactor, debug, deploy in the cloud and things like that quickly and simply (using git from the command line is one of the very few exceptions to this rule for me). When due to lack of context, lack of metadata, type definition (or whatever) and an IDE is reduced to a simple text editor, in that case it is perhaps better to use a good text editor. The opposite of this is trying to turn a text editor into a plugin-based IDE to colorize the syntax of a language, achieve some (always insufficient) degree of autocompletion and / or refactoring, not to mention built-in debugging and similar facilities so common in IDEs“, although he acknowledges that”when you see what some do with Emacs you are surprised. They generally excel in dynamic languages where IDEs until recently did not contribute much and where it is possible to evaluate expressions quickly and avoid zombie debugging“
“To obtain maximum productivity an IDE is required, an environment with integrated facilities that allow you to refactor, debug, deploy in the cloud and things like that quickly and simply”
In .NET environments, until not long ago Visual Studio was the default option, although there are people who are starting to use Visual Studio Code for it. In addition, JetBrains is preparing an IDE for .NET called Rider, currently under development. As it arrives, in …