Aunque el software sea una disciplina de carácter intelectual, todo programador que se precie usa multitud de herramientas en su día a día. Como si de un artesano se tratara, los programadores intentamos elegir las herramientas que mejor se adaptan a nuestras manos. Pasamos muchas horas con ellas por lo que nos gusta que la herramienta esté a nuestro gusto, que se ajuste a nuestro flujo de trabajo y que no nos obligue a cambiarlo.
Adaptamos aspectos estéticos, como colores, fuentes o posición de los menús. Pero también adaptamos las partes funcionales, como accesos rápidos de teclado o instalamos plugins que nos ahorran trabajar más de la cuenta. Al final personalizamos tanto las herramientas que utilizamos, que se podría decir que existe una para cada programador.
A la hora de elegir una herramienta para programar solemos elegir entre dos opciones: IDE o editor de texto.
IDE
Los IDE (Integrated Development Environment) o Entornos de desarrollo integrados, son aplicaciones que nos permiten desarrollar software de manera sencilla e incluyendo prácticamente todo lo que necesitamos sin tener que salir del entorno. Tenemos un editor de código fuente; herramientas para el autocompletado de código y snippets; herramientas para depuración y compilacíón; así como herramientas para construcción o build.
Con el paso de los años los IDEs existentes en el mercado han incluido cada vez más opciones. Pero añadir tantas opciones tiene un precio y la queja general sobre estos entornos es que suelen ser pesados, necesitan una máquina potente y tienden a ser lentos.
Algunos de los IDEs que podemos encontrar en el mercado son Visual Studio, Eclipse, NetBeans o muchos de la empresa Jet Brains como IntelliJ, WebStorm o PHPStorm.
Editor de texto
Los editores de texto, son más sencillos que los IDE, y por tanto tienen menos funcionalidades integradas. La cantidad de funciones básicas depende de cada editor, pero generalmente tienen algún tipo de resaltado y formateo de código. Hoy en día es muy común que se puedan ampliar con extensiones de todo tipo, aunque eso hace que sean un poco más pesados y lentos, alejándose del concepto de editor de texto y acercándose más al de IDE. La idea de un editor es ser rápido y liviano.
Algunos de los editores que podemos encontrar son: Emacs, Vim, Atom, Sublime Text, Visual Studio Code o incluso herramientas tipo navaja Suiza como Notepad++.
¿Cuál elegir?
La elección de herramienta a elegir, viene solo condicionada por el lenguaje y la plataforma que vamos a utilizar. Si queremos desarrollar aplicaciones Windows tendremos un número de opciones limitado. Si vamos a desarrollar aplicaciones para iOS o aplicaciones web con Java, tendremos otras opciones distintas. Pero más allá de esa división, estamos solo limitados por nuestros gustos (o presupuesto). Como hemos dicho antes, aunque usemos el mismo editor o IDE que otros programadores, probablemente lo tengamos personalizado a nuestro gusto, haciéndolo totalmente diferente.
Así que para tener una idea sobre las posibilidades, nos hemos decidido a preguntar a unos cuantos programadores, sobre cual es la herramienta que utilizan en su día a día, como la tienen configurada y por qué la usan.
Editores clásicos
Aunque no los hayas utilizado, seguro que has oído hablar de Vim y Emacs. Vim lanzó su primera versión en los 90, aunque siendo una versión mejorada del ya conocido Vi que integran muchos sistemas Unix desde finales de los 70. Emacs fue desarrollado entre otros por Richard Stallman, también a finales de los 70. Como veis son muchos años, pero ambos siguen siendo ampliamente utilizados por programadores de todo el mundo, dada su capacidad de personalización.
Es el caso de Mario, desarrollador backend (Ruby, Python, SQL) en Carto, que durante muchos años ha estado utilizando Vim. Como el mismo cuenta "con VIM llevo unos 4-5 años y la configuración actual ha ido adaptándose según he ido necesitándolo. Las ventajas de esa configuración es tener la gran potencia de Vim pero con plugins que permiten funcionar sin echar de menos funcionalidades de otros IDEs más modernos".
Y es que la personalización es el gran fuerte tanto de Vim como de Emacs, ya que a lo lago de los años se han desarrollado miles de extensiones para ellos. Y si no existe una extensión de nuestro gusto, siempre podemos desarrollarla. Es lo que nos comenta Juanma que trabaja desarrollando software para comercios en IGT Microelectronics y usa Emacs para parte de sus desarrollos: "me gusta mucho la facilidad para personalizar Emacs y el buen soporte que tiene para la mayoría de lenguajes. Con Visual Studio, por ejemplo, aunque puedes crear plugins en C# (un lenguaje que conozco bien), la experiencia de hacerlo es horrible. Con Emacs, pese a tener que usar elisp (lenguaje que conozco mucho menos), es mucho más sencillo hacer pequeñas mejoras para ajustarlo a lo que quieres y es algo que hago con frecuencia".
Juanma usa Emacs para "HTML, CSS, JavaScript, TypeScript y lenguajes variados de uso esporádico, utilizo Emacs con una configuración creada desde cero que tengo publicada aquí. Para Javascript utilizo js2-mode, para TypeScript uso tide y cuando juego con Clojure, cider".
La ventaja de este tipo de editores, es que la configuración se puede compartir fácilmente. Normalmente la configuración suele ir incluida en un solo archivo, y basta con bajarlo de GitHub y sobreescribirlo para tener el editor configurado a nuestro gusto (o al de otro desarrollador que lo haya compartido). Es por ejemplo lo que hace Gaspar en Cbi Consulting, "Últimamente me paso el día entre scripts Bash, Python y servidores. Aunque también suelo tocar cosas de PHP y en ocasiones tengo que hacer algunos programas en C o C++. Edito con Emacs. Tengo una configuración muy personalizada y la tengo publicada en github para bajarla siempre que la necesito. Tengo configuración especial para los lenguajes que suelo usar, comprobación de código, compilación, teclas personalizadas para muchas acciones, deshacer con undo-tree (importante porque el deshacer de Emacs es muy pesado), auto-completado y algunas cosas más. No pido mucho.
"La curva de aprendizaje en Emacs es dura y fue una cuestión de cabezonería, pero ahora me resulta muy cómodo"
Aunque Emacs y Vim funcionan realmente bien, también tienen sus peros. Por ejemplo la curva de aprendizaje. Sus forma de funcionar y sus teclas de acceso rápido están pensados para ser lo más eficientes posibles, pero no para ser fácilmente memorizables. Aprender a utilizar uno de estos editores lleva mucho tiempo, y es una de las razones de que no estén más extendidos. Como dice Juanma "La curva de aprendizaje en Emacs es dura y fue una cuestión de cabezonería, pero ahora me resulta muy cómodo"
IDEs
A pesar de la potencia de muchos editores, hay que añadirles muchas extensiones obtener la capacidad que los IDEs ya traen de base. Esto hace que mucha gente prefiera esta herramienta, ya que tienen todas las funcionalidades integradas en un mismo entorno y tan solo hay que configurar algunas cosas para personalizarlas a nuestra forma de trabajar.
Por ejemplo Adolfo, que trabaja como Asesor Técnico Docente en la CAM, utiliza Eclipse (Spring Tool Suite) para su día a día con el backend: "llevo utilizando Eclipse desde sus inicios, y soy muy productivo con esa herramienta pues ya me conozco todos sus atajos de teclado y todos sus truquitos. Una temporada que estuve con Groovy me pasé a IntelliJ IDEA pues me habían hablado muy bien de él, pero al final me quedo con Eclipse, que además es Software Libre".
Diego José, que trabaja como freelance desde hace 17 años, para desktop utiliza Delphi "No está muerto", nos dice. "Ahora compila para Windows, OSX, iOS y Android y no ha dejado de tener versiones. No es muy conocido por su política de precios (que viene a ser una pasta gansa). El lenguaje es Object Pascal. Con Delphi llevo desde que sus primeras versiones. El IDE y su Visual Control Library aportan una productividad altísima.". Para PHP prefiere utilizar PHPStorm "PHPStorm es un IDE completo. Y es lo que busco. Sin preocuparme de buscar más, tengo todas las utilidades que necesito. Tiene de todo y más".
Y es que parece que PHPStorm es una de las herramientas más conocidas a la hora de programar con PHP. Lo utiliza por ejemplo Miguel, profesor de la Universidad del Táchira y desarrollador web freenlance, "trabajo en PHP utilizando Yii2 Framework y desarrollando plugins de WordPress, sin embargo, a veces me toca mejorar las vistas, por lo que tengo que usar HTML/CSS y JS a menor escala. Uso sublime-text cuando necesito editar algo rapidamente o hacer pequeños scripts. Ya cuando son proyectos mas grandes uso un IDE, en este caso PHPStorm. Desde el mismo IDE realizar todas las actividades que necesito: acceder a la Base de Datos, probar servicios REST, realizar pruebas, validar código, etc. Más que todo busco automatizar cosas".
Trabajando en coches.com, tenemos a Jesús, que es otro fan de PHPStorm: "Soy un poco friki de los atajos de teclado y poco a poco he ido memorizando atajos de PHPStorm para casi todo: Abrir una clase/fichero, buscar en un directorio, extraer un método/constante/variable,... además si no hay un atajo para algo que quiero hacer es muy fácil crearlo en PHPStorm. La integración con docker es genial y además tiene un montón de plugins para casi todo desde autocompletar composer hasta crear el .gitignore"
Al final los usuarios de IDEs buscan tener la mayoría de funcionalidades integradas, y no complicarse la vida. Es lo que nos cuenta Lucas, que trabaja generalmente con Visual Studio (con Resharper) y C# (aunque también usa Vim o PyCharm): "Para obtener la máxima productividad se requiere un IDE, un entorno con facilidades integradas que te permitan refactorizar, depurar, desplegar en la nube y cosas por el estilo de manera rápida y simple (usar git desde línea de comando es una de las poquísimas excepciones a esta regla para mi). Cuando por falta de contexto, ausencia de metadatos, de definición de tipos (o de lo que sea) y un IDE queda reducido a un simple editor de texto, en ese caso es quizás mejor utilizar un buen editor de texto. Lo contrario a esto es el tratar de convertir un editor de texto en un IDE a base de plugins para colorear la sintaxis de un lenguaje, lograr algún grado (siempre insuficiente) de autocompletado y/o refactoring, y ni que hablar de depuración integrada y similares facilidades tan comunes en los IDEs", aunque reconoce que "cuando ves lo que hacen algunos con Emacs te sorprendes. Por lo general se destacan en lenguajes dinámicos donde los IDEs hasta hace poco no aportaban demasiado y donde es posible evaluar expresiones de manera rápida y evitar la depuración zombie"
"Para obtener la máxima productividad se requiere un IDE, un entorno con facilidades integradas que te permitan refactorizar, depurar, desplegar en la nube y cosas por el estilo de manera rápida y simple"
En entornos .NET, hasta hace no mucho Visual Studio era la opción por defecto, aunque hay gente que empieza a utilizar Visual Studio Code para ello. Además JetBrains, está preparando un IDE para .NET llamado Rider, de momento en fase de desarrollo. Mientras llega, en .NET se sigue utilizando Visual Studio como bien nos comenta Ferran, "Tanto para tareas de frontend como backEnd utilizo el Visual Studio, ya que el programa está desarrollado en Visual Basic .NET con SQL Server como SGBD. Utilizo la versión 2015, ya que la versión 2017 todavía anda en pañales o por lo que leo no es mucho de fiar. También utilizo Resharper".
Y es que está claro que JetBrains tiene contentos a muchos desarrolladores de distintas plataformas y lenguajes con sus soluciones, ya que Resharper es una de las extensiones más comunes a la hora de utilizar Visual Studio.
Los nuevos editores
Hace ya un tiempo, Sublime Text, empezó a marcar el camino que seguirían otros editores posteriores como Brackets, Atom o Visual Studio Code. Y es que muchos desarrolladores están pasándose a utilizar este tipo de herramientas.
Por ejemplo Mario, que nos hablaba antes de Vim, utiliza Visual Studio Code para programar en Node: "Ahora mismo, al moverme a programar en NodeJS, estoy probando VS Code ya que posee un debugger que funciona bastante bien. Lo he utilizado para otros lenguajes como Ruby o Python y estoy muy contento con él. El plugin para modo VIM está muy bien".
Lo mismo que Adolfo, que aunque utiliza Eclipse para la programación backend "para el front pasé por varios IDEs: primero Brackets, luego Atom y finalmente, cuando me enteré de que Microsoft lanzó Visual Studio Code con una licencia Libre me dió por probarlo, y la verdad es que fué un amor a primera vista. Tiene temas, plugins, debuguer, buena integración con Git, autocompletado de código, funciona muy bien con HTML, CSS, JS y TypeScript."
Opciones para todos los gustos
En definitiva, a la hora de elegir herramientas para desarrollar nuestra tarea, tenemos multitud de opciones. Es curioso como programadores de la misma plataforma, utilizan configuraciones tan diferentes, haciendo su IDE o editor un poquito diferente al de los demás. ¿Y tú que herramienta utilizas?
En GenbetaDev | Paréntesis y llaves de colores en Emacs, gracias a Rainbow Delimiters | Sublime Text 2 ¿el editor de texto definitivo?
Imagen cabecera | swiatekj