sábado, 7 de junio de 2014

Cosas de la vida: Mi obsesión con el buen código

Llevo un par de años obsesionado con que no puedo quedarme estancado con los pocos conocimientos que tenía desarrollando aplicaciones. Durante muchos años fui una persona que pensaba que simplemente con la experiencia de trabajo del día a día ya era suficiente para ser buen programador. A base de buenas hostias como panes comprobé que me equivocaba y que debía espabilar. Comencé a leer libros, blogs y todo lo que estuviera a mi alcance con el fin de aprender de buena mano toda aquella tecnología con la que trabajaba (C#, ASP.NET WebForms, NHibernate, StructureMap, etcétera). Mi idea no era conocerlos de memoria, sino tener consciencia de su filosofía, potencial y conocer la mayoría de sus características con el fin de poder sacar su máximo jugo. Así, si me encontraba conque debía de mapear una propiedad de forma especial en NHibernate con una columna de una tabla con tipo incompatible, saber que NHibernate ofrece la posibilidad de crear tipos de usuario especializados y extender su funcionalidad. De esto hablaré en otro post algún día. 

Mientras leía me tope con este libro: Professional ASP.NET Design Patterns. Este libro me abrió los ojos. No tengo más que mis más gratas alabanzas a este libro. Ahora está un poquito desfasado tecnológicamente (¡¡¡2010 OMG!!!) pero aun así es bastante recomendable para todo aquel que desarrolle aplicaciones web en .NET. Este libro me abrió al mundo de los patrones de diseño y su aplicación en tecnologías web de ASP.NET, tanto WebForms como MVC. Me enseñó buenos patrones de diseño como el patrón nulo, el patrón decorador o el patrón cadena de responsabilidad entre otros. Me enseñó metodologías de diseño como es el DDD (Domain Driven Design, o en castizo Diseño Orientado a Dominio). Me enseñó patrones de presentación como MVC (Modelo-Vista-Controlador), Front Controller o MVP (Modelo-Vista-Presentador). Me enseñó de patrones de persistencia, como el Unit Of Work. Me enseñó la importancia de los principios de diseño SOLID y la importancia de todo lo que implica cada letra en el buen desarrollo de las aplicaciones. Pero todo esto palidece ante la forma en que realizaban los ejemplos de cada uno de estos patrones: Cada uno de ellos acompañaba de un ejemplo completo desde el html hasta la capa de datos demostrando su potencial. Y no solamente eso sino que se permite el lujo de decir "Haré este ejemplo del patrón decorador usando WebForms y NHibernate como acceso a la bd" y en otro ejemplo usar MVC con una capa de datos en memoria, o otro ejemplo solo usando Handlers. Lo que quiero decir es que lo que me enseñó este libro es que la tecnología esta al servicio del programador y que con buen uso y cabeza puedes conseguir todo lo que te propongas con cualquier tecnología que quieras usar. ¿Porqué encasillarse con MVC o con WebForms? ¿O con NHibernate o Entity Framework? ¿O con StructureMap o Unity? Trabaja con lo que estés más a gusto, al cliente le da igual qué tecnología escojas, mientras obtenga lo que pida. Y programando modularmente, otra cosa que me enseñó este libro, ¿que una tecnología elegida no te ofrece lo que necesitas? Por ejemplo, ¿que NHibernate no permite X caso y Entity Framework sí, y es necesaria? Implementas la capa de datos usando Entity Framework y simplemente cambias el módulo de capa de datos. El resto de capas o módulos no se enterarán de nada.

Tras leer este libro descubrí la importancia de los patrones de diseño, principios y demás amiguetes y mi obsesión por conocer las tecnologías con las que trabajaba se convirtió en obsesión en conocer todos lo relativo a best practices de código. DDD, patrones, MVP, SOLID. Intentaba buscar todo sobre ello. También intenté aplicarlos en el trabajo, cosa difícil. Pero algo se hizo. Una cosa que descubrí es que aplicar estos conceptos a medias es como pegarse un tiro en una pierna y correr una maratón. Los problemas aparecen solos, así que si lo intentáis, definid contextos completos y migrad estos contextos completamente. Tras un tiempo descubrí un nuevo mundo: CQRS. Pero esto es una historia para otro día.

2 comentarios:

TripToCore dijo...

Excelente post amigo Michael, te animo a que sigas con el blog y compartas tus experiencias con la comunidad. Animo gacho!!!. David

Unknown dijo...

Michael, a veces pienso que el libro lo escribiste tú :) Gracias por compartir experiencia y conocimiento con nosotros

Publicar un comentario