[#ALM] Porque no usar ramas o no te pases 4 pueblos con lo que haces con tus desarrollos

Hola!

Ya que hay varias personas que se han quedado asombradas con mi declaración de no usar ramas, mejor les cuento lo que le pasó al primo del hermano del cuñado de un vecino, llamado Paco.

– Paco tuvo una petición de un Milagros (un cliente) para hacer una app para iOS para una promoción de 15 días de una crema para manos. Esta promoción comenzaba dentro de poco más de 2 meses.

– En este tipo de proyectos Paco trabajaba con Lucía que era una experta en UX, y además sabía como gestionar apps para iOS

– Paco (lo flipas) era un Xamarin developer, así que aprovechando Visual Studio Online, Paco dió de alta a Lucia y a Milagros en VSOnline

– Paco se coordinó con Lucia y Milagros para trabajar en 2 sprints de 3 semanas. Teniendo en cuenta el salto entre Sprints y los posibles cambios, todos estuvieron de acuerdo en este modelo.

– Paco creo los elementos básicos de trabajo y utilizando TFS como repositorio comenzaron a trabajar.

– Luego del 2do Sprint, Milagros estaba Happy Happy con la aplicación, así que le dió el visto bueno a Paco y Lucia para coordinar con el equipo de Mkt la publicación y promoción de la aplicación.

Pues aquí termina la historia de Milagros, Lucia y Paco y yo me preguntó …

¿Dónde están las ramas? Pues en ningún lado, Paco NO TUVO NECESIDAD DE CREAR RAMAS; ASI QUE NO LAS CREÓ !!!

Ojo, con esto no quiero decir que crear ramas sea malo. Seguramente Paco cuando hacía pruebas o cambios, tuvo un repo local de Git con sus cambios, pruebas, branches, etc; pero ¿para crear una rama que compartiría con Lucía y Milagros?

Vamos al escenario más básico: si además es una app que no tendrá versiones posteriores, ¿para qué crear un esquema DEV – MAIN – RELEASES? Si en este momento no hay seguridad de que la aplicación tenga continuidad.

Una de las features excelentes de TFS y de GIT, es que en cualquier momento puedes crear una rama, asi que; si se presenta el caso de una versión posterior o una con nuevas funcionalides, EN ESE MOMENTO CREAS UN ESQUEMA DE RAMAS.

Si piensas que el ejemplo está muy agarrado de los pelos (que lo está!); voy a intentar con el mensaje de fondo: No metas XYZ cuando creas aplicaciones, si XYZ no aporta valor a la aplicación que se está creando!. Por ejemplo, ¿para que crear una app que soporte múltiples culturas? si desde el día cero sabes que eso no es necesario.

Si luego al finalizar un Sprint, los PBIs cambian, surgen nuevos; el PO pone sobre la mesa nuevas funcionalidades que requieren cambios en la arquitectura o la forma de trabajo … tranquilo, la arquitectura emergerá de forma natural para dar cabida a esos cambios.

Lo que NO DEBES HACER es pensar por adelantado en escenarios que no apliquen y que solo compliquen tu aplicación. La frase que resume todo esto, es DEJA QUE LA ARQUITECTURA Y TU APLICACION EVOLUCIONE A MEDIDA QUE LA MISMA SE ADAPTA AL NEGOCIO … y obviamente confía en tu equipo y deja que sea el equipo el que decida.

Nota: Dicho esto, si alguno escribe aplicaciones sin tener en cuenta las bases, como por ejemplo una correcta gestión de exceptiones, es para cortarle los dedos. Es increible como una vez un developer respondió “no hice una aplicación que maneje excepciones porque el PO no lo pidió” … esto sirve para medir la calidad de una persona y para probar el filo de una Katana.

 

Saludos @ Home

El Bruno

image image image Google
Advertisements

5 thoughts on “[#ALM] Porque no usar ramas o no te pases 4 pueblos con lo que haces con tus desarrollos”

  1. Hola Bruno.
    Muy buen articulo. pero tengo la duda en el contexto colombiano no entendemos muy bien el termino de rampa…. me podrias explicar a que te refieres… para nosotros una rampa es por donde suben las sillas de ruedas…. no se si sea lo mismo en este contexto.

    Like

    1. Hola Mario,
      supongo que con “rampa” te refieres a “ramas” (no puse la palabra rampa en ninguna parte, lo he revisado por si me había equivicado!)
      En el mundo del desarrollo una rama (traducido de Branch) es una línea o repositorio de la cual se cuelgan elementos (archivos principalmente), la similitud es con una rama en la que hay hojas. De la misma forma que en un árbol, en una rama puede existir otras ramas, con “sub ramas”, más hojas, etc.
      Esta idea en el mundo del desarrollo, es para agrupar proyectos o soluciones y poder tener un mejor control sobre las mismas.
      Saludos

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.