Category Archives: Buenas prácticas

Aprendiendo a aprender.

Como parte del mundo de las TI, ninguno de nosotros se salva de estar aprendiendo cosas día a día, por el contrario la mayoría, si no es que todos, disfrutamos de llenar nuestro pensamiento de nuevas ideas y conocimientos. Sin embargo hay ocasiones en las que aprender se vuelve una necesidad ya que cada proyecto al que entramos pude incluir nuevas tecnologías y es necesario aprender a usarlas.

Este Post está enfocado en presentar algunas de las muchas formas de aprender de forma más ágil y práctica, todo lo nuevo que la vida nos da.

Primero mencionemos 3 fases por las que pasa la información para ser aprendida:

  • Recepción de la información. Esto se refiere al momento en que nuestro cerebro capta todos los datos que tenemos frente a nosotros.
  • Clasificación de la información. Una vez que todo un bloque de datos entra en nuestro cerebro, este es clasificado de acuerdo a su contexto.
  • Uso de la información. Una vez que tenemos los datos en nuestro registro (memoria), el acceso a ellos es más sencillo mientras más referencias tengamos, es decir mientras más recuerdos estén ligados a cierto dato, como nombres, lugares, personas, experiencias, etc.

De acuerdo a lo anterior, será más fácil recordar y usar cierta información, conforme la vayamos relacionando con más datos y recuerdos, sean del mismo contexto o de otro, por eso mientras más usamos la información, es más fácil recordarla.

Gracias a nuestra experiencia, cada uno de nosotros tiene modelos de aprendizaje propios que nos han permitido lograr el conocimiento que vive en nosotros. Entre los que yo he tenido la oportunidad de ocupar puedo mencionar:

  • Aprender por Memoria Fotográfica. Hay gente que es capaz de retener la información que lee o el contenido de las imagenes que ven con solo dar un simple vistazo.
  • Aprender por Repetición. La mayoría de nosotros usamos este modelo pues para quedarnos con el conocimiento, requerimos revisarlo más de una vez, pues a pesar de que pueden ser cosas sencillas, generalmente son MUCHAS cosas sencillas al mismo tiempo ( lo digo por todos los PDF´s que me toco leer recientemente).
  • Aprender Escribiendo o dibujando. Esto es una variante del aprendizaje por repetición, sin embargo tiene un mayor impacto, pues no solo vemos el texto o las imagenes, además recreamos el contenido y queda el recuerdo de cuantas palabras escribimos, que palabra iba primero, como las agrupamos,  que diagrama hicimos, etc. Podemos incluir aquí la creacion de los famosos Mapas Conceptuales.
  • Aprender Practicando. Este es el modelo que, en lo personal, deberíamos aplicar al menos una vez antes de cada proyecto, pues nos permite interactuar con los ambientes, ver ejemplos prácticos de cómo usar la nueva información y donde se aplica.
  • Aprender por Relación de información. En nuestra área de trabajo, muchos conocimientos pueden estar presentes en distintas tecnologías pero siempre usan las mismas bases, por ello cuando conocemos previamente la teoría de cómo funciona un elemento, al encontrarlo aplicado en nuevos productos o lenguajes, nos es más rápido aprenderlo. Como ejemplo de esto, si ustedes han ocupado las ventanitas de Windows, han jugado con la seguridad de Linux/Unix, han ocupado objetos y herencia en Java, han usado versionadores como SVN, tienen un pie dentro de una gran Tecnología como es Documentum (Tecnología de gran funcionalidad y fuerte uso en estos días).

La mayoría de estos modelos sirven por si solos, pero es la fusión de ellos lo que da un mayor impulso al aprendizaje de nuevas tecnologías, ideologías, datos curiosos y todo tipo de información, no solo de TI, si no en cualquier ámbito de nuestra vida.

Estos modelos han estado presentes en mi experiencia personal pero existen muchos más.
Y tu amigo lector ¿Has ocupado algunos de ellos?, ¿Nos puedes enriquecer con algunos otros?

Te invito a que compartas tus experiencias en el uso de modelos de aprendizaje y dejo la carta abierta para que comentes los que aquí se mencionan.

Hasta pronto!!

La utopía de la relación consultoría-cliente

El amor del cliente hacia el proyecto, una utopía cuando se trata de consultorías pequeñas o freelancers. La honestidad y la pasión por el proyecto fluyendo en ambos sentidos: del cliente hacia el proveedor de servicios y viceversa, utopía que es el día a día de cualquier profesional de TI. Pero, ¿cómo lograr que no sea sólo un sueño y se traduzca en mejores condiciones de trabajo para las consultorías pequeñas?. Confianza.

Los clientes que trabajan con proveedores de servicios tienden a confiar en aquellas agencias de renombre, con una marca bien posicionada. Las consultorías pequeñas no siempre inspiran esa confianza, lo que significa que esta debe ser construida, alimentada y nunca darse por sentada. Pero, ¿qué herramientas tenemos las empresas pequeñas para ganarnos esa confianza del cliente y llevar una mejor relación en los proyectos?

Ganar-ganar significa que las soluciones que le damos al cliente resuelven sus problemas y nosotros recibimos a cambio la satisfacción de haber cumplido en tiempo y forma con lo requerido. El cliente debería responder a tus ideas con respeto, poniendo su confianza en aquellas propuestas con las que no está totalmente identificado y dejando de lado sus propios planteamientos de los que inconscientemente sabe que no tendrán mucho éxito. De la misma manera deberíamos mostrar la confianza y respeto por las ideas del cliente y dejar de lado algunas otras para darle paso a conceptos frescos surgidos de esta relación. Con estos primeros pasos aseguramos que se creará la mejor plataforma para el éxito del proyecto.

Aunque hay algunos esfuerzos que necesitamos hacer para mantener esta plataforma estable y evitar la frustración y decadencia características de los proyectos mexicanos.

La manera en la que los equipos de la consultoría y el ciente trabajan, es un punto crítico. Primero que nada, debemos ser aquello que queremos que el cliente sea, es decir, si queremos que sean honestos con nosotros, entonces debemos ser honestos también. Si queremos que muestren interés en el proyecto, entonces tengamos pasión al realizar nuestro trabajo. Probablemente, al principio no detecten este entusiasmo, pero tarde o temprano lo harán y esto servirá para reforzar las relaciones de trabajo. Cuando las cosas no vayan bien, se tengan muchos issues en el sistema o simplemente la relación vaya en decadencia, debemos asegurar que el cliente se enfoque en los usuarios y los problemas de negocio más que en las deficiencias detectadas, siendo siempre nosotros los catalizadores para resolver dichos problemas. Discutir la resolución de problemas en un ambiente controlado y con pruebas, es la mejor manera de retirar los prejuicios que el cliente se haya hecho de nosotros.

Implementar metodologías para investigación de clientes y pruebas con usuarios es una buena idea para llevar un proyecto. Algunas de estas dinámicas pueden ser: focus groups, entrevistas, encuestas, prototipos, pruebas de usabilidad, etc. Todos estos procedimientos arrojan información invaluable al inicio de un proyecto pues permiten focalizar los esfuerzos y no trabajar a ciegas sin saber que tipo de usuarios estarán interactuando con el sistema. Inclusive se pueden generar estrategias que permitan convencer al cliente de usarlas pues sabremos con certeza el éxito que tendrán al ser implementadas. Aquí el punto interesante será el compromiso por parte del cliente de destinar cierto presupuesto a la implementación de estos procedimientos, o bien, por salud propia, definir un estándar en todos nuestros proyectos para asignar recursos humanos, económicos y materiales a esas tareas que se traducirán en mejores resultados en los proyectos y muy probablemente en nuevos contratos. Finalmente será un gasto mucho menor que perder tiempo y dinero en la corrección de problemas posteriores.

Existe una teoría de la usabilidad llamada aesthetic usability effect o efecto de la usabilidad estética, esta teoría básicamente dice que aunque un producto sea muy dificil de usar, si es atractivo visualmente, inspirará la confianza necesaria en el usuario a nivel de generar cierta tolerancia a fallos, crear una idea de que la curva de aprendizaje será menor y por lo tanto que el esfuerzo que hará para poder usar el sistema será mínimo. Entonces, entre más atractiva sea una liberación, un prototipo e inclusive una presentación ejecutiva, mejor será el resultado y la probabilidad de que nuestras propuestas sean aceptadas. El punto es, mantener al cliente siempre interesado en nuestras propuestas, en las presentaciones, liberaciones o pruebas, no darle oportunidad de hacer decaer la curva de interés y no detenernos hasta que hayamos impreso en su subconsciente nuestro objetivo.

Mantener a los clientes a bordo con nuestras recomendaciones y propuestas no sólo se traduce en mejor productividad también implica éxito de los proyectos en los que participemos.

No nos casemos con un lenguaje, una metodología, un administrador de contenidos o una plataforma de desarrollo, la tecnología y las mentes de las sociedades evolucionan muy rápido, enfrentemos los retos con apertura e ideas creativas e innovadoras para crecer como profesionales.

¡Nos leemos en el próximo!

Reuniones de trabajo efectivas.

Un ejecutivo pasa alrededor de 60 a 70% de su tiempo en reuniones o juntas de trabajo; desafortunadamente,  la gran mayoría de ellas no llega al resultado esperado.

Seguramente has asistido a reuniones que cumplen con alguna o todas  las siguientes características:

  1. Requieren más de una hora en tu traslado, pero solo de  5 ó 10 minutos para agotar el tema a ser  tratado.
  2. No cuentan con la asistencia de los participantes clave, o bien, cuentan con la asistencia de “todos” los participantes, incluso aquellos que no deberían estar  en la reunión.
  3. No cuentan con una agenda, y por ende con un alcance acotado.
  4. No cuentan con material de apoyo para facilitar el seguimiento de la reunión.
  5. No cuentan con un moderador definido formalmente.
  6. No generan acuerdos o estos no se documentan.
  7. El resultado de la reunión es un sentido de frustración que se relaciona directamente con la idea de que tu tiempo pudo haber sido mucho mejor invertido en cualquier otra cosa.
  8. La reunión no fue preparada adecuadamente.

 

¿Qué podemos hacer para tratar de revertir ese mal sabor de boca?

Si organizas una reunión:

 

  1. Acota el objetivo de la reunión: Esto te permitirá seguir  fácilmente las siguientes recomendaciones, pero sobre todo ayudará a ser respetuoso con el tiempo de los demás. Trata de responder las siguientes preguntas (y no sigas hasta tener las respuestas): ¿Cuál es el objetivo de reunirnos? ¿Qué lista de temas trataremos? ¿Cuál es el tiempo estimado que llevará agotar todos los temas? ¿Es necesario una reunión presencial? ¿Podemos resolver los temas por teléfono, Skype, Gtalk o por e-mail?
  2. Traduce la lista de temas a ser tratados en una agenda: Deberás ordenar los temas según corresponda: por importancia, por dependencia, por disponibilidad de los participantes, etc. Será un buen momento para analizar  qué personas deberán estar presentes en la reunión.
  3. Trata de reducir la lista de participantes: No es una regla, pero en la actualidad no se concibe una reunión de trabajo de más de 2 horas y una asistencia de a lo más 5 participantes (identifica a los participantes clave).
  4. Valida la disponibilidad de un espacio para llevar acabo la reunión: Antes de realizar  la convocatoria  y/o confirmación de la reunión debes cerciorarte de que cuentas con un espacio preparado para: recibir  al número de asistentes, y sobre todo garantizar que cuentas con los implementos necesarios para dar seguimiento a la misma (pizarrón, plumines, proyector, etc.).
  5. Formaliza la convocatoria y/o confirmación de la reunión: Será necesario que incluyas como información básica: el objetivo de la reunión,  la agenda, la lista de participantes requeridos,  la fecha/hora de la reunión, y el tiempo estimado de vuelo (los asistentes lo agradecerán).
  6. Prepárate para la reunión: Pregúntate: ¿Es necesario contar con una presentación? ¿Necesitaré de documentos o información adicional en caso de que los asistentes realicen preguntas? ¿Conozco a los asistentes? Adicionalmente,  recomiendo  tener listo hojas  y plumas para que cada asistente pueda tomar notas.
  7. Durante la reunión: Toma el control, como organizador de la reunión  eres el principal actor y el encargado de que la misma se conduzca de una manera adecuada. Asigna a alguien de tu equipo como secretario, su función dentro de la reunión será el tomar notas de cada uno de los acuerdos con miras  a integrar la minuta de trabajo. Enfócate en el objetivo de la reunión, no es una regla, pero si se derivan temas independientes que requieran más de 30 min. agéndalos para una reunión diferente.
  8. Al finalizar la reunión: Sintetiza, es importante que todos los asistentes tengan en claro que compromisos se acordaron y quién es el responsable de darles seguimiento. Notifica el medio y fecha de la distribución de la minuta en su versión final. Agradece,  tú tiempo así como el de los demás participantes es valioso, da las gracias  por la asistencia y seriedad con que se realizó la reunión.
  9. Da seguimiento a los acuerdos: El mayor reto que tiene el concluir una reunión exitosa, es el comprobar que se siguen los acuerdos que se generaron en ella. Garantiza que se cumplen los acuerdos. Un apoyo a este sentido de responsabilidad puede ser contar con una copia de la minuta impresa y firmada por todos los asistentes.
  10. Analiza que se hizo bien y que hay que mejorar. Evalúate.

 

Si asistirás a una reunión:

 

  1. Prepárate para la reunión: Pregúntate: ¿Domino los temas a ser tratados en la reunión? ¿Necesito documentación y/o estudio adicional para potencializar mi participación en la reunión? ¿Necesitaré de documentos o información adicional en caso de que los  otros asistentes me realicen preguntas? ¿Conozco a los asistentes? ¿Es indispensable  llevar mi laptop?
  2. Respeta el tiempo de los demás: En la actualidad  y mayormente en esta ciudad, es complicado llegar a tiempo; más aún si no se toman las precauciones pertinentes. Trata de llegar por lo menos 15 min. antes de tu cita, eso hablará bien de ti.
  3. Olvida la memoria fotográfica: Acude a la reunión con hojas y pluma;  recuerda que no todos los organizadores de reuniones habrán leído este Post. Si bien al final de cada reunión “debería” haber una minuta, la realidad nos dice que en la mayoría de los casos no es así, y aunque así fuera, debes contar con mecanismos propios para validarla, para ratificar o desmentir el contenido; recuerda que firmarás  ese documento y que el mismo contiene tus compromisos para el proyecto, la empresa, los asistentes, el cliente, etc.
  4. Durante la reunión: Participa, valora  tu tiempo. El asistir  a una reunión implica que debes participar de ella, en caso contrario no tiene sentido tu asistencia.  Enfócate en el objetivo de la reunión, deja para el final los temas que no se relacionan con la agenda, en caso de ser necesario sugiere la calendarización de una nueva reunión. No uses Facebook, Gtalk, Skype, MSN, WhatsApp, OultLook, o cualquier otra aplicación que haga que pierdas la atención o proyecte desinterés (recuerda, nadie quiere trabajar con alguien que nos ignora).
  5. Al finalizar la reunión: Escucha, es importante que valides el contenido de la minuta contra las notas que tomaste.  Notifica al momento las diferencias o correcciones necesarias a la minuta.  Anota el medio y fecha de la distribución de la minuta final, exige tu copia.
  6. Da seguimiento a los acuerdos a que te comprometiste.
  7. Analiza que se hizo bien y que hay que mejorar. Evalúate.

 

Espero te sea de utilidad.

Pérdida y Recuperación de la Información

El manejo de los datos y de la información tanto de las empresas como de las personas ha llegado a un punto de valor muy importante en nuestros días y si se llega a perder ó hacer un mal manejo de ella, pueden llegar a producirse pérdidas económicas muy significativas, de acuerdo al ámbito laboral al que se pertenezca.

Como primer punto referente al manejo de información, se encuentra el respaldo de la misma, donde cabe destacar que algunas empresas e incluso las personas tienen diversas formas y métodos para realizarlo, ayudando así a la prevención de una pérdida de información inesperada de cualquier naturaleza, y con una consecuencia menos grave por la seguridad que les causa el respaldo.

Hay distintos dispositivos de almacenamiento para el respaldo de la información y su posterior recuperación en caso de pérdida, como los discos duros externos, memorias flash, CD’s, DVD’s, disco blue ray, SSD, unidades ZIP, etc., pueden hecerse copias completas, copias de seguridad solo del servidor o ambas, cada empresa decidirá lo que desea respaldar y de que forma.

En el mercado de la información hoy en día, existe también software de almacenamiento de información, como EMC que con la implementación de repositorios se puede administrar y almacenar de forma segura la información con menos riesgos de pérdida por que estará restringida para los usuarios con menos permisos otorgados, además ofrece también la integración de VMware.

En los casos anteriores, el respaldo de la información funciona cuando las empresas tienen políticas de seguridad y de respaldo de información bien definidas y establecidas haciendo de esto una medida de prevención formándolo parte de su cultura organizacional e incluso cuando capacitán a sus empleados para un manejo responsable de su información.

Desafortunadamente existe otro caso, y es cuando una persona o empleado de una empresa no alcanza a respaldar su información dado que las situaciones están fuera de su alcance como cuando su equipo de cómputo no enciende ó es robado, incluso cuando ocurre un fenómeno natural como un terremoto ó una falla eléctrica y no se estén tomando las medidas necesarias; desde un descuido al borrar un archivo sin saber a donde pertenece ó sin querer, hasta que simplemente el sistema operativo ya no reconoce o no abre los archivos negando el acceso a esa información, en éstos casos el daño de la información es lógico, y con algún programa de recuperación de datos es sumamente sencillo, pero el método para rescatar la información es más complejo.

El software para la recuperación de la información se encuentra en la red, siendo uno de ellos On-Site BackUp el más práctico, básicamente funciona haciendo un respaldo de información diariamente a cierta hora del día de acuerdo a las preferencias del usuario y de acuerdo a lo que desea respaldar y desde donde desea hacerlo. Simplemente es instalar la aplicación, que permitirá en la primera vez hacer una copia completa de los archivos en un equipo o dispositivo, para que posteriormente solo haga el respaldo de aquellos archivos que han sido modificados desde el último respaldo.

El link del software es el siguiente: http://www.on-site.com.mx/backup/empresa/software.php

Así como hay software, también hay empresas que se encargan de la recuperación de la información usando metodologías más complejas, manejando todo fácil de hacer pero elevando el costo de acuerdo a la información que se quiera recuperar y al dispositivo donde se encuentra la información, los precios que se manejan son elevados ya que la forma en que recupera la información es muy delicada, y si se desea recuperar más archivos de otros sectores en el dispositivo se eleva aún más dicho costo.

La recuperación es hecha por expertos en respaldo, seguridad y recuperación de información, garantizando la confidencialidad ante sus clientes y el buen manejo de la misma, además el lugar donde se realiza toda la operación de recuperación, está ambientado de tal forma que sea más exacta y sin menos riesgos de pérdida, todo va de acuerdo a lo que el cliente pida.

En conclusión, el respaldo de la información lleva a dos puntos muy importantes: la pérdida y la recuperación. Van de la mano por que son dependientes una de otra, siendo la información la parte más esencial en una empresa, y si esta se pierde o se hace un mal manejo de ella, las pérdidas pueden estar representadas de otra forma mucho más fuerte para las empresas.

Es necesario hacer conciencia del uso de la información que se encuentra bajo nuestra responsabilidad como consultores.

Código apestoso

El crear software, a mi muy humilde opinión, más que una profesión o un burdo oficio (para muchos), es un arte que requiere de toda la creatividad, dedicación y pasión necesarias ya que no es solo cuestión de cumplir con n requerimientos y que el programa “corra”, realmente hacer un buen programa requiere de un proceso mucho más complejo y parte de este complejo proceso es escribir código de calidad, pero ¿qué implica esto?

La calidad es un concepto tan abstracto que fue necesario crear una lista interminable de reglas y normas para poder “alcanzarla” pero todos sabemos que eso no es suficiente siempre existe una falla y la calidad se pierde un poco. En software es evidente que no es la excepción y averiguando un poco descubrí que en la programación orientada a objetos un par de muchachos: Kent Berck y Martin Fowler definieron un concepto muy ilustrativo para detectar problemas dentro del código: bad smells in code o malos olores en el código.

Este concepto se refiere a detectar algunos problemas como: tener muchos parámetros dentro de un método, o tener clases muy largas con muchas responsabilidades, o clases que dependen mucho una de la otra y así una lista un poco extensa de los muchos problemas que pueden encontrarse dentro del código de cualquier programador, por muy experto que este sea.

Pero  y ¿esto de qué nos sirve? Pues la respuesta más inmediata es: estos “olores” nos ayudan a detectar errores de forma (estilo o modo de escribir el código) en nuestras líneas de código y nos permiten optimizarlas para realmente tener un programa con cierta calidad.

Y ¿qué “olores“ se pueden encontrar? A continuación listaré una serie de “malos olores” y a qué se refiere cada uno.

Nombre ¿A qué se refiere?
Comentarios Se tiene un exceso de comentarios dentro del código. Los comentarios existentes contestan más a la pregunta ¿por qué lo hace? que la pregunta ¿qué hace?
Método largo Se tiene un método demasiado largo. Los método cortos son más fáciles de entender, de leer y de mantener.
Lista de parámetros muy larga Entre mayor sea el número de parámetros, mayor será la complejidad del método.
Código duplicado El código duplicado es la ruina del desarrollo de software. Hay que evitar esto a toda costa.
Explosión combinatoria Se tienen métodos que hacen casi lo mismo pero, el comportamiento de la información varía poco.
Clases largas Tal como los métodos muy largos, las clases muy largas son muy difíciles de mantener, de entender y de leer.
Tipo dentro del nombre Se tienen tipos de datos en los nombres de los métodos. Esto no sólo es redundante sino que obliga a cambiar el nombre del método si el tipo cambia.
Nombre poco comunicativo. ¿El nombre del método describe lo que este hace?
Nombres inconsistentes Si ya se ha elegido un estándar para asignar métodos, es necesario que este estándar se siga.
Código muerto Se tiene código que no se usa.
Especulación general Se tiene código que “resuelve” problemas del futuro pero no los presentes.
Solución excéntrica Se tienen varias soluciones para un mismo problema.
Campo temporal Se tiene un objeto con muchos campos innecesarios.

Bueno, lo más interesante de esto ¿cómo arreglar estos problemas? Pues para esto se usa una técnica llamada “refactorización” pero, este tema es un poco extenso así que lo dejaré para el próximo número. Espero que estos problemas sean mínimos en nuestros códigos.