lunes, 10 de septiembre de 2012

El desarrollo de software que defiendo.


Técnica y Gestión. Para mí la base de la construcción de software reside en estos dos conceptos. Aplícalos bien y obtendrás buenos resultados en tus proyectos. 

A todos nos gustan los detalles individuales, pero el desarrollo de software es un trabajo de equipo.¿Qué es la técnica? Analizar, diseñar, codificar, probar, integrar, conocer herramientas de desarrollo, conocer bien como funcionan los entornos de desarrollo...¿Y la gestión? Aquellos momentos de organización del trabajo en equipo que, de tenerlos te dan la ventaja. Esos momentos están ahí, pero tienes que creártelos. Para ellos tienes que dominar la técnica, la gestión de las personas, el proceso de desarrollo y conocer a tu cliente.  ¿Tantas cosas? Son un todo. En el fondo, una cosa lleva a la otra. Sumadas y bien aplicadas darán con el objetivo final: "Generar un flujo de trabajo constante" en el equipo de proyecto para construir un buen software que solucione los problemas del cliente. Para ello, el trabajo en equipo, mas que los nombres, es fundamental.

Dar continuidad al flujo de trabajo del equipo de proyecto es tarea de todos. Un ingeniero junior puede acudir a un líder técnico o a un arquitecto de software sin la necesidad de esperar al jefe de proyecto y así continuar con su tarea, para esto el proceso de desarrollo y los roles de las personas del equipo deben ser claros. Aplicar el concepto de Scrum es muy útil, dado que existen reuniones diarias de solo 15 minutos que ayudan a mantener flujo de trabajo estable en el equipo de proyecto.

Otro ejemplo para entender la importancia de mantener un flujo de trabajo constante, estamos en etapa de certificación de nuestro cliente y sabemos que dentro de muy poco tiempo, comenzarán a llegar los retornos del cliente, lo primero es crear una cuenta de correo común para todo el equipo de trabajo, a esta cuenta llegarán los retornos del cliente y no directamente al jefe de proyecto, esto lo hacemos con el fin de evitar provocar un cuello de botella y asegurarnos que los ingenieros de software comenzarán a resolver los problemas a la brevedad.


La gestión de personas es fundamental, es necesario conocer bien al equipo de proyecto, ¿que les gusta hacer?, ¿cuál es su visión del software?, ¿que opinan sobre tal tecnología?, etc. Esto es de suma importancia por que el software lo desarrollan las personas, hay que saber tratarlas y entenderlas para lograr generar una comunicación realmente efectiva y fluida. No sacamos nada con preguntar al ingeniero de software ¿cómo se encuentra? si no logro entender que su respuesta afectará directamente la planificación del proyecto.


Bueno y para finalizar debo dejar en claro que para escribir este artículo me base en una entrevista realizada a Johan Cruyff el año 2003 en La Vanguardia.

jueves, 16 de febrero de 2012

Gamestorming

Existen algunas metodologías que encuentro geniales, una de ellas es presentada en el libro Gamestorming que conocí gracias a mi amigo @lcruz, este presenta de forma fácil como usar los juegos para buscar la innovación. En el libro podemos ver, que los negocios estan construidos en base a objetivos y estos implican moverse desde un punto en A a uno en B (obvio).

El espacio entre estos puntos (A y B) se llama challange space. En los negocios siempre podemos definir claramente el punto B. No obstante cuando hablamos de innovación, no siempre es posible determinar el punto específico al que se puede llegar, un ejemplo claro es el viaje a la Luna. En este challange space las reglas aparecen a medida que el juego se desarrolla, el objetivo no está claro al principio, como ejemplo puedo decir que un día fui a buscar a mi hija al jardin y fue asombroso ver que jugaban a las escondidas de una forma totalmente nueva, inventaron ellos mismos sus reglas. En el libro se presenta que los objetivos de esta busqueda de ideas innovadoras son prometedores pero difusos y esta forma deactuar se parace mucho a la manera en como los niños inventan sus juegos.

En Gamestorming, los objetivos difusos deben ser:

1.- Emocionales, para motivar pasión y energia.

2.- Sensoriales, que se representan en dibujos o modelos fisicos.

3.- Progresivos, para ajustarlos en el proceso.

Es un excelente libro para entender el proceso de generación de ideas innovadoras. como dice @rpardo lleno de sabiduría, leánlo!

miércoles, 13 de febrero de 2008

Problemas del trabajo de los programadores de Software

Podemos decir que existen dos tipos de empresas en el desarrollo de software las de servicio y las de productos quiero referirme a las primeras:

Este tipo de empresas venden diseño, implementaciones, capacitacion, desarrollo de software a medida, pero en estas empresas el mayor problema es calidad del software, las lineas de codigo.

En esta naciente Industria, La Ingenieria del Software intenta ordenar el desarrollo de Software con metodologias que seguimos y practicamos, ¿son realmente efectivas?

Creo que no, por eso considero conveniente revisar la metodología de venta , construcción y mantención este tipo de empresas. En este articulo revisaremos la venta.

La Venta:

Por lo general es muy mala, el gran problema es que los "ejecutivos comerciales" por el simple echo de obtener beneficios económicos en el corto plazo juegan con las expectativas de los clientes, ofrecen software que no soluciona realmente el problema del cliente y comprometen a los desarrolladores muchas veces a cumplir plazos que son imposibles sin una capacitación adecuada (vende la última tecnología sin siquiera saber que implica, total somos expertos o somos los ingenieros). Si tan solo se sentaran a pensar si es necesario agregar un chat a ese sitio, tenemos las personas adecuadas para enfrentar el desarrollo Iphone o tengo la capacidad para realizar este proyecto, ahorraríamos muchos problemas a nuestros clientes. Bueno si derivamos esto llegamos a que la Empresa obliga a los "Ejecutivos Comerciales" a realizar este tipo de venta debido a su maquiavelico juego de las comisiones y además si sumamos la compleja tarea que significa mantener a un grupo de personas con un flujo constante de trabajo en un mercado cada día mas volátil , nos encontramos que en la practica vender de la forma tradicional, pudiese ser inviable. Entonces, ¿que estrategia deberiamos utilizar?. Creo que es conveniente volver en nuestros pasos y preguntarnos ¿por que deberían trabajar conmigo?, ¿que me hace diferente?, ¿realmente soy útil?, ¿por que hago este trabajo? (dejemos de lado la respuesta "Para Ganar Dinero") . Creo que si somos capaces de responder estas preguntas vamos a poder preparar una estrategia mas colaborativa con los clientes y menos dañina con mi equipo de trabajo y quien sabe hasta presindir de los ejecutivos comerciales.