Ciertamente, todos/as nos hemos encontrado en la tesitura de un proyecto basado en un lenguaje en el que habremos chapurreado código tímidamente o simplemente nos ha faltado la oportunidad de poder trabajar en la trinchera directamente.
Hace no mucho, nos llegó la oportunidad de sacar adelante un evolutivo de mejora arquitectónica. Ésto se traduce a que, la solución se liberó en su día "deprisa y corriendo", seguramente por necesidades de cliente. Quiero evitar el pensamiento de que el equipo al que se le encomendó dicho cometido se encontrase sin conocimientos previos mínimo y quiso apartar la vista al liberar la solución.
La única premisa que se impuso fue basar la solución de arquitectura en ASP.NET.
Aquí un javero de pura cepa con una certificación en tramite, receloso a cambiar de contexto, pero predispuesto a aprender y poder definir una arquitectura completa desde cero. Demasiadas eran las carencias que contenia ya el aplicativo.
Hace no mucho, nos llegó la oportunidad de sacar adelante un evolutivo de mejora arquitectónica. Ésto se traduce a que, la solución se liberó en su día "deprisa y corriendo", seguramente por necesidades de cliente. Quiero evitar el pensamiento de que el equipo al que se le encomendó dicho cometido se encontrase sin conocimientos previos mínimo y quiso apartar la vista al liberar la solución.
La única premisa que se impuso fue basar la solución de arquitectura en ASP.NET.
Aquí un javero de pura cepa con una certificación en tramite, receloso a cambiar de contexto, pero predispuesto a aprender y poder definir una arquitectura completa desde cero. Demasiadas eran las carencias que contenia ya el aplicativo.
¡Al meollo!
Lo primero fue buscar información específica sobre funcionamiento del lenguaje. Partiendo de la premisa de una arquitectura ASP. NET Web Forms.
Resultó ligeramente sencillo encontrar información y tutoriales sobre patrones de diseño fácilmente aplicables. Entre ellos:
Resultó ligeramente sencillo encontrar información y tutoriales sobre patrones de diseño fácilmente aplicables. Entre ellos:
- Service
- Repository
- Authentication Form
- Membership
- Command
- MasterPage/UserControls
- AjaxToolKit
- NUnit
ja.. ja.. ja..
Nada más lejos de la verdad si el mundo del software fuese así de sencillo. Pero la cruda realidad, suele ser "ligeramente" diferente...
Con premisas como:
Con premisas como:
- Un sistema de des-rutilización de código en las vistas. Basada en one-to-one en aspx
- Solo una traza de log en todo el aplicativo. Conteniendo las operaciones a SQLServer que el usuario consuma.
- Una autenticción de usuario inexistente basada en la confianza de que un sistema SSO sea invulnerable y seguro.
- Sistema de mensajes de feedback al usuario sobre sus acciones, basada en la elevación de excepcion en las comunicaciones con el motor de Base de Datos SQLServer.
- Vulnerabilidades de seguridad sobre la totalidad del aplicativo.
Con las anteriores premisas, debíamos de realizar un buen trabajo de cohesión para cubrir las deficiencias existentes en el aplicativo actual.
Hay que añadir, que éste evolutivo deberá llegar a gran puerto con la metodología Scrum apoyado en Kanban (Scrumban). Según la experiencia de correctivos realizados anteriormente sobre dicha solución, parece que habría trabajo para un equipo de 3/4 personas durante un año (como poco).
Desde un punto de vista tecnológico y de cara a la visibilidad del equipo al cliente, parece una gran oportunidad (o al menos, eso pensaba yo).
Desde un punto de vista tecnológico y de cara a la visibilidad del equipo al cliente, parece una gran oportunidad (o al menos, eso pensaba yo).
Sprint 0
Con un Backlog establecido y priorizado por el product Owner. EL equipo, realizó una estimación de las historias de usuarios que se podrían asumir en el sprint backlog, teniendo en cuenta el tiempo que se destinará a implementar la arquitectura inicial.
¡The Show Starts!
Primera oportunidad de mejorar: ¿El equipo dispone de la formación necesaria sobre el lenguaje a utilizar?
Me gustaría decir que sí. Pero, por desgracia, la respuesta es la contraría. Entre los miembros que se encuentran en el equipo, solo uno contaba con experiencia previa en el contexto.
A lo largo del sprint, fueron apareciendo impedimentos perfectamente solucionables si el único requisito impuesto para la aruitectura, hubiese sido algo diferente a "utilizar ASP.NET".
Esto se ha traducido a un desvío de casi el doble del tiempo estimado por el propio equipo para la adecuada finalización de las historias de usuario.
Me gustaría decir que sí. Pero, por desgracia, la respuesta es la contraría. Entre los miembros que se encuentran en el equipo, solo uno contaba con experiencia previa en el contexto.
A lo largo del sprint, fueron apareciendo impedimentos perfectamente solucionables si el único requisito impuesto para la aruitectura, hubiese sido algo diferente a "utilizar ASP.NET".
Esto se ha traducido a un desvío de casi el doble del tiempo estimado por el propio equipo para la adecuada finalización de las historias de usuario.
Retrospectiva Personal
Un proyecto desde cero y una metodología ágil, ¿Es una premisa de éxito?
La realidad del día a día, es diferente a la que podamos aprender sin un pliego de experiencia previo.
Pese a todo, el Sprint 0 se consiguió finalizar con la calidad que un cliente debe esperar. Ésto me hace sentir orgulloso del equipo en el que me dieron la oportunidad de encontrarme. Muchísimas gracias por el esfuerzo y la implicación para sacar el Sprint 0 adelante.
Ya veremos si en la retrospectiva del siguiente Sprint, el equipo ha aprendido una manera de mejorar.
La realidad del día a día, es diferente a la que podamos aprender sin un pliego de experiencia previo.
Pese a todo, el Sprint 0 se consiguió finalizar con la calidad que un cliente debe esperar. Ésto me hace sentir orgulloso del equipo en el que me dieron la oportunidad de encontrarme. Muchísimas gracias por el esfuerzo y la implicación para sacar el Sprint 0 adelante.
Ya veremos si en la retrospectiva del siguiente Sprint, el equipo ha aprendido una manera de mejorar.
No hay comentarios:
Publicar un comentario