¿Por qué es importante aprender Linux?
Reflexiones para desarrolladores y usuarios finales
Se termina el año 2020 casi como un suspiro. Y los que nos dedicamos a la informática lo sufrimos desde múltiples lugares. Desde tener que emprender la tarea de capacitar a muchas personas en tiempo record (debido a la demanda), a tener que finalizar proyectos para negocios que forzosamente debieron migrar a lo digital. Ha sido duro y sospecho que viene lo peor, ahora que los procesos automatizados para mejorar la productividad ha sido probada en numerosas empresas pequeñas. Ante esto, la semana pasada me encontraba en un breve debate de programación con programadores de distintas ramas y estados (backend, frontend, fullstack, mayormente juniors, etc). Dicho debate era sobre la creación de un módulo en Odoo que requería utilizar funciones de otro módulo; es decir un problema clásico de herencia de clases. Siendo el que más experiencia poseía sobre el popular ERP, me preguntaban la ubicación de dichas funciones, ya que muchas incluían llamados a funciones privadas cuyo nombre no figura en los modelos de estructura de datos en la interfaz de Odoo. Les sorprendió mi respuesta, que fue el desconocimiento absoluto. No sé que clase de respuesta esperaban, conozco muy pocas funciones de Odoo, las mismas están sujetas a cambiar entre versiones, por lo tanto el esfuerzo de recordarlas es inútil; y para peor posee nombres muy absurdos (action_button, button_confirm, confirm_button, etc). No obstante, les sugerí realizar un grep sobre el directorio de addons, buscando primero la definición del modelo y luego la función en cuestión. Y me asombré mucho, ya que pese a ser programadores sin mucha experiencia sobre Odoo, desconocían por completo una de las funciones más útiles para desarrollar dentro de Linux. Esto me lleva a pensar, ¿cuánto de Linux sabe un programador promedio hoy? Y voy a redoblar la apuesta, un usuario final, un usuario regular de computadora, ¿debería saber utilizar Linux?
Programar sobre Windows
Saco de la ecuación a todo lo del mundo Apple, entiendo que se puede programar, pero no es algo que haga en el día a día. Voy a dar una opinión impopular para los linuxeros más férreos: hace un par de años programar sobre Windows se ha vuelto algo muy cómodo. Atención, me refiero a la acción de programar, no a usar Windows como un servidor, algo que prácticamente no hace nadie. La compra de Github de parte de Microsoft más que empeorar la plataforma (como se pensaba) la potenció en muchos aspectos (mejores herramientas, packages, repositorios privados gratuitos, etc); también se encuentran manteniendo uno de los mejores IDE en el mercado (VS Code); han puesto muchos esfuerzos en tener de forma nativa un subsistema de Linux, conocido como WSL (de hecho, recientemente lo han actualizado a la versión 2, lo cual demuestra un cierto interés); y hace aproximadamente un año lanzaron la Windows Terminal, una terminal muy completa que compite en un área donde siempre el mercado se lo comió Linux. Con esto quiero decir que no hace falta instalar una VM o una dual boot para dar los primeros pasos de Linux, la propia plataforma de Windows ya trae Linux.
¡Qué cómodo! ¿Por qué la gente no aprende Linux?
Lo normal desde algunas universidades y centros de estudios de corte "progresista" sería echarle la culpa a Windows; y que Windows tiene un "plan" para "adoctrinar" a la gente, con el objetivo de que nuncan se animen a usar Linux, etc, etc. La realidad es que esas cosas las he escuchado de personas que tampoco manejan Linux más allá de la interfaz de usuario de Ubuntu. No creo que Windows tenga un plan de adoctrinamiento, si un plan de retener la mayor cantidad de usuarios (cosas como la WSL fue una respuesta para que desarrolladores Linux se quedaran más tiempo en Windows, y funcionó). Debates a parte que no vienen al caso, creo que el problema se debe a una ausencia de capacitación. Este mercado tiene una demanda tal que cualquier persona que sepa codear va a conseguir trabajo. Esto lleva a que el personal no siempre esté capacitado en el punto ideal; especialmente porque la mayoría de los programadores aprenden a programar en Windows, sobre lenguajes que vieron en colegios o universidades (como javascript o java); y por lo tanto nunca tuvieron la necesidad de utilizar una Terminal de Linux, ya que el lenguaje es indiferente del sistema operativo. Los problemas ocurren cuando tienen que hacer tareas regulares sobre un servidor montado en la nube (como una VPS), donde prácticamente todos están montados sobre Linux (casi siempre debian, pero también centos). Ahí se hace visible la frase que alguien dijo una vez: Linux está en todas partes. Mi ejemplo de usar el comando grep es solo una gota en el mar; operaciones como tail y cat son de uso habitual cuando se ingresa en un servidor nuevo; lo mismo la realización de servicios de ejecución automática, el alta y buen funcionamiento del firewall, la creación de backups automáticos y un sin fin de operaciones cotidianas que trazan una clara diferencia entre la calidad de un desarrollador: aquellos que saben linux, y los que no.
¿Y el usuario final?
Nunca se me ocurrió pedirle a un usuario final encarcidamente que aprenda Linux, más allá de recomendarlo. Pero me ocurrió algo insólito, a un cliente se le arruinaron una serie de computadoras que usan para el trabajo diario y las mandó a arreglar ya que eran máquinas nuevas y bastante buenas. A cambio le alquilé una RasPi (que es lo único que tengo a disposición para usar como computadora de emergencia, sacando una laptop y una chromebook que no iba a alquilar); y los resultados fueron curiosos. Sus empleados primero no querian usarla ya que el Raspbian les resultada "extraño"; pero poco a poco fueron acostumbrándose y a usarlo en sus labores del día a día (que consistian en utilizar una plataforma de Odoo en la nube, por lo tanto la poca potencia de una RasPi no era problema). Sorprendentemente, luego de ver el precio de estos dispositivos y el precio de implementar un sistema operativo Linux comparado a los otros, dicha empresa está pensando en pasar todos sus sistemas a Linux. En este caso es algo simplemente pintoresco, no pido que un usuario final aprenda a usar la terminal de Linux, pero si a sacarse el miedo de utilizar sus aplicaciones, que no tienen nada de raro ni de dificil. Como vemos, no solo permite ahorrar dinero, sino salir bien parado de eventualidades que ocurren.
Acerca de:
Ignacio Buioli
Degree on Multimedia Arts. He has developed numerous Multimedia projects as well as written articles and translated texts of the mentioned subject. In Moldeo Interactive, He is a Partner and Programmer; also taking care of a large part of the online networks and courses.