VERSUS: Batalla por la productividad, IDEs completos VS IDEs ligeros

Desde los albores de la programación los desarrolladores han buscado formas de ser más productivos, más rápidos y eficientes a la hora de trabajar. Sus herramientas han ido evolucionando con el tiempo y amoldándose a las necesidades de los desarrolladores, incluyendo e integrando los diversos servicios que utilizan en su ecosistema de desarrollo. ¿Todos los desarrolladores siguen esta evolución? ¡No! Algunos irreductibles aún resisten ante la seducción de los IDEs integrales.

Cuando dos de nuestros desarrolladores de Python más experimentados llegaron a trabajar juntos en el mismo proyecto comenzó una disputa (sana) que se mantiene aún a día de hoy: mientras que Álvaro, más purista en cuanto a desarrollo, utiliza VIM para el desarrollo del día a día y la consola para Git, Christian opta por usar un IDE completo como PyCharm que integra todo lo que necesita.

pycharm_vs_vim

Álvaro, parece que te has quedado un poco anclado en los 90, con ese estilo retro de programación que me llevas, yo opino que te tienes que modernizar un poco y dar un paso al futuro en cuanto a la forma de desarrollar…

Primero, los visualizadores de código integrados cuando se desarrolla son una gran ayuda a la productividad desde varios niveles. Para empezar, la propia definición de las funciones, las clases, incluso los tipos de variables, todo señalizado con unos colores o una tipografía distinta, nos ayudan a desarrollar aplicaciones más rápido y a que la calidad de código sea mejor instantáneamente, sin que tengamos que repasar después con herramientas externas sobre estilo o complejidad.

También está el autocompletado de variables o métodos mientras se desarrolla que te da un aporte extra de velocidad, por no hablar del hecho de que se resalten variables mal referenciadas, o que no se usen, importaciones erróneas o cualquier tipo de error mínimo que mientras vas desarrollando se te pueda pasar.

Todos sabemos que la refactorización de código para aplicaciones grandes y/o complejas puede ser un suplicio si no tienes una herramienta que te ayude. En este caso los IDEs nos proporcionan la posibilidad de refactorizar nuestro código, desde renombrado de funciones hasta disminuir la complejidad ciclomática de alguna función y replicar el cambio en todos los archivos que sea necesario (como importaciones desde otras librerías del proyecto). Intenta hacer eso desde tus métodos antiguos y tendrás que usar 2 o 3 herramientas distintas.

Una gran ventaja de muchos IDEs es que ya existe la posibilidad de manejar herramientas externas desde el propio editor. Esto va desde tener ya agregado el control de versiones (ya sea Git o SVN) y poderte mover entre ramas, e incluso subir cambios o resolver conflictos, hasta tener herramientas externas necesarias para el correcto funcionamiento del proyecto que estés desarrollando, como contenedores Docker o Vagrant.

Hay una cosa clara: los IDEs son herramientas hechas por y para desarrolladores, por tanto crecen y evolucionan en función de las necesidades de los usuarios. Por ejemplo, una nueva versión de un IDE puede integrar la conexión con un componente que esté en plena expansión tecnológica y ayudar a programar más rápido si no se tiene conocimiento sobre éste o incluso hacer de toma de contacto con nuevas tecnologías de una manera más “amigable”.

Dos razones que llevan los IDEs a un nuevo nivel de programación son: testing y debugging. La gran mayoría de IDEs tienen integrado un módulo de testing y cobertura de código algo que es realmente útil para poder desarrollar código de calidad y robusto. Por otro lado, al tener integrado un debugger en el propio desarrollo (sin tener que usar ninguna librería o herramienta externa que nos lo proporcione) se detectan mucho antes los posibles bugs o incluso las capas por las que están pasando nuestros datos cuando introducimos nueva funcionalidad.

En lo único que puedo estar de acuerdo contigo es que cuando necesitas cambiar código directamente en un servidor o en algún entorno que no sea el habitual, la gran mayoría de veces no dispones de los medios necesarios para desarrollar con un IDE, ya sea por falta de tiempo o recursos. Algunas veces estamos obligados a trabajar con herramientas más simples pero más extendidas como Vim. Aunque sea más cómodo y rápido trabajar con un IDE vitaminado también debemos conocer otras opciones más modestas que nos ayuden a ser unos auténticos todoterreno.

IDE Ligero

Alvaro León

Christian, ya sabes que el pulso con el ratón no es mi fuerte, siempre he preferido no levantar las manos del teclado y, llámame rebelde, pero normalmente me gusta tener control sobre lo que hago en contraposición a “la magia” de un botón.

El argumento de la pantalla monocroma no te va a servir. Bien sabes que el resaltado de código, dependiendo del lenguaje, no es problema. Los IDEs ligeros ya incorporan información de palabras reservadas y además es extensible. ¿Autocompletado? Sin problema, la capacidad de vitaminización de estos IDEs ligeros es altísima, podemos acceder a sugerencias de autocompletado o incluso dar un paso más de introspección para ver los métodos, objetos, librerías o cualquier recurso disponible al que quieras acceder de tu lenguaje de programación.

La productividad en la edición de código es la mejor, contrastada. La ventaja competitiva de un IDE ligero es la de prescindir del ratón, de manera que todo lo que necesites hacer, puedes hacerlo sin levantar tus manos del teclado, lo que te va a ahorrar tiempo, esfuerzo y cansancio. Y vale, por echar un poco de piedras sobre nuestros tejados, a veces se echa de menos un poco más de “inteligencia” que si te da un IDE muy orientado y específico. En ocasiones las tareas de refactorización se pueden convertir en una tarea cercana al masoquismo…

Me hablas de integración de herramientas. SCM, testing y debugging desde el propio IDE. Estoy de acuerdo que esto puede ser una ventaja casi siempre que no te sobrecargue y “crashee” tu máquina. Los IDES ligeros no pretenden engañar a nadie, si quieres puedes escribir comandos por consola directamente, tener plugins para integrar herramientas, lo que quieras… Pero, sinceramente, prefiero hacer un ctrl-Z y salir a la consola para tener total control de que estoy haciendo.

En una cosa estoy de acuerdo contigo, los IDEs son y crecen para los desarrolladores, por eso la posibilidad de customización aquí es ilimitada. No sólo hablamos de un ambiente configurable, si no de integralmente personalizable: desde detalles visuales a comportamiento por defecto del editor. En Vim, por ejemplo, podemos configurar todo lo relevante a la hora de la producción de código resumidos en más de 150 settings nativos de Vim más aquellos que la comunidad hace configurables. ¡Ah sí! ¡La comunidad! Cuenta con más de 20 años a sus espaldas, tanto desarrollando y mejorando el core del editor, así como compartiendo sus ficheros de configuración, macros y extendiendo las capacidades del editor. No está mal, ¿no?

En cuanto al consumo de recursos, es mínimo. No es necesario una gestión supersofisticada multihilo de los componentes del editor. Este tipo de editores son muy robustos, y si consigues romper algo, posiblemente no ha sido su culpa. ¿Y si pasa? ¿He perdido todos mis cambios? ¡No! En más de veinte años, y después de que seguramente le haya pasado a algún insensato, los IDEs ligeros se han cubierto las espaldas a la hora de implementar los sistemas y políticas de recuperación ante fallos. De nuevo, es altamente personalizable, puedes guardar tus avances en un fichero de swap eligiendo tu propia política sobre cuándo hacerlo.

Y sí, suelen ser feos. Aunque hay templates e incluso plugins para dar una vuelta de tuerca al estilo consolero que suelen tener estos editores. De todas formas, si eres un extreme programer ¿por qué deberías preocuparte por bonitos colores y botones biselados ;)? Bueno Christian, seguiré en mis trece, aunque le iré echando un vistazo a tu pantalla con ventanas de vez en cuando a ver si se me pega algo…

Y tú, ¿cuál prefieres?

Soy un apasionado de la tecnología, los productos digitales, el desarrollo de Internet y la música. Ingeniero de software, me gusta investigar y probar todas las tecnologías. Me gusta seguir los estándares de clean code, buenas prácticas de programación y nuevas metodologías de trabajo. Admiro y busco la creatividad en nuevas tecnologías y diferentes enfoques en aquellos campos en los que se pueda aplicar.

Ver toda la actividad de Álvaro León

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Posts relacionados

3 comentarios

  1. Iván dice:

    ¿Es que nadie piensa en SublimeText o Atom? Son el camino del medio, un editor de texto, no un IDE (que por cierto, no considero VIM un IDE, sino otro editor de texto).

    Un editor de texto quizás no sea tan potente como un IDE, pero con él podrás hacer prácticamente todo lo que haces con un IDE a través de plugins. Entonces ¿para qué el editor de texto si el IDE ya me lo da todo by default?. Pues porqué el editor de texto está enfocado en la productividad, en que el desarrollador esté cómodo frente al código fuente. Que disfrute programando, que lo haga bien (con linters integrados), con control de versiones, con debuggers para prácticamente todos los lenguajes y tecnologías.

    Diferencias con un editor de texto en modo consola (Vim/Emacs), pues principalmente la curva de aprendizaje y facilidad de uso. Con esto, no sólo no te hacen falta 5 años de desarrollo para poder “pilotar” decentemente con Vim, sino que no tienes que recordar prácticamente nada, sin levantar los dedos del teclado, escribes lo que quieres hacer en la paleta de comandos y listo. Que quiero renombrar el fichero actual, CMD+Shift+P y escribo “rename”. Que quiero hacer git checkout del fichero actual, escribo checkout en la paleta de comandos (CMD+Shift+P) y así hasta el infinito.

    Por no hablar de los cursores múltiples, eso ya si que es magia negra

  2. Álvaro dice:

    Está claro que lo que hemos considerado IDEs ligeros en este artículo son meros editores de texto. Sin embargo también es claro que la comparación entre pycharm o vim puros, por ejemplo, como IDEs carecería de sentido. Para poder hacer esta comparativa tendríamos que tener en cuenta, o bien vim junto con todas las herramientas del ecosistema de desarrollo que utilice cada uno, o bien un vim vitaminado con plugins de la comunidad.

    Respecto a otros editores de texto, vitaminados o no, me queda siempre la asignatura pendiente de SublimeText. Tuve un compañero que consiguió tener un sets de plugins y macros bastante decente.

  3. Los que somos de sistemas usamos entornos ligeros como Vim, o algo intermedio como Visual Studio Code, que creo que no mencionais, y también integra la gestión de git.
    Para proyectos grandes, herramientas grandes, si son necesarias.
    En otro caso, varias herramientas pequeñas y portables. Cuanto más KISS mejor.

Escribe un comentario