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
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)
(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
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)
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.
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
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
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
preguntas del equipo
No debe involucrarse en el proceso
de desarrollo en el día a día
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:
- Quién es el actor
- Cuál es el propósito / que se quiere lograr
- Uno o varios escenarios de como lograrlo
- Como se debería comportar el sistema:
- Input del usuario
- 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
- Smartbear Software - Social Effects of code review (http://bit.ly/1k7Pdxz)
- Wikipedia - The Hawthorne Effect (http://bit.ly/19NdS8F)
- Martin Fowler - Continuous Integration (http://martinfowler.com/articles/continuousIntegration.html)
Workflows para trabajar con git
- A successful grit branching model (http://bit.ly/197szRP)
- Tutorial de git-flow en Atlassian.com (http://bit.ly/1bF3oFY)
- Github-Flow (http://bit.ly/1ey8vqK)
Stack del Equipo
- Pivotal Tracker (pivotaltracker.com)
- Github (github.com)
- Google Docs (docs.google.com)
- Google Hangouts (hangouts.google.com)
- Visual Studio Plugins
- ReSharper (jetbrains.com/resharper)
- SpecFlow (specflow.org)
- Slack (slack.com)
- Team City (jetbrains.com/teamcity)
Application Lifecycle Management
By Ahmed Ayub
Application Lifecycle Management
Una breve descripción del proceso de trabajo del equipo de CREDLI
- 2,616