lunes, 7 de julio de 2008

Mapas mentales.

Y ¿que esperabas?, ¿Qué en google earth apareciera un letrerote diciéndote donde esta el muelle de San Blas?
Conejo Mendoza.

Recuerdo una ocasión que íbamos a una fiesta de quince años de una prima. Íbamos tarde y para acabar con la paciencia de mi padre, un señor puntual y estrictamente correcto, no llevábamos ningún mapa y nadie conocía donde seria este evento social. Mi madre en ese momento dijo “ese tiene cara de gorrón, síganlo”. Efectivamente era un gorrón que iba al mismo evento social. Llegamos sin la ayuda de ningún mapa.

Este caso fue un golpe de suerte (o de instinto de gorron, tal vez), el que nos permitió llegar a la fiesta, no tan tarde y sin dar tantas vueltas.

Mapas mentales.

En muchas ocasiones no puedes recurrir a la suerte, ¿a que me refiero? Tu no puedes llegar con un cliente o con tu jefe a decirle que es lo que vas a hacer, sin tener una idea clara de que es lo que vas a realizar.

Un mapa es un documento que representa de manera grafica un area real o imaginaria. Veo a un mapa como una receta escrita de diferente manera, un tanto más grafica y más entendible, la cual nos permite llegar a nuestro objetivo de la manera más rápida y fácil.

¿Qué pasa entonces cuando quiero hacer una representación grafica de una serie de ideas? Pareciera que no es tarea para representar en un mapa. Pero lo es.

Mapa mental o conceptual es una técnica usada para la representación gráfica del conocimiento . Un mapa conceptual es una red de conceptos. En la red, los nodos representan los conceptos, y los enlaces las relaciones entre los conceptos en forma de flechas etiquetadas.

Cuando hay que ordenar una serie de ideas que tenemos en la cabeza, lo mejor que podemos hacer es dibujar estas ideas. Cuando eramos niños, nos gustaba dibujar, ya fuera una pared, un papel, un cuaderno, o hasta el mejor abrigo de papa. Es algo que todos aprendimos (bien o mal) cuando eramos niños.

El concepto de los mapas mentales, nace en la época de los romanos, en donde se pueden encontrar diagramas sobre temas en los que se plasmaban ideas filosóficas.

No es sino hasta alrededor de 1960 que el Dr. Allan Collins desarrolla un estudio sobre los mapas mentales, sobre como funcionaba el cerebro humano al crear ideas y como el uso de herramientas graficas podía ayudar a unir la parte grafica del cerebro con la parte lógica logrando así una mejor retención.[ref]

Creando un mapa mental.

En un mapa mental, se trata de representar una idea principal, ideas secundarias y como estas se conectan, facilitando asi el proceso creativo. La idea principal, como su nombre lo indica, es la que regira toda la idea, por ejemplo: Evitar la contaminación. Esta es una idea principal la cual nos da ideas sobre como lograr este objetivo. Esta idea, genera mas ideas, claro esta, ideas que apoyen o refuercen el argumento principal.


Fig. 2. Idea principal.

Una idea secundaria puede tener diferentes ramificaciones y estas a su vez pueden tener ramificaciones. Un ejemplo de ideas secundarias pueden ser: “Reducir Contaminantes” u otra pudiera ser “Reciclando para evitar desperdicios” Estas pueden tener miles de ramificaciones hasta que no exista ya ninguna idea subsecuente.


Fig. 3. Idea principal e ideas secundarias.


Este proceso nos sirve, ya que no se descarta ninguna idea y todo queda en un grafico que puede ser fácilmente entendido después.


Fig. 4. Ejemplo de mapa mental con iconografia de apoyo.

Mapas mentales en el desarrollo.

Los mapas mentales son una herramienta para generar ideas, ordenar ideas y nos sirve también para representar el verdadero despapaye que pasa en nuestra cabeza.

El desarrollo no solo es nuestro despapaye, por lo general es un proceso colaborativo el cual es un despapaye de 3, 5, incluso equipos de 40 o 50 personas. Un diagrama que nos ayude a poner en claro nuestras ideas es de mucha ayuda.

Generalmente este tipo de diagramas en el desarrollo son utilizados cuando se esta generando una idea, es decir, en la primera etapa del proyecto, cuando estamos recabando información sobre que se quiere hacer, que tareas se deben de tomar en cuenta o incluso para mostrar a tu cliente que es lo que se esta planteado hacer, o viceversa, cuando un cliente quiere explicarte que es lo que se necesita.

Pongamos el ejemplo para desarrollar un Portal de automóviles (mmm, algo trillado).

Nuestra idea principal: Automóviles.

A esta idea habrá que agregarle ideas de lo que puede hacer nuestro portal de automóviles:

Venta de automóviles.
Venta de seguros para automóviles.
Información de automóviles.

Y a cada una de estas ideas se le agregan ideas e ideas e ideas. Resultando algo asi:


Fig. 4. Ejemplo de mapa mental de portal de autos.

Un mapa mental no es muy útil cuando se quiere utilizar para modelar objetos, algoritmos, bases de datos etc. Para estos es mejor utilizar los modelos ya conocidos. Hay que recordar que cada uno de los diferentes estilos de diagramación son aptos para lo que fueron creados, no debemos de inventar ni mezclar estilos de diagramacion, ya que estan pensados con fines completamente diferentes.

Conclusión.

Si tienes un desorden de ideas en tu cabeza y quieres ordenarlas para hacer algo claro: usa un mapa mental, te ayudara en el proceso creativo, no en el tecnico.

miércoles, 2 de julio de 2008

Bug tracking.

Antes que otra cosa he de afirmar que Errar es de humanos, y desde que el hombre es racional, por ahí del 12.000 antes de cristo, el humano se ha equivocado tantas veces, que hemos aprendido hasta hace poco que estos errores nos pueden ayudar a evolucionar. De esto se trata este tema, de evolucionar.

Cuando estas en esto del desarrollo comienzas a darte cuenta de cuales son las cosas por las que te gusta y las que no te gusta pasar. En mi caso, siendo una persona un poquito ordenada (poquito en realidad), me gusta llegar temprano a mi trabajo, salirme a mi hora y que me dejen tomarme mi café a media mañana. Dentro de las que no me gustan están que me asignen mas trabajo del que puedo hacer (un mal de la clase proletariada), que me digan que ‘necesito dar mas’ (refiriendose a que quieren que me quede mas tiempo de a gratis sin pagarme horas extras) o que me digan ‘eso no esta funcionando como debe y ya se lo habia comentado a sutanito’, bien, a este ultimo ‘esto no esta funcionando’ se le llama Bug o error informatico, y al hecho que se lo hayan dicho a sutanito (quien por cierto no tiene nada que ver con el desarrollo del sistema) se le llama falla de comunicación (mas adelante explico como resolver esto).

Bugs

Es un rollo esto de los errores informáticos (o bugs) y es un tema tan largo, pero tan interesante que pudiera hacer un ensayo sobre los errores informáticos, la historia de los errores, los más famosos, los más costosos, los mas chistosos, etc. Lo voy a resumir un tanto:
“Un bug o error informático es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador o computadora (software). Dicho fallo puede presentarse en cualquiera de las etapas del ciclo de vida del software aunque los más evidentes se dan en la etapa de desarrollo y programación”

Foto del origen de la leyenda acerca del primer "bug" informático conocido
Foto del origen de la leyenda acerca del primer "bug" informático conocido


Entonces bien, El parrafo anterior (tomado de
güikipedia) nos dice que un error no es más que una falla o falta de orden a la hora de estar desarrollando un programa. ¿Por qué cometemos estos errores? Puede ser una larga lista, por lo general se incluyen:

- Falta de comunicación.
- Descuido de parte del desarrollador.
- Falta de claridad en la funcionalidad de algo.
- Falta de información de objetivos.
- Carga de trabajo

No podemos hacer nada para evitarlos, vamos a cometer tantos errores, como humanamente posible podamos. El como evitarlos, es harina de otro costal, y como diria la abuela chole: “esa, es otra historia”. Lo que si podemos hacer, es aprender de ellos y mantener una estabilidad de nuestros sistemas.

Bugtracking.

Dicese de hacer un sistema en una base de datos, en donde se puedan registrar, revisar, reportear, o analizar bugs (o errores informaticos) lo que permita hacer un mantenimiento ordenado a un sistema. La güikipedia lo define asi:

“Un sistema de seguimiento de errores es una aplicación informática diseñada para asistir a los programadores y otras personas involucradas en el desarrollo y uso de sistemas informáticos en el seguimiento de los defectos de software”

Estoy actualmente en un equipo de desarrollo el cual estoy conformando (por cierto, si sabes programar en php y eres jalisquillo, contactame) y una de las herramientas que creo que nos pudiera facilitar la vida es un sistema bug tracking, para darle un poco de mas orden a este frankenstein y por lo menos tener un conocimiento claro de que es lo que se esta haciendo y como se está haciendo.

Un buen sistema de tracking de bugs deberia arrojar, minimo la siguiente información:
- Fecha reportada
- Severidad
- Comportamiento incorrecto
- Detalles de como reproducirlo
- Persona que lo dio de alta
- Quien le da seguimiento.

Con estos dato pudieramos tener un minimo de información con lo que pudieramos resolver un error, ya que nos ayudaria al menos a identificarlo (nota: muchas veces el problema es identificar el error, pero no quiere decir que el error sea facil de corregir)

¿Por qué es importante?

Una vez en un banner de una pagina de Internet lei: “Knowdelege is power, want more power?”. No recuerdo que vendian, pero lo que me quedo claro y por siempre grabado es que el conocimiento es poder.

Si tu tienes la información de por que estan sucediendo los errores, puedes tomar decisiones de manera mas acertada.

Por ejemplo, hablemos de un desarrollador a y uno b, el desarrollador a escribe 500 lineas de codigo, en las cuales hace 10 funciones. De esas 500 lines de codigo, tiene alrededor de 10 bugs reportados. 500 / 10 = 50. De una manera muy burda pudieramos decir que programador a tiene una efectividad de 50. Programador B programa menos, digamos 100 lineas pero de esas 100, solo tiene 1 error, digamos que tiene efectividad de 100. Con lo cual pudieramos pedirle a programador A que ponga mas atención. Obviamente este ejemplo es muy burdo y no toma en cuenta otros factores como complejidad de la programación, complejidad de funciones, etc. Pero este dato ya nos pudiera hacer pensar en revisar mas el codigo de A, etc.

En conclusión, mientras el hombre siga programando, va a seguir habiendo errores de programación, lo que uno tiene que buscar es en identificar el por que, lo que nos ayudaria bastante a mejorar.

Espero que este articulo les sea de interes, y de algo les sirva.

Les paso unas urls de sistemas que permiten hacer esto. Obvio después veran el xc bug tracking system.

Saludos!

La primera!

Bueno, este flamante, radiante y nuevecito blog que comienza su servidor, lo hago con mucho entusiasmo. La verdad que me tarde con esto del blog, ¿Por qué? No lo sé en realidad. Creo que fueron muchos factores, el cambio de trabajo el cargador de la lap, la falta de administración del tiempo, en fin. Pero estoy comenzando a hacer varios avances en cuanto a eso.

A este blog le puse dsrollo, por que se trata de ese rollo del desarrollo. Soy un egresado de la licenciatura de Sistemas de información y me encuentro trabajando en ese rollo del desarrollo web. Siempre me ha gustado el Internet y le veo un amplísimo potencial, desde una pagina informativa sobre algún tema, hasta un portal de publicidad de autos seminuevos.

Comienzo a entender que es lo que me gusta hacer y que es lo que no me gusta hacer. Esto después de haber tomado experiencia en varios ambitos y habiendo forjado una experiencia mas o menos considerable.

Bueno, este es un pequeño editorial a este blog el cual espero de dejar algo para un pobre tipo como yo que no tenga ni la más mínima idea de que es este rollo y que aprenda por mis errores.