Linux como desarrollador .NET

04-02-2026

En 2025 tomé la decisión de alejarme de Windows y adoptar Linux como mi sistema operativo principal. Al desarrollar gran parte de mis aplicaciones paralelos con .NET, parecía una decisión complicada, pero hubo dos detalles fundamentales que me dieron el empuje para dar el salto:

1. El entorno real

Al trabajar en Linux, la configuración necesaria para levantar un servicio en .NET es prácticamente la misma que se requiere para desplegar el proyecto en Producción.

Linux necesita que todo lo que se realice sea de manera explícita (es denso a veces, pero al final nos salva el día): sin los permisos necesaios, el sistema no permite abrir un archivo y mucho menos crearlo. Al utilizar Docker, me vi obligado a entender realmente cómo se construye el pipeline entre el localhost y los servicios, aprendiendo a gestionar permisos y ajustar los grupos del sistema operativo de forma manual. Esta cercanía con el entorno real de los servidores no es algo que a Windows le guste exponer, cuya filosofía se acerca más a “Cero configuración”.

2. Aprendizaje profundo

A veces, trabajar en .NET con herramientas de escritorio se siente más como un trabajo de configuración visual que de programación. Los niveles de abstracción y las funciones automáticas de Visual Studio facilitan la tarea, pero pueden volver el trabajo algo repetitivo; terminamos ensamblando bloques sin entender qué hay dentro. Es útil si el trabajo debía ser entregado ayer, pero no tanto si el objetivo es entender .NET.

Linux te obliga a utilizar la DotNet CLI. Esto implica crear manualmente los archivos, definir los namespace, las clases, las Data Annotations, etc. Al perder “la ayuda” del IDE, se gana una comprensión técnica mucho más sólida de la estructura del código.

Servidor personal

Finalmente, este año recuperé una computadora vieja que ya no servía para el uso diario, pero resultó de utilidad para instalar Ubuntu Server. Fue una ayuda increíble: la uso para crear carpetas de proyectos y desplegarlos como si se tratara de una instancia EC2 de AWS.

Configuro mis propios contenedores de Docker, ajusto variables de entorno, otorgo permisos y levanto servicios manualmente. Si el puerto de mi servidor local entrega las respuestas que espero, tengo la seguridad absoluta de que, al llevar el proyecto a producción, el resultado será exactamente el mismo.

Conclusión

Creo que hay dos maneras de utilizar un Sistema Operativo: están aquellos que son rígidos y a los debemos ajustarnos, y luegos están los que se ajutan a nosotros.