Although software is an intellectual discipline, every programmer who values himself uses a multitude of tools in his daily life. As if it were a craftsman, the programmers tried to choose the tools that best fit our hands. We spend many hours with them so we like that the tool is to our liking, that fits our workflow and does not force us to change it.
We adapt aesthetic aspects, like colors, fonts or position of the menus. But we also adapt the functional parts, such as keyboard shortcuts or install plugins that save us working more than the account. In the end we customize both the tools we use, which could be said to exist for each programmer.
When choosing a tool to program we usually choose between two options: IDE or text editor.
Integrated Development Environment (IDE) are applications that allow us to develop software in a simple way and include virtually everything we need without having to leave the environment. We have a source code editor; tools for autocomplete code and snippets; tools for debugging and compilation; as well as tools for construction or build.
Over the years existing IDEs in the market have increasingly included options. But adding so many options has a price and the general complaint about these environments is that they are usually heavy, need a powerful machine and tend to be slow.
Some of the IDEs we can find in the market are Visual Studio, Eclipse, NetBeans or many Jet Brains companies such as IntelliJ, WebStorm or PHPStorm.
Text editors are simpler than IDEs, and therefore have fewer built-in functionality. The number of basic functions depends on each editor, but they usually have some kind of highlighting and formatting code. Nowadays it is very common that they can be extended with extensions of all kinds, although that makes them a little heavier and slower, moving away from the concept of text editor and getting closer to IDE. The idea of an editor is to be quick and light.
Some of the editors we can find are: Emacs, Vim, Atom, Sublime Text, Visual Studio Code or even Swiss army knife type tools like Notepad ++.
Which to choose?
The choice of tool to choose, is only conditioned by the language and 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 options. But beyond that division, we are only limited by our tastes (or budget). As we said before, although we use the same editor or IDE as other programmers, we 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 which tool they use in their day to day, how they have it configured and why they use it.
Even if you have not used them, you’ve probably heard of Vim and Emacs. Vim released its first version in the 90’s, although being an improved version of the well-known Vi that have integrated many Unix systems since the late 70’s. Emacs was developed among others by Richard Stallman, also in the late 70’s. As you can see are many years , but both are still widely used by programmers around the world, given their customization capabilities.
This is the case of Mario, a backend developer (Ruby, Python, SQL) in Carto, who for many years has been using Vim. As the same account “with VIM I have been about 4-5 years and the current configuration has been adapted as I have been needing it. The advantages of this configuration is to have the great power of Vim but with plugins that allow to function without missing out on other features More modern IDEs”.
And is that personalization is the great strength of both Vim and Emacs, since over the years have developed thousands of extensions for them. And if there is no extension of our taste, we can always develop it. This is what Juanma tells us that he is developing software for commerce in IGT Microelectronics and uses Emacs for part of his developments: I really like the ease to customize 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 so is horrible. With Emacs, despite having to use elisp (language I know much less), it is much easier to make small improvements to fit what you want and is something I do frequently.
The advantage of such publishers is that the configuration can be easily shared. Usually the configuration is usually included in a single file, and you just have to download it from GitHub and overwrite it to have the editor configured to our liking (or another developer who has shared it). It is for example what Gaspar does in Cbi Consulting, “Lately I spend the day between Bash scripts, Python and servers.” Although I also usually play PHP stuff and sometimes I have to do some C or C ++ programs. a very personalized configuration and I have it published in githubto lower it whenever I need it. I have special settings for the languages I use, code checking, compilation, custom keys for many actions, undo with undo-tree (important because undoing Emacs is very heavy), auto-completed and some more things. I do not ask too much.
“The learning curve in Emacs is hard and it was a big question, but now it’s very comfortable for me”
Although Emacs and Vim work really well, they also have their buts. For example the learning curve. Its way of working and its hotkeys are thought to be as efficient as possible, but not to be easily memorable. Learning to use one of these publishers takes a long time, and is one of the reasons they are not more widespread. As Juanma says “The learning curve in Emacs is hard and it was a stupid question, but now I find it very comfortable”
You may also like to read: The myth of creative genius or why most revolutionary innovations are pure smoke
Despite the power of many editors, you have to add many extensions to get the capability that the IDEs already bring basic. This makes many people prefer this tool, since they have all the functionalities integrated in the same environment and just have to configure some things to customize them to the way we work .
For example, Adolfo, who works as a Technical Advisor at CAM, uses Eclipse (Spring Tool Suite) for his day-to-day backend: ” I’ve been using Eclipse since its inception, and I’m very productive with that tool since I already know everyone a few months ago, I went to IntelliJ IDEA because I had been talking about it very well, but in the end I’m staying with Eclipse, which is also Free Software . “
Diego José, who has been working as a freelance for 17 years, uses Delphi’s desktop “It is not dead”, he says. “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 comes to be a goose paste). The IDE and its Visual Control Library provide a very high productivity.” For PHP, I prefer to use PHPStorm ” PHPStorm is a complete IDE, and it’s what I’m looking for, without worrying about looking for more, I have all the utilities that I need.
And it seems that PHPStorm is one of the best known tools when programming with PHP. I use it for example Miguel, professor of the University of Táchira and freenlance web developer, “I work in PHP using Yii2 Framework and developing WordPress plugins, however, sometimes I get better 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 larger projects use an IDE, in this case PHPStorm.From the same IDE perform all the activities I need: access to the Base REST services, test, validate code, etc. More than anything, I try to automate things “.
Working on cars.com, we have Jesus, who is another fan of PHPStorm: ” I am a bit of a geek from the keyboard shortcuts and I have gradually memorized shortcuts for PHPStorm for almost everything: Open a class / file, look in a directory, extract a method / constant / variable, … also if there is no shortcut for something I want to do it is very easy to create it in PHPStorm.The integration with docker is great and also has a lot of plugins for almost everything from autocomplete composer until creating the .gitignore “
In the end IDE users are looking to have the most built-in functionality, and not to complicate life. This is what Lucas tells us , which usually works with Visual Studio (with Resharper) and C # (although it also uses Vim or PyCharm): “To get maximum productivity requires an IDE, 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 for lack of context, absence of metadata, definition of types (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 to this is trying to convert a text editor into an IDE based on plugins to color the syntax of a language, achieve some degree (always insufficient) autocompletion and / or refactoring, and even talk about integrated debugging and similar facilities so common in IDEs, “while recognizing that”when you see what some do with Emacs you are surprised. They usually stand out 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 get the maximum productivity requires an IDE, 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 start using Visual Studio Code for it. In addition JetBrains, is preparing an IDE for .NET called Rider, currently under development. As it arrives, in .NET is still using Visual Studio as well Ferran comments, “Both for frontend tasks and backEnd I use Visual Studio, since the program is developed in Visual Basic .NET with SQL Server as DBMS. 2015, since the 2017 version is still in diapers or so I read is not very reliable. I also use Resharper.
And it is clear that JetBrains is pleased to many developers of different platforms and languages with their solutions, since Resharper is one of the most common extensions when using Visual Studio.
Some time ago, Sublime Text, began to mark the way that would follow other later editors like Brackets, Atom or Visual Studio Code. And is that many developers are moving to use this type of tools.
For example Mario, who spoke to us before Vim, uses Visual Studio Code to program in Node: ” Right now, when I move to programming in NodeJS, I am testing VS Code since it has a debugger that works quite well. languages like Ruby or Python and I’m very happy with it.The VIM mode plugin is fine . “
The same as Adolfo, although I used Eclipse for backend programming ” for the front I went through several IDEs: first Brackets, then Atom and finally, when I learned that Microsoft launched Visual Studio Code with a license Libre gave me to try it, and the truth is that it was love at first sight. it has themes, plugins, debuguer, good integration with Git, autocompletion of code, works very well with HTML, CSS, JS and typescript.”
Options for all tastes
In short, when choosing tools to develop our task, we have many options. It’s funny how programmers on the same platform use different configurations, making their IDE or editor a bit different from the others. And what tool do you use?