No es oro todo lo que reluce

Con el lanzamiento del framework 3.0 de .NET se presentaba Windows Communication Foundation ( WCF ) como una verdadera revolución en el mundo de las comunicaciones.


En el número 37 de dotNetMania leía una entrevista a Ami Vora, Program Manager de .NET Framework 3.0, que decía:


«Creo que WCF es un API revolucionaria en muchos sentidos.Está pensada para facilitar la vida de los programadores, permitiendo  que los programadores puedan mantener su foco en la lógica de la aplicación y no en las caracteristicas especiales que pueden necesitar como consecuencia de que la aplicacíón tenga que comunicarse con las demás.


Los programadores podrán añadir valor a sus aplicaciones haciendo que estén conectadas, de una forma sencilla, por una parte, y muy poderosa en sus posibilidades, sin tener que aprender distintas tecnologías en función del tipo de conectividad que se necesite en cada caso. Y todo esto sin importar el protocolo de comunicación, el lugar en donde tenga lugar esa comunicación o los mecanismos seleccionados en la transferencia.»


Ya llevo un tiempo trabajando con WCF y aunque sí que me parece una tecnología muy interesante y seguramente volvería a usarlo si empezara de un nuevo proyecto, no estoy de acuerdo con lo que se comenta en esta entrevista. No es oro todo lo que reluce.


Usar WCF no es tan sencillo como parece o como se dice. Es potente, sí, pero podríamos decir que en muchas ocasiones es demasiado potente. Esta potencia se vuelve contra nosotros y hace más complejo su uso.


Te dejar hacer cosas complejas de una manera «más sencilla» de como se podría hacer sin esta tecnología, pero en mi opinión se complica cuando lo que se quiere hacer no es tan completo. Si quieres hacer algo básico, sencillo, que no requiere de grandes aspavientos, no es tan sencillo como debería ser. En este punto creo que se ha optado por la potencia pero se ha olvidado que también debería ser sencillo de utilizar.


Podría ser como un Ferrari y un utilitario. WCF puede ser como un Ferrari, pero normalmente con un utilitario nos vale…Si para las situaciones habituales donde con un utilitario nos vale usamos un Ferrari las cosas se nos complican. Usar un Ferrari para ir a trabajar tiene que ser un poco complicado de aparcar. 🙂


He probado la «Web Service  software Factory«, para ver si usándolo podría hacer más sencillo e intuitivo el uso de WCF pero nada. Está bien si se usa como referencia y para ver buenas prácticas a la hora de implementar una aplicación wcf, pero no pasa de ahí.


Por otro lado, tenemos que tener en cuenta que la gran mayoría de las decisiones de diseño y de arquitectura se toman en las fases iniciales del proyecto y entre estas decisiones se toman las decisiones referentes a las comunicacicaciones. Centrarse en la lógica de negocio olvidándonos de las comunicaciones se hace complicado y en muchos casos imposible. Por ello, aunque WCF te da una gran flexibilidad para cambiar la forma de comunicarse las aplicaciones rara vez se hará uso de esta flexibilidad.


Por último, tampoco considero que WCF nos abstraiga de las comunicaciones. Tienes que conocer muchos aspectos de las comunicaciones para poder hacer el diseño o la arquitectura de la aplicación y conocer bien cómo hacer funcionar correctamente un servicio; service Throttling, funcionamiento de las instancias, el manejo de sesión etc…


Por tanto, al «Cesar lo que es del Cesar». WCF es una tecnología interesante y potente, pero a la que en mi opinión le falta todavía algo para ser esa tecnología de la que habla Ami Vora en la entrevista. Sería interesante que Microsoft hiciera algo para Orcas pero parece que no será así o al menos no he leido nada sobre este tema.


Si habéis trabajado con WCF ¿ Qué os parece esta tecnología?¿Os parece sencilla?¿Estáis de acuerdo con las palabras de Ami Vora?

¡Hoy me siento ágil, voy a usar Scrum!!

Cada vez en más sitios escucho lo bonito y maravilloso que es Scrum.  Leo blogs, articulos, hablo con algunas personas que lo conocen y todos son cosas positivas.


Y sí, estoy de acuerdo en que Scrum es una buena metodología. Rodrigo Corral ya escribía hace tiempo sobre por qué le gustaba Scrum y estoy de acuerdo con él; es una metodología “sencilla”,  fácil de entender, tiene normas claras, protege al equipo de desarrollo etc…


Pero en este post me gustaría alertar sobre el peligro de envaletonarnos y pensar que hacer una implantación de Scrum, o de cualquier otra metodología, es un proceso sencillo y que con poco esfuerzo cualquiera puede ponerse manos a la obra.


Uno no se levanta un día y dice: ¡HOY ME SIENTO AGIL! ¡VOY A USAR SCRUM!  


Usar esta u otra metodología requiere realizar una serie de tareas y esfuerzos sin los cuáles no tendrá éxito.


Como primer tenemos que tener claro que ni Scrum ni cualquier otra metodología no es nada sin usar buenas prácticas. Si no se usan buenas prácticas olvidaros.


Los pilares de cualquiera metodología son las buenas prácticas y si éstas no se asientan correctamente será muy dificil usar Scrum; conocerlas, saber cómo se usan y sobre todo aplicarlas es la base del éxito. Esta afirmación puede parecer muy obvia y lógica pero muy pocas empresas que lo tienen tan claro. Pensad en los proyectos que hayáis realizado últimamente y revisad qué buenas prácticas empleais:


·         ¿ Usáis una herramienta de control de fuentes?


·         ¿ Usáis una herramienta de gestión de incidencias?


·         ¿ Automatizais las builds?


·         ¿ Hacéis unittets?¿ hacéis pruebas de humo?


·         ¿Tenéis especificaciones? Por pequeñas que sean?


·         …..


 


El test de Joel nos da una guía de que deberíamos emplear en nuestros proyectos antes de pensar en usar una u otra metodología.  


Usar buenas prácticas es la base, pero tampoco pensemos que es lo único que hay que hacer.  En el caso de Scrum es importante conocer y asumir las reglas de Scrum. No vale coger lo que nos interesa, un poquito y otro de allí. O sea hace Scrum o no se hace, pero no hay medias tintas.


Con este post no pretendo decir cómo se debe implantar Scrum, simplemente pretendo dejar claro que hacer Scrum o cualquier otra metodología no es una decisión trivial que se pueda tomar de un día para otro.