Entonces me gustaría compartir, lo que pienso, son algunos puntos a tener en cuenta para el éxito en el Desarrollo de Software, más allá de la tecnología empleada.
Lemondata - Blog: http://blog.lemondata.com.ar/?p=162
More than Just Lines on a Map: Best Practices for U.S Bike Routes
Desarrollo de software algunos tips para llegar a buen puerto...
1. Desarrollo de Software: algunos tips para llegar a
buen puerto…
Cuando me senté a bosquejar este post, me encontré con varios temas en
la cabeza, y todos me parecieron interesantes; por eso decidí escribirlos en
orden de aparición y comencé a extraer ideas. Finalmente me centre en las
palabras: desarrollar, software, equipo, valor de negocio, transparencia.
Entonces me gustaría compartir, lo que pienso, son algunos puntos a tener
en cuenta para el éxito en el Desarrollo de Software, más allá de la
tecnología empleada:
Visibilidad
Antes, estábamos acostumbrados a que ciertos mensajes, información o
puntos claves para el Desarrollo de Software, sean gestionados por algunas
personas con más años en la empresa, o responsabilidades diferentes a la
nuestra (ej: tareas a realizar, próximas funcionalidades del
proyecto/producto, estimaciones de las mismas, fechas de entregas,
inconvenientes o atrasos, reuniones de definición con el o los interesados
del producto, etc).
Tal vez alguno de los puntos mencionados, está bien que sea gestionado
por las personas cuya responsabilidad la contempla, pero No está bien y
está más que demostrado, que el No dar participación y/o transparencia
2. frente a éstos y otros puntos durante el proceso de Desarrollo de Software,
pueden acarrear lo siguiente:
Falta de motivación por parte de los involucrados en el desarrollo.
Problemas que existen hoy en un proyecto se terminen convirtiendo en
crónicos, y hasta parte de la cultura organizacional.
Mala interpretación de los mensajes enviados por el cliente, y por tal
motivo entrega de valor insuficiente o no deseado, aumento de re-
trabajo, etc.
Equivocarse lo más temprano
Es mejor descubrir que, lo que estamos desarrollando o lo que el cliente
solicitó no es lo que esperaba, en etapas lo más tempranas posibles.
Algunas veces solemos caer en el vicio de realizar muchos supuestos, ya
sea a través de documentaciones, dibujos, prototipos, etc; los cuales en su
mayoría, buscan predecir requisitos o próximos escenarios y, por más
ilustrativos que sean, terminan siendo estáticos, alejados de la realidad o
débiles para dar/tener la certeza de que realmente eso es lo que se
necesita o lo mejor para nuestro cliente.
Aquí aparece la necesidad de:
Realizar entregas rápidas, para un
feedback temprano.
Evitar suposiciones.
Inspección/adaptación.
El Equipo
Respecto a qué es un equipo, características y sus objetivos, podremos
encontrar cientos de artículos en la web, por eso me quiero centrar en lo
que en mi corta experiencia y en conocidos casos de éxitos demuestran ser
necesarios, para lograr una mejor sinergia en un equipo de trabajo y estar
más cerca de arribar a los objetivos:
Respeto: evitemos caer en entornos de gestión clásicos, donde
superiores establecen quiénes son las personas que definen, dirigen,
planifican y dictan las tareas a hacer y las asigna, y aprendamos a
3. valorar, escuchar y respetar a las personas que forman el equipo de
trabajo, ellos mejor que nadie podrán explicar qué tareas podrán
asumir y cómo lo podrán realizar, ofrecer sugerencias para mejorar y
hasta inclusive crear los mejores diseños y productos. Pero como todo
es un proceso evolutivo, donde tanto los superiores/líderes de
proyectos, como cada miembro del equipo de trabajo, tendrá que ir
madurándolo.
Compromiso: entender que no es suficiente estar involucrado, sino ir
más allá y estar dispuesto a comprometerse con un objetivo común.
Enfoque: poner foco en todos tus esfuerzos y habilidades para
trabajar en el compromiso asumido. Todo aquello que esté fuera de lo
comprometido a realizar, no debes preocuparte, alguien lo hará por ti o
lo tendrás que postergar. Esto último, de no ser así, tendrás la
responsabilidad de levantar la bandera a tiempo y buscar
redimensionar entre todos los interesados el alcance comprometido.
Coraje: un Equipo debe tener el valor para comprometerse, actuar y
ser honesto. Puesto que para llevar adelante nuestras
responsabilidades, se requiere de coraje para comunicar problemas,
identificar impedimentos, pedir, recibir y dar ayuda.
Auto-organizados: es la característica de un Equipo responsable de
dirigir y organizarse para alcanzar sus objetivos, comparte
colectivamente la responsabilidad de los resultados, y también es
capaz de controlarse y adaptarse para mejorar su propio desempeño.
4. Entregar valor
Esta es una frase que se lee y suena linda, sencilla… pero es algo difícil de
lograr y mucho más cuando se encaran proyectos con un enfoque
tradicional o predictivo, donde con tal de cumplir todo lo dicho, supuestos y
esbozado en el GANTT, se centran en un estricto control, en vez de
canalizar esos esfuerzos en adaptarse e ir transitando el camino del
proyecto enfocados en dar lo que más agregue valor a nuestros clientes.
Para este caso, siempre me viene a la cabeza la regla del 80/20 formulado
por Alan Lakelin, el cual se basó en los estudios de Pareto. Aplicado al
Desarrollo de Software, y en este caso a la entrega de valor, nos dice que:
“Del total de las características de un producto ó funcionalidades
solicitadas, existirá un 80% que No serán utilizadas o relevantes
(‘muchos triviales’), y existe un 20% que son el propósito del
desarrollo (‘pocos vitales’)”.
Entonces, es aquí donde la mejor estrategia empleada en la búsqueda de
este 20%, será la clave en el éxito de un proyecto, la más rentable y sobre
todo, a la larga, la más buscada por los clientes (les doy una pista:
metodologías ágiles).
Desechar los desperdicios
Muchas veces, suele ocurrir que venimos haciendo cosas de una forma porque es
parte de la cultura del entorno donde trabajamos o según dicen los libros,
5. etc. Pero si estamos pensando en entregar el máximo de valor a nuestros
Clientes, entonces tenemos que pensar primero qué cosas agregan valor a nuestro
proceso de trabajo, y aquello que insume un esfuerzo y No lo
agrega: Eliminemoslo o busquemos reducirlo lo más que se pueda. Por ejemplo:
Reuniones innecesarias, o reuniones necesarias, pero que se van de tiempo
más de la cuenta, ya sea por no tener un objetivo claro o no se encuentran
las personas adecuadas en la misma, no se comunicó puntos que se iban a
tratar, etc.
Funcionalidades o porciones de código que escapan al objetivo del requisito, o
que no estaban dentro de lo pactado, etc.
Tiempos de espera (o cuellos de botella), que identificamos en nuestro
proceso, ya sea por una comunicación poco efectiva o burocracia
(micromanagement), etc.
Aclaración: esta “limpieza” es recomendable hacerla de una manera
iterativa, y nos podemos ayudar de la técnica Value Stream Mapping.
Tomar las decisiones lo más tarde posible
Este tema va de la mano con el famoso “Cono de Incertidumbre”, lo cual
nos dice que tomar una decisión en etapas tempranas, con pocos datos,
basadas en suposiciones ó escenarios inciertos, puede que tenga un costo
de 4x o 0,25x, donde ‘x’ es el valor del costo que tiene la decisión que
tome.
Por lo general, en el Desarrollo de Software, solemos hacerlo al principio de
los proyectos o cuando asumimos fechas de compromisos con antelación
sin tener demasiados datos.
6. Entonces, evitemos tomar
decisiones o avanzar en
alguna tarea, cuando tengo
un escenario como el que se
mencionó anteriormente, y
busquemos retrasar lo más
que se puedan las mismas,
hasta tener mayor precisión.
Mejora Continua
Bueno, para ir finalizando, y no porque lo deje para el final a este tema
tiene menor importancia, sino todo lo contrario: la Mejora Continua (o
Kaizen), es una de las herramientas o estrategias que más me gustan y nos
ayudan para lograr prácticamente cualquier cosa, y no hablo sólo de la vida
laboral, sino también en lo personal.
A pesar que todo funcione bien, que lleguemos a nuestras metas, siempre
tenemos cosas por seguir mejorando, tanto individuales, como grupales,
por eso es importante darnos un tiempo de reflexión. Una de las maneras
que mejor se adecua en la Empresa, son las Retrospectivas. Las mismas,
son aplicadas en cada uno de los proyectos, como así también a nivel
general, donde todos podemos expresarnos y escucharnos qué cosas
venimos haciendo bien o nos gustaron en el mes, o aquellas que
deberíamos mejorar.
Es increíble cómo se aprende y cómo se crece rápidamente gracias
a este espacio que tendrá su costo en tiempo, pero una ganancia
multiplicadora al finalizar la reunión.
7. A pesar del contexto, del costo que implica salir de cierto “estado de
confort”, motivo por el cual no siempre, las cosas pueden ser aplicadas a
raja tabla, o sea, como lo dicen los libros o este post inclusive; Estoy
convencido que enfocándonos en ir consiguiendo de a poco estos puntos,
las cosas van a tender a un estado mejor y así lograr llegar a buen puerto.
Exitos!
Referencias:
http://agilemanifesto.org/
http://www.wikipedia.org/
http://www.proyectosagiles.org/skills-equipo-agil