Consejos y notas de un maestro de la programación

Una de las grandes ventajas de trabajar en Velneo es conversar y asistir a múltiples presentaciones del creador de la herramienta Velneo V7, Juan Muñoz Cobos.

Espero que algún día nos deleite con una presentación sobre todos estos temas y sobre su visión de la programación

Por lo pronto me permito transcribir aquí aunque sea burdamente algunas de los topics que el habitualmente comenta

¿Qué es la programación? Entre otras muchas cosas, el arte de prever

La potencia de un buen programa, dependerá de la abstracción hayamos conseguido.

¿Que es la abstracción?

Para entender lo que es la abstracción, nada más fácil que pensar en una mesa. Nos dicen la palabra mesa y entendemos , para qué es, cómo se utiliza y todo lo que representa.

Aunque nos podamos imaginar miles de modelos, con 4 patas o con una, simples o barrocas, todos entendemos lo que es y para que sirve una mesa.

Si conseguimos abstraer un problema o una situación habremos conseguido un solución realmente funcional, que sirva para muchos propósitos, sin olvidar el principal.

Esta es la gran labor, antes de empezar a programar, la abstracción.

Puestos a imaginar y esto es cosecha mía, imaginemos los problemas que se le plantearon al creador de la Hoja de Calculo, antes de que esta existiera, la solución sin duda fue genial, la Hoja de calculo fue una abstracción a múltiples problemas comunes.

De la misma manera y esto es comentario mio no de su creador, el propio Velneo es una maravillosa abstracción para un problema, la realización de software de gestión.

Aunque habra que dejar para otro momento el paradigma de Velneo y cómo el ser humano y cualquier programa maneja los flujos de información y lo cual no se descubre hasta meses después de programar en Velneo y que explica la productividad y versatilidad de la que disftutamos desde el primer día, toda esa versatilidad, toda esa sensacion “Life is soft” está sin duda en esa abstracción

Juan nos comenta siempre , si consigues una buena abstracción tu mismo te sorprenderá las variantes y posibilidades que posteriormente aparecerán y que solucionará aún no estando planteados en el inicio, pese a que seas un artista a la hora de prever, por que tu análisis nunca lo contemplará todo.

Efecto Kiwi

Esto es un símil que utiliza Juan muchas veces y desde hace muchos años para hacer hincapié en la abstracción. El Kiwi es una fruta ,y por lo menos para los Europeos u Americanos, de aparición bastante reciente.

Todos nosotros desde pequeños, sabemos lo que es una fruta, para que sirve, como usarla, etc.

Pero lo que de verdad nos da pistas sobre el poder de la abstracción es pensar en que alguien que jamas haya visto un Kiwi, bastará con decirle tres palabras “Es una Fruta” para que lo aproveche y lo use en su plenitud.

Este debe ser el ideal de cualquier componente, cualquier funcionalidad que rodee nuestros desarrollos, a nivel de programadores o de usuarios, es un objetivo a seguir que siempre debe estar en nuestros pensamientos: la abstracción.

Efecto Airbag

Imaginemos que hablamos de coches, y de una persona a la que se le encarga diseñar un coche hace 50 años, pero tiene la gran ventaja de hacer un viaje al futuro. En ese tiempo se dedica a probar todo tipo de coches nuevos, pensando que en su regreso al pasado, podrá crear el mejor coche del mercado.

Casualmente tiene en una de estas pruebas un accidente, el airbag se abre y queda tan embelesado por ese prodigio y por haber salvado su vida , que en su vuelta al pasado se dedica a crear Airbag con ruedas en lugar de coches.

Este es un error en el que caemos con demasiada frecuencia.

¿Cómo funciona y cómo parece que funciona?

Muchas veces la informática y la programación es Magia. Las cosas no son lo que son y por tanto la solución no es lo que parece.

La programación tiene siempre dos componentes a tener muy en cuenta

  • El componente imaginativo
  • El componente implementativo

y en nuestro análisis es conveniente diferenciar muy claramente ambas fases.

Pues a veces la solución muchas esta muy alejada de la lógica inicial, lo que parece que hace puede ser muy distinto de lo que realmente nuestro programa hace.

¿Un Ejemplo ?

Evidentemente en estos caso lo mejor es ir a algo gráfico, aunque a nivel de gestión encontraríamos cientos de ejemplos pero menos visuales.

Cómo se arrastra una ventana.

    ¿Estamos arrastrando algo, estamos moviendo la ventana de sitio?

    Realmente nada de eso, se trata de un simple Borra-Pinta-Borra-Pinta

En el software estamos rodeados de estos efectos,realmente simples con resultados espectaculares.

Pensemos por ejemplo en los interfaces de última generación para móviles , donde parece que los objetos vengan de fuera de la pantalla, ¿O realmente vienen de allí?
Aquí me es imposible pero viendo un ejemplo de una novedad de V7 mi percepción es que muy probablemente y de forma paradójica, lo que parece un efecto es una consecuencia de como realmente funcionan y que en este caso les ha venido muy bien

La solución no es el Problema

¿Cuantas veces se os a presentado el caso de un cliente, que de forma absurda os intentaba explicar cual era la solución a un problema que tenía con vuestro programa?

Necesito que me pongas un nuevo campo para….

Seguro que muchas, y seguro que os ha hecho perder mucho tiempo.

Dime el problema no la solución, esto es lo que procede decirle y lo que Juan siempre nos pide a todos los que colaboramos con el de una u otra manera

Hay que aprender y pedir que te cuenten el problema, no la solución.

Y educar a otros y a nosotros mismos , para que nos limitemos a contar lo que le sucede y contarlo tal cual.

Ganaréis y ganaremos mucho tiempo y dinero.

Efecto Platos Sucios

Siempre empezamos por lo que nos pide el cuerpo y normalmente es un error. No hay que empezar por lo que nos pide el cuerpo y si por entender perfectamente lo que estamos haciendo..

Simplificando mucho pondremos un ejemplo, si pensamos en utilización de Arrays y en programación a bajo nivel, siempre tendemos a empezar a ocupar las primeras posiciones parea empezar a rellenar cuando debería ser justo al contrario, puesto que el array partirá de una posición en memoria y a partir de ahí empieza a crecer.

Si hacemos un símil con una pila de platos limpios (Libres) y sucios (Ocupados) en lugar del array, ponemos los platos sucios abajo a medida que los utilizamos y los limpios arriba. Esto nos obliga cada vez que limpiamos un plato a levantar todos los de arriba, sacar el sucio que queremos limpiar y volver a bajar el resto posiciones.

Creo que no hay que seguir el ejemplo y es suficiente para imaginarnos el trabajo innecesario que puede generar una mala decisión o la más fácil, la que nos pide el cuerpo en un primer momento.

Y esta afectará a nuestro software durante toda su vida.

Rectificar el Rumbo, es lo Natural

Ante un cambio de rumbo no hay que alarmarse. Aunque nuestras decisiones siempre se rijan como debe ser por el principio de “Lo que hago debe ser para siempre” no debe implicar que no podamos cambiar.

Si hablamos de navegación una desviación de 1 grado a los 100 metros es inapreciable pero a 100 kilometros es muy grande.

Una cosa es rectificar el rumbo y otra dar bandazos

Y si queréis descubrir una maravilla de la abstracción, que mejor que conocer Velneo

Anuncios

Acerca de Miguel Pérez Oliver
Un abuelo en esto del negocio del software, habiendo recorrido en estos 30 años de todo : Programador, analista, consultor, implantador y ahora en el lado oscuro. Coordinador del departamento comercial en Velneo y viajero.

One Response to Consejos y notas de un maestro de la programación

  1. Jesús Arboleya says:

    Enhorabuena Miguel. Este magnífico post es una estupenda recopila de axiomas de nuestro querido Juan Muñoz-Cobos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: