El desarrollo de aplicaciones es una tarea desafiante. No es solo saber escribir código.
Muchos equipos tienen dificultades para comprender y alinearse con la visión del producto. En el dia a dia se enfocan en resolver lo que dice el ticket y esto conlleva a que la visión del producto se pierda.
Esto se debe a múltiples factores, pero los une un denominador común: Problemas de comunicación.
Estos problemas se intentan resolver utilizando metodologías Agile como una forma mágica de organización, pero esos intentos solo provocan mas desorganización.
Mis Servicios
Trabajo de forma independiente ofreciendo mis conocimientos como Team Coach y Technical Advisor
Si tu equipo está encontrando dificultades para funcionar correctamente, puedes Contactarme 🙋🏻♂️ para organizar una llamada.
Que hago como Team Coach
Mi experiencia me ha demostrado que la mayoría de los equipos pueden mejorar significativamente su performance cuando logran identificar sus habilidades y sus debilidades. Siendo capaces de identificar estas características y siendo conscientes de ellas el equipo está mejor preparado para enfrentar desafíos.
Ser conscientes de ello es especialmente importante cuando el equipo está debatiendo nuevas funcionalidades con el Product Owner. De esta forma se logra mejorar la calidad del producto y cumplir con los milestones establecidos.
Mi enfoque para la organización de equipos es una combinación entre los principios de Agile, principalmente la metodología Scrum, sumada a mi experiencia como Team Leader. Esto logra que pueda analizar el flujo de trabajo del equipo sumado al ciclo de vida del producto para encontrar deficiencias y ayudar al equipo a mejorar su rendimiento.
Pero el proceso no consiste solo en la mejora del equipo. La compañía también debe acompañar el proceso y brindarle a los desarrolladores las herramientas y la confianza que necesitan para convertirse en un equipo que trabaja en un producto y no solo un equipo de desarrollo.
Como Team Coach me enfoco en moldear equipos que puedan:
- Aumentar la productividad mejorando la organización, comunicación y planificación
- Diseñar/mejorar su flujo de trabajo: Comunicación + Aspecto Técnico
- Enfocarse en el producto.
- Entregar constantemente trabajo de calidad.
- Capacidad de detección temprana de problemas para notificarlas.
- Brindar estimaciones de tiempos correctos para sus tareas.
- Entregar a tiempo y alcanzar milestones.
- Ser autónomos y capaces de detectar y corregir problemas de organización en el equipo.
El proceso
Para ayudar a los equipos a mejorar sus workflows utilizando Scrum, comienzo dividiendo la tarea en dos etapas.
La primera consiste en una Tarea de discovery donde participó como observador dentro del equipo. Realizó entrevistas con cada integrante y luego con el equipo entero para entender la dinámica del mismo, como se comunican y resuelven los problemas que se presentan.
Al finalizar esta etapa entrego un documento donde detallo que fue que lo observe y hago las recomendaciones del caso.
La segunda etapa consiste en Coaching y Mentoring donde por un periodo de tiempo trabajo de manera diaria/semanal con el equipo para ayudarlos a implementar la Metodología Scrum y mejorar sus habilidades de comunicación y de toma de decisiones para lograr que el equipo se vuelva independiente y enfocado a producto.
Pero No es solo utilizar Scrum. Hay que ayudar al equipo a encontrar el balance ideal entre sus habilidades y capacidad de comunicación para que logren trabajar como una unidad.
Que Ofrezco como Technical Advisor
Desde hace más de 12 años me dedico al desarrollo de aplicaciones web. Durante este tipo trabajé con muchas tecnologías diferentes y en proyectos de diferentes tamaños.
Gracias a esto me convertí en un experto en el campo de desarrollo web. Puedes visitar mi LinkedIn para conocer más sobre mi experiencia.
Cómo Technical Advisor mi objetivo es contribuir con las compañías y ayudarlas a diseñar soluciones a medida teniendo en cuenta sus necesidades y, lo más importante, las habilidades de sus equipos.
En ocasiones los equipos no cuentan con el expertise necesario para desplegar y mantener una infraestructura moderna con la última tecnología disponible.
Pero esto no quiere decir que no se pueda comenzar por algo más simple e igualmente efectivo hasta que los equipos adquieran experiencia para desplegar y mantener nuevas tecnologías.
Un caso que sirve para ilustrar lo mencionado es como Digital Ocean utilizaba un MySQL como message queue con 15,000 conexiones durante años.
Este artículo demuestra como se pueda trabajar con un tech stack antiguo y ser igualmente eficaz para rediseñar cuando los equipos estén capacitados para mantener el nuevo stack.
Mi Experiencia
Desde hace más de 12 años me dedico al desarrollo de aplicaciones web. En los últimos 5+ años tuve la oportunidad de asumir el rol de Tech Lead y Team Leader en el desarrollo de una aplicación de billing e infraestructura multi-cloud.
Tuve la responsabilidad de liderar todos los aspectos del proceso. Esto significa, conformar un equipo multidisciplinario, diseñar los diferentes procesos, tomar decisiones técnicas sobre la arquitectura y el desarrollo además de liderar al equipo desde el primer momento.
La mayor parte de mi tiempo la ocupaba en ayudar al equipo a entender las features a desarrollar, explicar y debatir las decisiones técnicas y mejorar el workflow del equipo a medida que el proyecto avanzaba.
Como resultado, logre conformar un equipo independiente que se pensara en términos de producto y no solo en lo que dice el ticket.
Puedes leer más acerca de esta experiencia en este artículo Agile Scrum in real life 🧑🏻💻
Estoy certificado como Scrum Master (Credential ID 000588432)
Puedo aportar mis conocimientos en:
M.V.P (Minimum Viable Product)
Comenzando con la visión del producto, debes ser capaz de identificar qué es lo que aporta valor en tu producto y definir el MVP comenzando por allí.
De ese análisis se parte para definir y planificar el alcance que tendrá el MVP.
Organización del equipo (Scrum)
Implementar Scrum como metodología y framework de trabajo en tu equipo no es tan sencillo como: Seguir las reglas
Scrum ofrece herramientas para organizar el equipo y las tareas, pero no más que eso. Los equipos necesitan ser guiados para consolidarse como tal.
Cada miembro del equipo debe ser consciente de sus habilidades técnicas y de comunicación para que el equipo entero pueda encontrar el balance ideal y conseguir su rendimiento óptimo.
Hay algunos temas que necesitan ser atendidos cuando se conforma un equipo:
- Cuantos desarrolladores y que niveles de experiencia?
- Implementar Scrum de forma inteligente.
- Ayudarlos a establecer una forma de comunicación efectiva.
- Asegurarse de que todos comprendan la visión del producto.
- Darles espacio y guiarlos para que encuentren nuevas ideas y soluciones.
- Seguir mejorando el workflow y ayudar al equipo a encontrar el que mejor funciona para ellos.
Escribiendo las historias de usuario
Escribir historias de usuario bien definidas no es solo una buena manera de comunicarle al equipo lo que se intenta crear.
La práctica de escribir historias de usuario nos obliga a pensar en profundidad acerca de la feature que estamos intentando definir. De esta forma también nos aseguramos de no alejarnos de la visión de producto.
Las historias de usuario no pueden ser escritas en unos minutos. Es necesario discutir todos los aspectos de la feature, analizar la parte técnica, dependencias y cómo implementarla teniendo en cuenta las capacidades técnicas del equipo.
Definición del tech stack
Una parte crucial en la creación del MVP es elegir correctamente el tech stack a utilizar. Para esto es necesario considerar:
- ¿Qué grado de expertise tiene el equipo con respecto a los componentes del stack elegido?.
- ¿Cuál será el coste?.
- ¿Es difícil mantener la aplicación funcionando correctamente en producción sin invertir mucho tiempo en caso de fallos?.
Microservicios, Monolítico o Serverless?
Esta decisión está en sintonía con la definición del stack.
Elegir una arquitectura implica una serie de retos y complejidades en la evolución de la aplicación.
Es importante que en el proceso de toma de decisiones se evalúen los riesgos y beneficios de cada una y contrastarlos con las expectativas y planes en la visión del producto.
Diseño API
Puede parecer una tarea trivial al comienzo, pero no se debería comenzar a escribir de código antes de tener claro este punto. Un diseño de API bien definido que documente las reglas, respuestas y nomenclaturas de los endpoints te evitará muchos problemas.
Desarrollo y buenas prácticas
- Utilizar un repositorio de código correctamente: Branches, mensajes de commit, code review, merge requests, etc.
- Logs: ¿Qué, cómo y dónde?.
- Configuraciones: Manejo de secretos, variables de entorno, y medidas de seguridad entre entornos.
- Unit testing: Priorizar que testear.
- Proceso de QA.
Diseño y configuración de entornos
- Servicios Cloud Fully-Managed vs Self-Managed.
- Configuración de entornos: Dev, QA, Pre y Production.
- DevOps.
- Seguridad.
- Procesos de despliegue.
- CI/CD: ¿Cuándo, porqué y cómo?.
- Escalado y Alta Disponibilidad.
Monitorización
- Qué monitorizar.
- Cómo actuar ante fallos.
- Monitorización y observabilidad.