¿Cuándo dejas de programar?

Errores en software= (más código)^2

En reuniones de producto siento la cantidad de tareas urgentes e importantes que debemos desarrollar. Programadores, comerciales, soporte, clientes, el mercado y mis propias ideas me presionan para programar nueva funcionalidad.

Un bebe crece rápido y luego se estabiliza, en el software nunca ocurre. En Visualtrans llevamos 16 años y seguimos desarrollando como el primer día, en Velneo llevamos 10 años y la lista de TO-DO nunca baja, en Visualbeo los productos tienen 16 años y no paran de engordar.

Siempre tenemos listas de tareas a realizar, por la mañana piensas en todo lo que tienes que hacer hoy, si no hay nada, te lo inventas, hacer, hacer y hacer.

post it face

¿Cómo parar de engordar?

La naturaleza es sabia, como tres veces al día, mi cuerpo integra una parte, el resto lo expulsa, además hago deporte para estar en forma y mantener mi salud.

En el software deberíamos hacer lo mismo, dedicarle tiempo analizar que cosas podemos dejar de hacer, que partes del software ya no tienen sentido, que debemos expulsar, eliminar, …

.

Sesiones para “Dejar de hacer”

Hace unos meses nos reunimos el equipo en el vCenter y planificamos una sesión de trabajo para “Dejar de hacer”. Me frustré porque siempre hay personas en el equipo que encuentran razones para seguir manteniendo funcionalidad y servicios. Dejar de hacer es tan duro como salir todos los días a correr, lo más fácil es quedarte en el sofá de casa. Siempre encuentras una disculpa.

Antes de hacer algo nuevo, deja de hacer

TODO, checklist, agenda de tareas,.. existen cientos de software para gestionar todas las tareas que debemos hacer hoy, por mi parte me he creado un lista de STOP-DOING, actividades, eventos, tareas que puedo dejar de hacer. Cuando me proponen asistir a una nueva reunión, evento, lo primero que pienso es ¿Qué voy a dejar de hacer? Si no encuentro nada entonces digo NO.

Anuncios

Desarrollo de software iterativo e incremental

El desarrollo de software es espiral

Hace 12 años estaba en una conferencia de software libre, en ella varios filósofos hablaban en una mesa redonda sobre el desarrollo de software y su semejanza con la vida, varios afirmaban que la vida sigue patrones circulares, las modas, las cosas pasan y vuelven a pasar, volvemos a vestir cosas que se llevaban hace 10 años, etc… En ese debate una anciana levantó la mano y dijo la vida no es circular sigue un patrón de espiral, las cosas se repiten pero no son iguales, evolucionan.

desarrollo de software iterativo

APRENDE: Todo desarrollo de software empieza y acaba con un aprendizaje. En la vida observas, trabajas y aprendes, antes de empezar a desarrollar tienes que aprender de lo que hiciste en la última iteración. En nuestro caso lo primero que hacemos  cuando analizamos el resultado de una iteración de software es resumir los principales aprendizajes de la iteración, proyectos que funcionaron, otros que fallaron, unos que se cumplieron, otro no que no, siempre pasan cosas durante una iteración de las que debes aprender antes de ponerte con la siguiente. Este momento de reflexión antes de ponerse de nuevo a trabajar es básico porque marcará la diferencia de aplicar los aprendizajes al siguiente ciclo. Estamos tan ocupados programando que nos olvidamos de parar y aprender, esto produce que repitamos una y otra vez los mismos errores.

.

DESARROLLA: Esto es lo que sabemos hacer bien, lo que consideran los programadores su trabajo, meter líneas de código, hacer novedades, desarrollar funcionalidad. Hacer, hacer, hacer…. en esta fase siempre nos olvidamos, que quitar cosas, asentar, quitar bugs, hacerlo más estable, de más calidad es parte del desarrollo. Normalmente los clientes no valoran cuando tu código está más limpio, tiene menos bugs, va más rápido o es más estable. Aunque no es un parte valorada desde el exterior es un parte básica de la cuenta de resultados de los próximos 10 años. Un software estable y robusto quita trabajo a todos los departamentos de la empresa (soporte, consultoría, instaladores, comerciales, etc…). 

.

MIDE: El gran olvidado del desarrollo de software, ¿medir? qué tengo que medir?, desarrollamos funcionales que no se usan, otras que no se venden, otras que no gustan a los clientes, etc… y nunca nos paramos a medirlas. Antes de empezar a desarrollar una funcionalidad lo primero que debemos hacer es pensar ¿Cuál es el objetivo cuantitativo? ¿Qué pretendo conseguir? ¿Para qué lo hago?, cuando acabes evalúa y aquí enlazas con la primera fase, de esas mediciones extraes los primeros aprendizajes y todo empieza de nuevo.

¿Cómo crear programas?

Hace 15 años cuando empecé en esto de crear software lo primero que hacía era abrir el editor de Velneo y trataba de hacer el interface, curiosamente ahora es lo último.

.

1.-Analizar al usuario que utilizará mi software.

Cada usuario es un mundo, sus necesidades, habilidades, capacidades y deseos son diferentes. Antes de empezar a diseñar tu software piensa en el usuario final, el programa tiene que funcionar para él y no para tí. Los desarrolladores pensamos que  los usuarios son iguales que nosotros y después nos extraña que nuestro software no acaba de funcionar. No pienses en tí, piensa en tu usuario.

.

2.-Analizar al flujo de información.

Piensa en como la información se convierte en tablas, como se relaciona, como los datos fluirán por tu aplicación y como se convertirán en información. Coge una pizarra, diseña las principales tablas, campos y enlaces entre ellas. Pinta el flujo de información.

.

3.- Abre el vdevelop de Velneo y crea tu Proyecto de datos

No tienes que pensar, solo tienes que transcribir lo que ya tienes diseñado en la pizarra. En esta parte no tienes que andar con inventos, simplemente crear las tablas-relaciones que has diseñado y pensado previamente. Un aspecto importante es que le pongas iconos, colores y tamaños adecuados a tus esquemas. El esquema es la estructura básica de tu programa, son los cimientos de una casa, trátalo con mimo, diseño y delicadeza.

.

4.- Prueba tus tablas, índices, relaciones con el vDataClient

Normalmente como programadores nos gusta ponernos con el interface, con botones, rejillas y formularios, esta fase se trata de todo lo contrario, no abras los objetos, utiliza el Velneo vDataClient para probar bien todos los cimientos de tu aplicación, sin diseñar un sólo formulario. Esta parte es básica si tu aplicación funciona bien con el vDataclient, ya tienes mucho ganado, tu casa tiene unos buenos cimientos.

El vDataclient me permite probar toda la casa sin necesidad de levantar una sola pared, es un adelanto para el desarrollo de aplicaciones.

.

5.- Diseña el interfaz de la aplicación.

Ahora ya puedes ponerle la guinda a la aplicación, no olvides que esta es la parte más importante para las personas que usarán tu software. Los programadores nos gusta empezar por el interfaz pero eso es como empezar una casa por el tejado. Dedícale tiempo al interfaz pero sólo cuando los pilares de tu aplicación sean estables.

.

.

.

.

.

Subscribe