Cómo no romper los límites, cómo crear una buena arquitectura y cómo hacer un buen mantenimiento

¡.NET cumple 20 años!

Así que ¡Felicidades .NET y Feliz Cumpleaños! 🎂 Para celebrarlo, me gustaría preguntaros…¿Cuál es vuestra historia de cómo llegasteis a .NET por primera vez? Empiezo yo contando la mía, y recordando la primera vez que trabajé con .NET.

¿Cómo llegué hasta aquí?

Ya antes había trabajado con tecnologías de Microsoft, en concreto con el archiconocido (y hoy día no muy querido) Visual Basic 6.0, sobre todo en el colegio donde lo utilizábamos en la asignatura de Computación, y que utilicé ampliamente en un proyecto final en el colegio.

Sin embargo, cuando entré a estudiar la carrera de Ingeniería en Computación (Ingeniería Informática en España), en la Universidad ocurrió algo peculiar: la mayoría de las opiniones académicas hacia Microsoft eran muy negativas, y esa negatividad era muy contagiosa. Microsoft era literalmente el diablo.

Durante los poco más de cinco años que duró mi vida académica, tuve el privilegio de trabajar con muchísimas tecnologías, tanto súper antiguas, como modernas para esos años (1997-2003), pasando por PASCAL, COBOL, Fortan hasta Scheme, CamL, Prolog, C, C++ y JAVA (este último, el que más utilizábamos con diferencia). Por supuesto, eso también influyó en los editores de programación que usábamos: desde Vi, pasando por PICO, Emacs, hasta verdaderos IDEs como NetBeans, JDeveloper y Eclipse.

Al salir al mercado laboral, mis primeros trabajos fueron los típicos de desarrollador web, y para aquellos años había dos grandes áreas donde podías ganar mucho dinero siendo un recién graduado en América: una era ser desarrollador SAP y la otra ser desarrollador RIA (Rich Internet Applications).

Al principio me decanté por la segunda, la de ser desarrollador RIA, lo cual implicaba principalmente aprender dos tecnologías: ActionScript y Flash (ambas de Macromedia, ahora Adobe). Gracias a Dios, hoy Flash ya no existe, pero en su momento era lo más utilizado para poder tener en Internet “cosas” que fueran tan dinámicas y activas como en cualquier aplicativo instalado en nuestros equipos. De hecho, todo vídeo que se veía por Internet en aquel entonces era servido mediante algún reproductor (player) hecho en Flash. El IDE – por llamarlo así – era el Dreamweaver, una herramienta amada y odiada a partes iguales.

Rápidamente me decepcioné de las RIAs; eran un desastre, la compatibilidad entre navegadores un problema, la seguridad otro problema aparte, un verdadero infierno.

Así que me decidí por probar suerte como desarrollador SAP, para lo cual tuve la gran oportunidad de entrar en la mejor consultora SAP en Venezuela para aquella época, donde me prometieron formarme mientras – casualmente – les ayudaba con varios proyectos laterales que tenían con sus clientes en RIA, donde podía comenzar “aportando valor” mientras me formaban en SAP. Duré muy poco en esa empresa. Tanto porque seguía trabajando con ActionScript y Flash (que no me gustaban ni medio), como porque no me enseñaban de SAP, y lo que veía de SAP era muy poco atractivo.

Tenía poco más de un año de graduado y ya estaba decepcionado de la carrera. No era lo que me habían prometido en la Universidad, y no estaba realmente haciendo algo que me gustara. Fue cuando varios compañeros de estudio me dijeron que estaban todos juntos en una consultora joven y me recomendaron que entrara a trabajar allí.

Cuando entré, fue con un contrato por unos meses para hacer un proyecto en JAVA, a pesar de que en dicha consultora todo se hacía con tecnologías Microsoft, lo cual, debido a mi adoctrinamiento académico, me hizo sentir que estaba entrando en una iglesia del mal 😅

Cuando terminó el proyecto me ofrecieron quedarme con un contrato indefinido, pero tenía que aprender a programar en un lenguaje del cual nunca había escuchado antes llamado C# con una nueva versión del Visual Studio llamada Visual Studio .NET.

Desembarcando en .NET

La cosa sonaba extraña en mi cabeza. Sentía que varias personas vestidas con túnicas rojas y negras (con el rostro de mis amigos y compañeros de estudio en la Universidad) me invitaban a unirme a una secta, y todos presentaban extrañas sonrisas con más piezas dentales de las que esperarías ver en una persona normal👹

Pero me sentía bien en esa empresa 😊 El ambiente era positivo, la gente se veía contenta y en particular los proyectos tenían muy buena pinta. Como en el pasado ya había usado una encarnación del Visual Studio con VB6 pensé que sería algo fácil e interesante de explorar; así que acepté.

Lo primero que me sorprendió al aprender C# era lo parecido que era a JAVA para aquel entonces. En menos de un día ya conocía las particularidades del lenguaje, la estructura de los proyectos, las mecánicas operativas de la tecnología. En su momento pensé que era por haber estado expuesto a tantas tecnologías y lenguajes de programación diferentes, o al prestigio de la Universidad donde estudié.

El IDE era el Visual Studio .NET, que era muy cómodo de usar en comparación al Eclipse o al NetBeans (que era mi favorito para JAVA). Y esto es muy importante, ya que hoy día tenemos el Visual Studio 2022 y el Visual Studio Code (VSCode), ambos increíbles IDEs con una ergonomía sin igual, pero cuyos orígenes están hace 20 años en el esfuerzo de muchísima gente por crear el entorno de trabajo y programación más propicio para nuestra profesión.

Tanto es así que el VSCode es el IDE más utilizado hoy día para proyectos Open Source y en plataformas diferentes a Windows con lenguajes de programación distintos a los de .NET, sustituyendo poco a poco a Eclipse y tantos otros. El VSCode es pariente directo de ese esfuerzo por proporcionar el IDE más productivo.

Hoy sé que lo fácil que fue para mi adoptar .NET y C# como mis tecnologías de referencia se debe a que, quienes diseñaron la plataforma .NET en su día, lucharon arduamente por proporcionar un marco tecnológico orientado a los programadores, y por tanto, que fuera natural e intuitivo de usar y alineado a nuestra forma de pensar. Esto  hacía que no tuviéramos que preocuparnos por los “problemas” habituales, y centrarnos en lo que de verdad importaba: diseñar e implementar aplicaciones de calidad.

Pero lo que realmente me hizo cambiar mi forma de ver Microsoft y sus tecnologías fueron dos cosas que quizá os parezca absurdas, pero que en aquel entonces ninguna tecnología tenía.

La primera fue depurando (debugging) el código del proyecto en el cual estaba trabajando, donde tenía que reiniciar la ejecución para evaluar unos métodos y sus valores constantemente, hasta que llegó el líder del proyecto y me mostró la «flechita amarilla».

Para quienes trabajamos desde hace años con Visual Studio, sabemos que la «flechita amarilla» representa el apuntador a la instrucción de nuestro código en memoria que se está ejecutando en ese preciso momento. Lo que yo no sabía y me mostraron, es que podía arrastrar la flechita hacia arriba o hacia abajo, efectivamente regresando o avanzando en la ejecución de ciertas líneas de código para evaluarlas sin tener que reiniciar la ejecución; e incluso, podía cambiar en tiempo de ejecución el valor de variables y parámetros para ver el cambio de comportamiento en el código.

No podía creerlo. Era impresionante, super productivo, super cómodo… ¡era espectacular!🤩

Para aquella época (año 2004) no existía ningún IDE en el mercado que pudiera hacer eso. Esta funcionalidad apareció años después en Eclipse.

La segunda fue al desplegar la aplicación que desarrollábamos. En ese momento no se hablaba de integración o despliegue continuos (recordemos, año 2004), sino que alguien generaba los “desplegables” a montar en un servidor de aplicaciones.

Para entender cómo funcionaba el proceso, me invitaron los colegas de IT a ver cómo lo realizaban. La aplicación en cuestión era una aplicación web desplegada dentro de un IIS (Internet Information Service) que para mi cabeza de JAVA era como el AS (Application Server), por lo cual yo esperaba ver archivos .ear, .war, .jar por todos lados con MANIFEST pululando por ahí.

¡Estaba totalmente equivocado!

Lo que ocurría era que el líder de equipo generaba una compilación para release de la aplicación, la cual se creaba en un directorio que se podía comprimir (habitualmente en .zip) completamente como una unidad. El archivo comprimido se dejaba en un directorio compartido para que los responsables de IT realizaran el despliegue.

Lo que hacía entonces IT era tomar el fichero, lo descomprimirán, copiaban el contenido y lo pegaban en el directorio correspondiente del IIS, sin reiniciar el servicio.

Yo no entendía nada, mi cerebro de programador JAVA no entendía nada. ¿Dónde estaban los MANIFEST? ¿Por qué no se mete todo en paquetes? ¿Por qué no hace falta reiniciar el servidor? Es Windows, siempre hay que reiniciar, ¿no?

Le transmitía estas dudas e inquietudes a la persona de IT que me miraba como si fuera un loco balbuceando sílabas sin sentido. Me miro fijamente y me dijo: “¿por qué hacer todo eso para desplegar una aplicación web? ¿por qué te complicas la vida?

En JAVA para desplegar sufríamos. Dependiendo del AS que usáramos, si el despliegue salía mal podíamos tener que vernos obligados a reinstalar todo el servidor. Por eso usábamos muchas máquinas virtuales (costosas y lentas) o el famoso Norton Ghost con una imagen de la última versión funcional del servidor. En .NET, desplegar era un proceso mecánico sin casi complicaciones.

Fue cuando me golpeó y mi camino hacia .NET fue absoluto. No fue un descenso hacia la oscuridad como nos pintaban en la Universidad, sino un ascenso a los cielos.

Entre que podías volver atrás o ir hacia adelante en el tiempo durante las depuraciones, cambiando los valores de parámetros y variables al vuelo, y que desplegar era un proceso súper sencillo, me di cuenta de que .NET era el futuro, C# el lenguaje perfecto para mí, y que el Visual Studio el espacio donde mejor me sentía.

¿Hacia dónde iremos ahora?

Han pasado 19 años desde mi primera vez con .NET y C#. Desde entonces, no he dejado de usar estas tecnologías en mi día a día, y estoy más que contento y satisfecho de haber recibido en su momento la oportunidad de abandonar la senda tecnológica que me mostraron en la Universidad para recorrer este otro camino que todos los días veo más y más interesante cada vez.

Si le preguntan al Rodrigo de hace 19 años atrás como veía el futuro de .NET os aseguro que no habría acertado en nada. El futuro – hoy nuestro presente – es más impresionante de lo que habría podido intuir años atrás.

Hemos visto más de 10 versiones del Visual Studio, hemos visto nacer al Visual Studio Code y cómo se ha adueñado con carisma técnico de los desarrolladores que no son afines a .NET; y de la plataforma, la hemos visto crecer, complicarse, simplificarse, dividirse y ahora nuevamente a unificarse. Nada de esto lo habríamos podido predecir, por lo cual no creo que podamos predecir el futuro.

Si le preguntan al Rodrigo de hoy cómo ve .NET dentro de los próximos años, os diría que no tengo ni idea, pero que espero poder estar ahí para contaros cómo ha sido el camino y lo maravilloso que fue recorrerlo.

Esta es la historia de cómo llegué a .NET…así que ¿Cuál es la vuestra?

mm

Sobre Rodrigo Liberoff

Arquitecto Cloud y de Soluciones de Software en ENCAMINA, cuento con con más de 19 años de experiencia. Apasionado del diseño, conceptualización e implementación de software empleando el lenguaje de programación C# y las últimas tecnologías de Microsoft, especialmente Azure. Disfruto de crear arquitecturas de software e investigar sobre nuevas tecnologías, y su posible implantación dentro de diversas organizaciones y clientes. También soy un Agile Coach, y me fascina hablar y ayudar en la institución y uso de metodologías ágiles como Scrum, Kamban, Sumban y SAFe.
Esta entrada ha sido publicada en .NET. Enlace permanente.
ENCAMINA, piensa en colores