Application 

Lifecycle Management



Amhed A. Herrera



Amhed Herrera



Lead Software Developer - CREDLI.COM

Owner - Softworks SRL

Troll - Developers.do






CREDLI.COM

Quienes? Donde?







Disclaimer



Reveal.js





Organización



Estructura horizontal

Funciones multi-disciplinarias


Responsabilidad de grupo, no del individuo

Por qué creemos
que esta es la forma 
óptima de trabajar?



Manejo de Tareas



Manejo de código fuente







Estableciendo 

las reglas




Coding Guidelines


 //Usando ANSI, Allman
 if (x == y)
 {
    something();
    somethingelse();
 }

 //Usando K&R, OTBS, Stroustrup
 if (x < 0) {
        puts("Negative");
        negative(x);
    } 
 else {
        puts("Non-negative");
        nonnegative(x);
    }

Coding Guideliness


There are only two hard things in Computer Science: cache invalidation and naming things.
--Phil Karlton

  • Tabs VS. Spaces
  • camelCasing vs. PascalCasing
  • Bracket Positioning
  • Variable Declaration
  • Namespace Definition

Coding Guideliness


Comunicación / Transparencia


SCRUM



Scrum



Scrum


Scrum Meeting


¿Qué hice el día de ayer?

¿Qué voy a hacer hoy?

¿Que impedimentos tengo?

Y ya....

Sprint Review Meeting

(al final del sprint)



Demo funcional


Revisión de Features


Publicación de nueva versión.

Lo bueno de scrum



Cada sprint produce software que funciona

Se controla la cantidad de trabajo del equipo
(cero pizzas a las 10 PM)

Se involucra a la gerencia/operaciones con el
día a día del desarrollo

Mientras más se usa la metodología
se mejora la estimación de tiempos

Code Review








Ventajas


Feedback en tiempo real de mi código

Me entrena a detectar errores mejor

Tanto quien escribió como quien revisó
el código aprenden cosas nuevas (siempre)

El software sale con menos bugs (siempre)

No importa que tan verdugo tu seas

Como lo hacemos nosotros



Paso 1


Luego de asignado un user story / feature / ticket

Procedo a crear un branch nuevo.
Sin excepciones.

 git checkout -b feature-NombreDelFeature

Paso 2



Una ver terminado el trabajo hacemos un push
al repositorio central y solicitamos un pull request

git push -u origin feature-NombreDelFeature




Paso 3. 


Pídele a un compañero que revise tu código





Paso 4. 


Si debes hacer refactoring porque encontraron errores, entonces sometes el pull request nuevamente luego de corregirlos. 

Si todo está bien se hace un merge al branch de desarrollo.



Paso 4a

(opcional)


Si había una suite de tests, todos los tests deben pasar antes 
de que se haga el merge al branch de desarrollo


Stakeholders




El stakeholder
debe estar involucrado



Debe asistir a las reuniones de definición del sprint

Debe estar presente al cerrar cada sprint

Debe estar disponible para contestar
preguntas del equipo

No debe involucrarse en el proceso
de desarrollo en el día a día

Haciendo pruebas



Historias de Usuario


Definimos las funcionalidades en base a User Stories.

Un User Story es fácil de leer. Es texto puro. 

El user story define:

  1. Quién es el actor
  2. Cuál es el propósito / que se quiere lograr
  3. Uno o varios escenarios de como lograrlo
  4. Como se debería comportar el sistema: 
    1. Input del usuario
    2. Resultado esperado en la operación


Herramientas





Running Tests








Ticket Management




Github Issues


Basecamp


Visual Studio Online (TFS)


DoBamBam



Pivotal Tracker





Continuous Integration



EN MI MÁQUINA FUNCIONA TE LO JURO!!

Hay muchos vendors buenos







  • Desarrollado por Jet Brains
  • Totalmente gratis
  • Se puede instalar en Windows/Linux (java-based)
  • Trae soporte fuera de la caja para:
    • Compilación de proyectos .NET (.csproj y .sln)
    • Soporte para nUnit




Chat



Integrando todo en Slack






But wait !
Hangouts is Useful !!





Lecciones Aprendidas




Gracias a todos!

Referencias


Code Reviews e Integración Continua




Workflows para trabajar con git

Stack del Equipo



 

Application Lifecycle Management

By Ahmed Ayub

Application Lifecycle Management

Una breve descripción del proceso de trabajo del equipo de CREDLI

  • 2,616