Articles

¿Deben los programadores aprender Linux?

Detenme si has escuchado esto: «Los programadores sólo usan Linux. Los PC y los Mac son para los novatos»

Sí, no.

Linux es una herramienta. Windows es una herramienta. MacOS también es una herramienta. Cada uno es un sistema operativo (SO) que necesitas para que un ordenador sea útil, y cada uno tiene sus ventajas e inconvenientes. El problema es que, al igual que muchas otras herramientas, estos populares SO tienen tribus. Si Windows es DC Comics y macOS es Marvel, entonces Linux es Dark Horse.

Uh, ¿Qué es Linux, de todos modos?

Empecemos por el principio. (Es uno de mis lugares favoritos para empezar.) Si usted está preguntando si debe aprender Linux, probablemente podría utilizar una rápida introducción a lo que es Linux. Mientras que Windows y macOS son sistemas operativos individuales que Microsoft y Apple venden y apoyan, lo que Linux es (y no es) es un poco más complicado.

Muy atrás en 1991, un programador llamado Linus Torvalds lanzó un nuevo núcleo que llamó Linux. Un núcleo es, a grandes rasgos, un programa informático que se sitúa en el centro de un sistema operativo y controla las interacciones entre el hardware y el software. Se basó en Unix y en otro sistema operativo similar a Unix llamado Minix. Como puede ver, los apodos que riman con Unix ya eran una cosa, así que el kernel de Torvald prácticamente se llamó a sí mismo.

El kernel rápidamente ganó popularidad, y más programadores contribuyeron a su proyecto. Pronto un nuevo sistema operativo, también llamado Linux, creció alrededor del núcleo.

Pero el código abierto tiene que ser de código abierto, y no hay -y nunca habrá- una sola versión de Linux. Linux es una familia de sistemas operativos, que suelen denominarse distribuciones o distros. Una distribución incluye el núcleo de Linux y el resto del software necesario para que un ordenador sea utilizable. El sitio web DistroWatch enumera 100 distribuciones, pero sólo se detiene ahí porque 100 es un bonito número redondo.

developing an understanding of any major distribution gives you a significant set of skills that you can map over to any one of them.

Algunas de las distribuciones más populares son Debian, Red Hat, Ubuntu y Fedora. En realidad, Ubuntu se basa en Debian, y Fedora se basa en Red Hat. Y, por supuesto, está CentOS, que también se basa en Red Hat, y Mint, que se basa en Ubuntu… Como puedes ver, es complicado. La batalla sobre qué distro es la mejor genera tanto calor y menos luz que las batallas sobre los SO o los cómics.

Entonces, volvamos a la pregunta original. Cuando se pregunta «¿Deberían los programadores aprender Linux?», una de las posibles respuestas es «¿Cuál?»

Pero esa no es realmente una respuesta útil, ¿verdad?

Entonces, ¿debería aprender Linux?

Bueno, depende. ¿Cuáles son tus objetivos?

Esa es una pregunta que siempre debes tener en mente cuando te encuentras con una herramienta o una recomendación para empezar a usarla. ¿Qué necesitas aprender, y el tiempo que le dediques te ayudará a conseguirlo?

What are your goals? That's a question you should always keep in mind you come across a tool or a recommendation to start using one. What do you need to learn, and will spending time on this help you get there?

Linux es el sistema operativo más utilizado para servidores. Casi todos los sitios web que visitas cada día están ejecutando Linux, al igual que los servidores que están detrás de ellos para ejecutar aplicaciones «back-end» como las bases de datos. Por ejemplo, los bancos utilizan mucho Linux para gestionar las transacciones financieras. La mayoría de los servidores de bases de datos también ejecutan Linux.

Linux es muy popular en las plataformas integradas. Raspbian es una distribución popular para Raspberry Pi. El sistema operativo Android de Google es un derivado de Linux, y muchos routers y conmutadores de red también lo utilizan.

Así que, si tu objetivo es escribir software de servidor, código de Internet de las cosas (IoT) o software para sistemas embebidos, sentirte cómodo con Linux te facilitará mucho la vida.

Si su sueño es escribir aplicaciones para el iPhone o hermosas páginas web, aprender Linux podría no ser la mejor manera de pasar su tiempo en este momento.

¿Qué debo aprender sobre Linux?

La siguiente pregunta es: ¿Qué significa «aprender Linux»?

Bueno, depende. (Lo siento, no pude resistirme.)

Si vas a escribir software de servidor que se ejecute en Linux, necesita ser desplegado en sistemas que lo ejecuten. Dependiendo de dónde esté trabajando, esto puede significar entregar su código a una organización DevOps, o podría significar hacerlo usted mismo. De cualquier manera, usted puede hacer su vida, por no hablar de la vida de sus compañeros de trabajo, mucho más agradable si usted puede sentirse cómodo con la línea de comandos y cómo se organizan los archivos en un sistema Linux.

Get comfortable with the command line and how files are organized on a Linux system. These skills are transferable regardless of which distribution you learn on and which one your future employer uses.

Estas habilidades son transferibles independientemente de la distribución en la que se aprende y la que su futuro empleador utiliza. Aunque hay algunas diferencias (a menudo molestas) entre ellas, el desarrollo de la comprensión de cualquier distribución importante le da un conjunto significativo de habilidades que puede asignar a cualquiera de ellas. También le dará una ventaja competitiva sobre los desarrolladores que sólo se sienten cómodos dentro del mundo protegido de su IDE favorito.

Si usted está interesado en el desarrollo de software para la robótica o sistemas embebidos, entonces usted necesita para llegar a la intimidad con Linux en el nivel del kernel. Para usted, «aprender Linux» significa aprender el kernel de Linux.

Aquí, de nuevo, la distribución que elija es menos importante que simplemente mojarse los pies. Aunque no todas las distribuciones actualizan las versiones del kernel al mismo tiempo (y algunas son cómicamente lentas), el kernel de Linux es el kernel de Linux. Escoge una distro y empieza a jugar.

¿Cómo lo hago?

Si estás interesado en la robótica o el IoT, también podrías conseguir una Raspberry Pi y ponerte a ello. Querrás asegurarte de que tienes un ratón USB y un monitor al que conectarlo. El resto es bastante sencillo.

Si te interesa el software de servidor, elige una distribución e instálala.

Qué distribución es realmente una cuestión de elección. Algunos consideran que Ubuntu es la más amigable para los novatos. Otros consideran que Linux Mint es un poco mejor. La buena noticia es que son gratuitas, así que puedes probarlas todas.

La opción menos costosa para instalar Linux y patear las puertas y los neumáticos es instalar un software de máquina virtual en el ordenador que ya tienes. VirtualBox es gratuito y funciona en Windows y macOS. Incluso te guiará en la instalación de Linux después de configurarlo.

Una vez que tengas Linux instalado, ¡empieza a jugar! Lo bueno de jugar con la Raspberry Pi o con una máquina virtual es que siempre puedes empezar de cero si se te estropea algo. Verás que es bastante difícil romper un sistema Linux.

Entonces, ¿deben los programadores aprender Linux?

Es muy probable que te encuentres con Linux en algún momento de tu carrera como programador. Sentirse cómodo con él de antemano puede darle una ventaja competitiva sobre otros desarrolladores que no lo hacen. Hazte con una copia y empieza a jugar con él ahora.

Este post ha sido escrito por Eric Goebelbecker. Eric ha trabajado en los mercados financieros en la ciudad de Nueva York durante 25 años, desarrollando la infraestructura para los datos del mercado y las redes del protocolo de intercambio de información financiera (FIX). Le encanta hablar de lo que hace que los equipos sean eficaces (¡o no tan eficaces!)