El Manifiesto Ágil – Individuos e interacciones

people add value to organization
Estándar

Llevo un buen tiempo intententando interiorizar los principios del Agilismo a nivel personal. Sin embargo es un camino que no termina, dado que plantea la mejora continua por tiempo indefinido. Asi que esto se parece mucho a querer ser buen cristiano o taoista. Digo esto porque la mayoría de los que estan metidos en este rollo, probablemente les diran que Agile no es algo que se puede tomar como un discurso bonito para los clientes, es algo que se tiene que practicar y vivir como forma de trabajo al menos. Hasta el nievel personal ya es un poco complejo pasar el manifiesto a la práctica. Pero no acaba ahí, porque cuando ya interiorizaste el agilismo te toca ponerlo en práctica, se debe colaborar con otras personas responsables o involucradas en los negocios con los que tenemos que trabajar. Esto me recuerda una de mis películas favoritas sobre cambios de paradigmas.

The_Matrix_396

 

Ese sistema es nuestro enemigo. Pero cuando entras ¿a tu alrededor qué ves? Hombres de negocios, profesores, abogados, carpinteros. Son las mentes de los mismos que intentamos salvar. Pero hasta que no lo hagamos, siguen formando parte de ese Sistema y eso hace que sean nuestros enemigos. Tienes que entender que la mayoría de ellos no están preparados para ser desenchufados. Y muchos están tan habituados y dependen tan absolutamente del Sistema, que lucharían para protegerlo. – Morfeo, The Matrix

Como dice la abuela

Si yo quiero amar al prójimo; pero es el prójimo el que no se deja querer – la abuela

Siempre que dice eso me causa gracia, pero al mismo tiempo me parece algo tan cierto que no alcanzo a reírme de esta frase. Un aspecto compleja cuando intentamos valorar “individuos y su interacción, por encima de los procesos y las herramientas”, es que al tiempo que intentas hacer esto son las personas mismas en las que encontraras mayor oposición. El habito y la resistencia al cambio crean cierta suspicacia cuando te desvías de los esquemas a los que las personas se han adaptado.
Mi perro Bistek en su casaEsto me recuerda la experiencia que tuve hace ya un buen tiempo cuando adopte a mi segunda mascota (Bistek). Al principio era muy desconfiado, solia temerme mucho sin razón aparente, y tenia comportamientos que me parecieron muy extraños. Rehuia los gestos de afecto, al parece porque estaba acotumbrado a ser maltratado. Tambien marcaba todos los requicios de la casa, hasta que que gradualmente parecio entender que no tenia sentido porque no habia ningun otro queriendo reclamar ese espacio. Tampoco resulto fácil que se adaptara a la comida, los baños más o menos frecuentes, los regaños ocasionales por haber tirado la basura y varias otras cosas como el cariño y el compañerismo y sentido de pertenencia a la familia.

 

La puesta en práctica de las maximas, como las del Agilismo, no suele resultar simple. No podemos esperar ni a nivel personal, ni organizacional, que por el hecho de enunciarlas se realicen de forma instantanea. Esto puede resultar frustante cuando iniciamos en este camino; pero no debemos dejar que esto nos impida continuar o nos desvie. Se requiere tiempo, esfuerzo y una gran tenacidad el cambiar a los individuos y sus relaciones.
Los mismo pasa con los procesos, cuando se acostumbra hacer las cosas de una determinada forma, si la necesidad de adaptación no surge, la costumbre se vuelve ley. Lo mismo pasa con las herramientas que un día sirvieron para potenciar la priductividad y el orden, si estas no estan alineadas con las necesidades del colectivo al que prestan servicios. Las herramientas se convierten en un lastre, cadenas que más que potenciar el avance nos estancan y atan. Despues de un tiempo entendi que esto se debe a una perdida de los objetivos fundamentales, porque dejamos de interiorizar las razones por las que se hacen las cosas. Empezamos a pensar más en el zapato, que en el caminiar o el lugar donde se quiere llegar. Reemplazamos el fin por el medio que se utiliza en el orden de importancia.
Cuando les hablo acerca de CRM la mayoria de las personas donde trabajo, suelen pensar en la herramienta específica que usan o alguna otra herramienta alternativa, pero muy pocos suelen pensar en lo que realmente implica la Gestión de Relaciones con el Cliente. Suele pasar lo mismo sin importar si se habla de CRM, ERP, Correo, Contabilidad, etc.

Si te enfocas en el problema, no puedes ver la solución. – Arthur Mendelson en Patch Adams

Esta frase del personaje Arthur Mendelson en la película “Patch Adams” es justamente esto que suele pasar con las herramientas y procesos. Cuando como reza el dicho popular colocamos “Los caballos detrás de la carreta”. Como vamos a encontrar una solución cuando lo que pensamos que era el problema esta herrado. Esto es algo que ahora que soy padre me resulta sorprendente, porque los niños tiene una gran capacidad para encontrar soluciones a problemas en los que parecen no estar enfocados. Es más frecuente que un niño tengas esos “momento de iluminación” cuando ha descubierto algo, que el que un adulto los tenga. Acá nuevamente los esquemas ya formados de los que incluso formamos parte suelen jugar en nuestra contra.

 

Otra gran habilidad que tiene los niños es la de observar e imitar. A diferencia de los pequeños, a los adultos con frecuencia queremos “reinventar la rueda”. Hay ocasiones en que por el contrario el niño aprende que algo no resulta bien de una forma y busca una nueva manera para hacerlo y tener éxito. En las empresas eso se traduce en la búsqueda continua de la mejora de los procesos, el uso de las herramientas adecuadas y el adecuado uso de las herramientas que dan soporte a esos procesos, acompañando esto de una cultura organizacional que respalde los planes estratégicos.
Albert Einstein

 

Si buscas resultados distintos, no hagas siempre lo mismo. – Albert Einstein

La adaptación es esencial para sobrevivir en un medio que cambia tan rápido (el mundo moderno), si no queremos quedarnos como el hamster dando vueltas en nuestra caminadora sin ir a ningún lugar será mejor que comencemos de una vez a entender y poner en práctica lo que otros nos han legado con su experiencia. Les dejo un enlace al Manifiesto Ágil y las máximas fundamentales que estaremos analizando un poco en el futuro.


 

Manifiesto por el Desarrollo Ágil de Software

Estamos descubriendo formas mejores de desarrollar
software tanto por nuestra propia experiencia como
ayudando a terceros. A través de este trabajo hemos
aprendido a valorar:

Individuos e interacciones sobre procesos y herramientas
Software funcionando sobre documentación extensiva
Colaboración con el cliente sobre negociación contractual
Respuesta ante el cambio sobre seguir un plan

Esto es, aunque valoramos los elementos de la derecha,
valoramos más los de la izquierda.

 

VIM – Personalización y Adiciones

Vim Cheat Sheet.
Estándar

VIM Logo

Después de cierto tiempo usando VIM como mi editor de texto me ha parecido conveniente crear un artículo para aquellos que estén dispuestos a experimentar un poco con este editor. Y para otros con recursos limitados en una máquina en que el usar nuestro IDE favorito puede resultar tedioso o bien solo les interesa aprender al usar VIM, este artículo puede resultarles de interés.

El gran potencial de vim reside en la posibilidad de extender su funcionalidad o bien el uso correcto de las funcionalidades que ya integra. Para cada tipo de necesidad existe una funcionalidad o un complemento que puede satisfacerla. Así pues, podemos pasar de nuestro aburrido y simple editor a un IDE bastante completo que trabaja en la linea de comandos.

Veremos como pasar de un uso simple del este potente editor, a uno que integra características de un IDE, como explorador de archivos, explorador de código, listado de archivos recientes, múltiples pestañas, resultados de búsqueda, linea de comandos integrada, temas de colores, reconocimiento de sintaxis, auto-completado, división de espacio de la ventana y más.

Funcionalidad Integrada

VIM - Navigation

Aunque en las versiones que he conocido VIM cuenta con opciones para integración con el ratón, este es un editor en que suele usarse el teclado como principal o único medio de entrada. Así que la mayoría de la información que encuentren estará orientada al uso del teclado, esto lo hace que si pretendemos usarlo como IDE veremos que tendremos que deberemos acostumbrarnos un poco más al uso del teclado.

Vim es un editor modal, lo que significa que se puede trabajar en diferentes modos para realizar una tarea determinada. Para ver en qué modo se encuentra Vim se debe de tener activada la opción showmode. Pueden obtener más información acerca de los modos y algunas características leyendo la Wiki – Vim (http://es.wikipedia.org/wiki/Vim).

La verdad es que no hay mejor manera de iniciar que experimentar nosotros mismos con el editor así que les dejare algunos enlaces donde podrán encontrar información para su iniciación con vim.

VIM - Referecia rápida

Vim, el editor de texto (http://tuxfiles.wordpress.com/2012/01/17/vim-el-editor-de-texto/) es un post para que inicien con el manejo elemental del editor. Acá se muestran algunos de las operaciones elementales, como navegar (h,j,k,l), insertar (i), reemplazar (r), borrar (d,dd), copiar (y,yy), agregar nuevas linea antes (o, O) y después de la posición actual, búsqueda y reemplazo dentro de un archivo.

Notaran que algunos de los comandos tienen versiones cortas que pueden usarse con una linea mediante la repetició del comando (yy, dd, cc) por ejemplo copiar borrar y cortar.

Graphical vi-vim Cheat Sheet and Tutorial (http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html) acá encontraran una guía visual de iniciación con vim las imágenes suelen ayudar mucho.

VIm - Referencia rápida

Finalmente esta guía de referencia rápida que pueden imprimir les sera de mucha utilidad mientras memorizan los comandos básicos. Todo está bien explicado, es una guía de referencia muy clara. Una vez dominado lo elemental pueden tener la sensación de que ya están quedando algo limitados pero verán que este editor tiene aun mucho que ofrecerles.

Yo siento cada vez más que este editor tiene una o varias soluciones a las necesidades que se me presentan en el camino, algunas de las cosas que verán adelante las he descubierto por mi cuenta, otras por lo que me preguntan algunos compañeros que quieren iniciar con vim, cosas que luego termino usando. Lejos de pretender ser una extensa guía quiero que se animen a continuar descubriendo su potencial por cuenta propia.

Es molesto tener que abrir múltiples ventanas de la terminal para editar múltiples archivos a la vez, pueden hacer esto con vim usando tabs. Con el siguiente comando pueden abrir múltiples archivos en pestañas separadas.

vim -p file1 file2 file3

Una ves dentro del editor, descubrirán la forma de listar, navegar, mover y buscar una pestaña en particular.

tabs, tabedit, tabnew, tabm, tablist

moverse entre pestañas puede parecerles un misterio pero pueden usar tabfirst, tablast, tabnext, tabprevious en modo comandos para ir a la primer, ultima, siguiente y anteriores pestañas. También pueden usar las combinaciones gt, gT, gt + tab_number  para ir a la siguiente y anterior o bien una pestaña especifica.

Luego de las pestañas podemos aprender a dividir la ventana actual en múltiples partes de forma vertical u horizontal, esto puede resultar de utilidad si contamos con espacio suficiente y queremos inspeccionar múltiples archivos o el mismo archivo en diferentes puntos. Por acá les dejo un enlace a un artículo muy bueno que trata de ello. <a href="http://technotales.wordpress.com/2010/04/29/vim-splits-a-guide-to-doing-exactly-what-you-want/“>Vim Splits: A Guide to Doing Exactly What You Want

La búsqueda a través de múltiples archivos es algo que es frecuente realizar en proyectos con un numero considerable de archivos fuente. Podemos hacer esto con los comandos vimgrep y cw combinados.

:vimgrep /busqueda/j ./directorio/**/*.tipoarchivo | cw

esto realiza una búsqueda en todos los archivos de un tipo dado dentro de un directorio específico y muestra los resultados en un split en la parte inferior pueden obtener mas información sobre estos comandos usado la ayuda del VIM seguramente encontraran muchas opciones útiles.

Extensiones útiles

Ademas de la funcionalidad integrada VIM dispone de una gran cantidad de extensiones útiles de las que podemos hacer uso para facilitar nuestro trabajo. Hablaremos de algunas cosas que todos debemos tener a mano un explorador de archivos, explorador de etiquetas, lista de tareas historial de archivos recientes, entre otros.

Most Recently Used (MRU) files: esta extensión permite llevar un historial de los archivos accedidos que se despliega en una ventana temporal y nos permite desplegar el archivo seleccionado en la ventana actual, una pestaña o división nueva. Es posible personalizar la longitud de la lista, el tipo de archivos a incluir o excluir, el cierre automático del la ventana auxiliar y otras.

Tag List: este complemento permite explorar de forma eficiente el código fuente de archivos de diferentes lenguajes de programación. En el manual de este complemento <a href="http://vim-taglist.sourceforge.net/manual.html“>Tag List Manual seguramente encontraran muchas opciones para personalizarlo a su gusto.

NERDTree and tabs: <a href="https://github.com/scrooloose/nerdtree/blob/master/doc/NERD_tree.txt“>NERD tree permite explorar el sistema de archivos, el cual se muestra en forma de un árbol, y abrir archivos o directorios por medio del teclado o ratón, además permitir realizar acciones básicas sobre el sistema de archivos. <a href="https://github.com/jistr/vim-nerdtree-tabs“>NERD Tree Tabs permite convertir el explorador de archivos en un verdadero panel independiente de la pestaña y mantener sincronizado el árbol a través de las pestañas.

VIM as IDE

Existen muchos otros complementos para completado, GIT, terminal, libro de notas, gestión de sesiones, comentarios. Con algo de curiosidad y un archivo .vimrc pueden ir “enchulando” su VIM y convertirlo en un verdadero IDE con una ligereza sin igual.

Un toque personal

Ahora nos falta darle un toque personal a nuestro editor con algunos temas de colores, es posible crear sus propios esquemas de colores. Pero para aquellos que nos hemos aventurado en ello no tendremos que crear uno, podemos elegir entre los muchos esquemas disponibles.


Ya sea de la pagina oficial de VIM ORG

<a href="http://www.vim.org/scripts/script_search_results.php?&amp;script_type=color%20scheme&amp;order_by=rating&amp;show_me=20&amp;result_ptr=0“>vim.org

O bien desde este repositorio en que pueden encontrar muchos esquemas de colores.

Vim colorschemes

Espero que este post les sea de utilidad y los insto a utilizar VIM como su editor e IDE, y que “sean uno con su código”.

UWE el camino a la orientacion a objetos en la web

Estándar

UML-Based Web Engineering (UWE) es una conjunto de herramientas para modelar aplicaciones web. UWE incluye una expansión del lenguaje UML y nuevos diagramas para modelar algunos aspectos específicos del las aplicaciones web. Integra conceptos de UML y la metodología OOHDM(Modelo de Diseño Hipermedia Orientado a Objetos). Me ha parecido interesante abordar este modelo como una herramienta de gran utilidad dado que esta basada en UML y además cuenta con todo el poder expresivo necesario para el desarrollo de aplicaciones web.La mayoría de los que nos dedicamos a desarrollo web hemos sentido que las herramientas y el uml convencional quedaba cortos de expresividad ante conceptos que necesitábamos representar y debíamos recurrir a otras herramientas para modelar el comportamiento de nuestras aplicaciones web, si es que realizábamos algún tipo de modelado.Para los que hayan trabajado anteriormente con la metodología OOHDM trabajar con UWE les resultara alga muy familiar porque muchos de los conceptos son análogos. En la página que tiene el enlace a UWE (http://uwe.pst.ifi.lmu.de/teachingTutorialSpanish.html), encontraran mucho material para estudiar, varios tutoriales, la especificación del modelo que es una extensión del UML y muchos artículos y publicaciones de expertos que ayudan ha entender como se relacionan los modelos de UWE y sus diagramas con los diagramas ya conocidos de UML.

En el ambito del desarrollo web no es usual modelar mucho las aplicaciones. Quizá es una de las razones por las que que los desarrollos se tornan mas complejos de lo pensado. La mayoría de los proyectos complejos ya sean estos basados en web o de otro tipo, el cliente espera ver resultados rápidamente, de modo que se suele desestimar la importancia del buen análisis y modelado. Esta es una muy mala práctica, tomando en cuenta que muchas de la aplicaciones que se desarrollan hoy día y que interactuan en la red son sistemas de complejidad media o alta con la salvedad que opera sobre una plataforma web.

La utilización de UWE en nuestros proyectos, no solo forma parte de las buenas practicas de desarrollo. También provee la documentación necesaria para dar soporte a las aplicaciones desarrolladas y facilita la implementación de las soluciones desarrolladas. UWE nos permite crear un modelo conceptual con todo el poder expresivo de UML, un modelo de navegación claro y un modelo abstracto de la interfaz de usuario.

Se podrían señalar muchas razones para que el uso de herramientas de representación adecuadas dos de ellas sin embargo pueden ser significativas a mediano plazo. 1) Los lenguajes de programación web estan evolucionando hacia la orientación a objetos, los lenguajes más utilizados PHP y ASP ya estan en ese camino, otros como Java, Python y C# son ya orientados a objetos. 2) Las aplicaciones, programas y servicios están cada ves mas integradas o encaminadas a la web. Pese a esto muchos programadores, desarrolladores y analistas aun no actualizan sus “cajas de herramientas”. Esta tendencia ponte frente a nosotros la necesidad de utilizar las herramientas de que disponemos para construir aplicaciones web con calidad.