Aplicando una estrategia Agil en el Desarrollo

Posted on Leave a commentPosted in ALM, Arquitectura, Cloud, Consultoría, Desarrollo de Aplicaciones, Servicios

¡Piensa Ágil!

Cuando se trata de proyectos de desarrollo, uno de los primeros  aspectos que se debe de tomar en cuenta es la metodología que se empleará para su gestión. En está ocasión hablaremos de los conceptos básicos de la filosofía Scrum  y de algunos puntos a los que recomendamos prestar cierta atención al momento de adoptarla.

Por mucho tiempo  los desarrollos de software han seguido el enfoque tradicional  conocido como waterfall, el cual se lleva a cabo en una serie de etapas estrictamente secuenciales. Este enfoque define una serie de fases que van desde el análisis y diseño, hasta la fase de pruebas y verificación. Si bien este enfoque define claramente  las tareas a ejecutar en cada etapa, tiene la desventaja que se presenta mayormente  cuando no se tiene una idea clara o completa de funcionalidad que se requiere desde un inicio,  ocasionando que la integración de cambios en algún requerimiento impacte dramáticamente en la entrega del proyecto.

Las metodologías agiles como Scrum, por otro lado, son un enfoque de desarrollo iterativo e incremental, donde esencialmente los requerimientos son revisados periódicamente (iteración)  con el objetivo de crear pequeñas piezas de software funcionales (incremento).

Los primeros conceptos de Scrum datan de inicios de los 90, siendo Ken SchwaberJeff Sutherland los principales autores de la guía de Scrum. La gran aportación de esta guía, radica en definir  los artefactos, tiempos y roles que se utilizan en Scrum.

 

Artefactos, Flujos y Roles.

Resumiendo un poco los principales roles, tenemos el Product Owner, encargado de representar a todos los interesados por parte del negocio, el Development Team, responsables de la creación y entrega del producto y finalmente el Scrum Master quien será el que facilite la comunicación, remueva impedimentos, y asegure que los procesos estén apegados a Scrum.  En su conjunto estos tres roles forman lo que se conoce como Scrum Team.

ScrumStragtegy

Dentro de los Flujos o iteraciones, Scrum define una serie de reuniones de coordinación y tiempos de entrega, tales como los Sprint, Daily scrum, y Sprint reviews.  Es común que el Daily Scrum se inicie haciendo con gran entusiasmo, y con el paso del tiempo se vaya dejando en segundo plano, para finalmente en ocasiones prescindir de esta reunión. Hay que tomar en cuenta que el objetivo de esta pequeña reunión es el tener conocimiento de las tareas que cada miembro del equipo pretende realizar y conocer si existe algún impedimento para cumplirlas, y no un reporte o evaluación de actividades. Llevar a cabo las reuniones diarias de Scrum, permitirá avanzar más rápidamente y  evitará que dos miembros del equipo trabajen en una misma tarea,  con lo que se evita la duplicidad de trabajo.

Dos de los artefactos a los que se debe prestar atención, son  el Sprint backlog y el concepto de Done (hecho o finalizado), el Sprint backlog es la lista de tareas o trabajo que el Development Team debe completar en una entrega  o Sprint.  El concepto de Done,  es la definición o criterio de aceptación que determina que una tarea, interfaz, o funcionalidad esté finalizada. Esto último es muy importante ya que generalmente el concepto de finalizado es un tema muy subjetivo, por lo que es recomendable definir para cada caso las consideraciones a tomar para dar por completado un requerimiento.

sprint_backlog

‘Valorar más el software que funciona que la documentación exhaustiva’.

Finalmente, una característica importante y muchas veces mal entendida, es dejar en último término la elaboración de documentación o incluso prescindir de ella. Si bien las metodologías como Scrum dan prioridad a la interacción entre usuarios y desarrolladores con la finalidad de obtener una retroalimentación frecuente, no debe descartarse generar al menos una documentación básica que describa el funcionamiento y los componentes de la solución.

Nuestros equipos de desarrollo en Extend asi como nuestros clientes, han encontrado en Team Foundation Server, la plataforma por excelencia que sin duda te ayudara “Aplicando una estrategia Agil en el Desarrollo”, pregunta a nuestros expertos

Si quieres conocer un poco más o tienes algún proyecto de negocio en puerta, contáctanos:contacto@extend.com.mx

Te invito a conocer Nuestro enfoque en ALM!!

Imagen de perfil de Romeo Alvarez

Romeo es ingeniero de formacion, con una Maestria en Telecomunicaciones, cuenta con amplia experiencia en Soluciones desarrolladas en plataformas Microsoft. SharePoint y Azure como sus tecnologias predilectas. Actualmente Romeo es Lider de desarrollo dentro del equipo de Operaciones en Extend

¿Nativas, Hibridas o basadas en Web?

Posted on Leave a commentPosted in Apps, Calidad, Consultoría, Desarrollo de Aplicaciones, Usabilidad

Mucho se habla hoy en dia de 3 tipos de aplicaciones móviles: Nativas, Hibridas y basadas en Web, cada uno con consideraciones especificas que debes tener en mente.

Cuando piensas en apps y experiencia movil, sin duda tu ultima opcion debera ser las basadas en Web ya que estas dejan fuera el aprovechamiento y acceso de las funciones de hardware del movil/tablet y con ello la experiencia que brindaras a tus usuarios sera mucho mas limitada, por otro lado del tema de las aplicaciones híbridas o nativas, las hibridas prometen ser un acelerador y una via para promover aplicaciones utilizando lenguajes como C#, HTML5, CSS y JavaScript (para el núcleo) utilizando frameworks para parecer aplicaciones nativas y cumplir con lineamientos para poder ejecutarse en los diferentes dispositivos.

 

hibrid

 

Un solo núcleo multiples plataformas

El no tener que programar lo mismo 2 o 3 veces en diferentes lenguajes es sin duda lo que atrae de estos métodos de desarrollo, sin embargo debes considerar que requeriras de conocimientos superiores a los básicos en todas las plataformas (algo que muchas veces se olvida) para comprender el comportamiento de cada una de las plataformas, las mejores practicas, y algo sumamente importante la usabilidad alineada a los estandares de cada plataforma y no ser de los cientos que implementan apps con controles y navegacion de una experiencia Android en un iOS, lo cual definitivamente no hace lucir bien a tu app.

 

En una idea hibrida algunas opciones que puedes considerar son:

  • Xamarin, Appcelerator, Phonegap; existen demasiadas opciones dependiendo del lenguaje que se desee usar, todas funcionan y se pueden desarrollar aplicaciones usando una infinidad de características casi nativas como son:
    • Uso de servicios REST
    • Notificaciones Push
    • Desplegar en tiendas
    • Despliegue privado
    • Uso de beacons
    • Pruebas automatizadas
    • Video en streaming
  • MONO, el framework que si funciona, la adaptación .NET de código abierto es una buena opción para un desarrollo híbrido.
  • La comunidad es enorme y ¿cómo no serlo? al usar uno de los lenguajes de programación mas usado a nivel mundial, cualquiera que se llame a si mismo programador empezó con Basic o C#

Claro que se puede realizar una aplicación completa desde la A hasta la Z y obtener lo mismo que se consigue con un lenguaje como Java ,Objective-C o Swift, siempre y cuando se tenga establecido el objetivo y alcance de la app desde el principio, si decides realizar cambios futuros o tener tus controles personalizados es cuando empiezan la diversion , y es que en un gran numero de ocasiones no cuentas con algunas características nativas o no tienes compatibilidad para realizar ese tipo de operaciones o tal vez no existe una librería que pueda hacer lo que tu requieres en este punto lo recomendable bien podria ser una app nativa.

enfadado

En resumen soluciones hibridas, nativas o basadas en Web ??, definitivamente tu decides, solo considera el objetivo y alcance de tu app, ello te ayudara a determinar cual es la mejor solucion para ti.

Ninguna de las 3 es la mejor opcion y todo esta en funcion de tu necesidad, para soluciones sencillas y muy controladas sin cambios de último minuto o expansiones en el futuro una solucion hibrida sonaria bastante bien, por otro lado si tu idea es tener una solucion al dia en componentes y brindar la mejor experiencia, usabilidad y estandarizacion ve por una solucion nativa.

Si quieres conocer un poco mas, tienes algun proyecto de negocio en puerta, contactanos: contacto@extend.com.mx

Imagen de perfil de Isai Novelo

Controller en Extend Solutions

Isai es Consultor de TI apasionado del uso de las Tecnologias Microsoft principalmente, con más de 12 años de experiencia comparte historias de exito en el desarrollo de aplicaciones Web y para Mobile, Cuenta con un MBA acreditado por SACS, ingeniero de formación.