¿Puede la metodología certificada asegurar la calidad?

No es un secreto para nadie que de un tiempo a la fecha, empresa de tecnología que se respete debe contar con una certificación que la acredite. Incluso empresas no dedicadas a la tecnología, certifican sus áreas de TI. Una vez obtenidas las certificaciones, se muestran con orgullo, exhibiendo el sello que distingue la certificación como medalla de guerra: en el portal web, en la papelería de la empresa, en la puerta o pared de la recepción, etc…


Con el fin de “generar un ecosistema“, los certificadores, hacen el lobi necesario para que todas las empresas, los gobiernos y posibles clientes de este ecosistema, exijan esta certificación en sus pliegos de licitación, requisitos de proveedores y planes de acción para mitigar riesgos. A mayor aceptación de esta certificación, más costoso es para el interesado en obtenerla. Sin embargo, cuando muchas empresas logran esta certificación, deja de ser importante y nace una nueva metodología que requiere ser certificada.



¿Que se certifica? En realidad esto es difuso en muchos casos, pero se supone que quien obtiene una certificación es porque un conjunto de personas son capaces de aplicar una metodología de forma rigurosa y disciplinada, siguiendo un conjunto de procesos y procedimientos diseñados para entregar productos de tecnología de alta calidad. Por ejemplo, la certificación CMMI, evalúa que el equipo de construcción de software de una empresa es capaz de seguir los procedimientos diseñados en cada uno de los capítulos, con el objetivo de generar software de alta calidad. Como esto es difícil, entonces se crean niveles de madurez, para poder demostrar un proceso de mejoramiento continuo. Esto es igual para otras metodologías.


En una reunión, con todos los protocolos y pedigrís del caso, en el punto de la agenda donde se presentaban los indicadores de gestión, propios de toda metodología, escuchamos por parte de nuestro cliente: “eso no sirve de nada. Lo único que quiero ver es una porción de código que funcione como debe“. Después de la reunión, algunos miembros del equipo criticaban con horror y con burla la frase, para mi fue una epifanía, bueno… por lo menos lo suficientemente revelador para escribir este post.


Lo cierto es que parece que olvidamos el sentido de todo esto, hacer código de calidad. De nada sirve llevar documentación, recolectar datos de proceso, crear bases de información, generar indicadores, crear planes de mejora, si al final del proceso no entregamos aplicaciones de calidad.


No quiero decir que las metodologías no sirvan de nada, creo que se deben llevar con pasión y convicción, para que al aplicarlas se logre la meta deseada. Cuenda se realizan de forma sosa y mecánica, simplemente se convierten en una tarea más, tediosa e improductiva que se debe llevar, una pesada carga que evita generar código de calidad. Pienso que se debe creer que sirven de algo y creer con fuerza.


Dios me perdone la comparación, pero hace poco durante la misa un cura nos preguntaba: “¿a que vienen? A ver un ritual y a sentirse horrorizados si el padre se equivoca o da un sermón malo. ¿A cronometrar el ritual y saber si la misa va a tiempo y en sincronía? O vienen por que tienen fe, creen que hay un Dios que les escucha y consuela“. Pues mi conclusión es que lo mismo debe pasar con las metodologías, si TODO el equipo de trabajo no entiende y no siente que ese proceso sirve para crear un producto de alta calidad, no se va a lograr el objetivo, solo será una piedra en el zapato.


Las metodologías no son el fin, son solo el medio para asegurar un proceso de alta calidad, pero si ustedes ven que no se logra esa calidad, desechen la metodología y concéntrense en la calidad, porque finalmente “la calidad debe ser un principio innegociable“.

Ingeniero de sistemas versión 1.0

Siempre he querido escribir este post, basado en el hecho que en varias ocasiones he hablado de este tema con diferentes auditorios, especialmente los estudiantes universitarios.


Voy a empezar con una historia de vida que me contó un taxista de Bogotá la semana pasada: El señor era editor de cine y televisión, allá por los años noventa. Era reconocido en su profesión y ayudó a producir más de 50 películas de nuestro cine nacional. Un día llegó el video digital, y el señor consideró que eso no era cine, así que nunca se preocupó por aprender sobre esta tecnología. Conclusión: veinte años después es taxista (sin demeritar), nunca más pudo ejercer la profesión que estudio y que tanto orgullo le da todavía.


La diferencia entre un editor de cine y un ingeniero de sistemas, es que no tenemos 20 años para reaccionar, en mi opinión personal, si cada 6 meses no estamos dispuestos a reaprender nuestras principales habilidades técnicas, un año después el costo de actualizarnos puede ser muy alto. Todos los días hay un avance, se mueven las tendencias y cambian los paradigmas de nuestra profesión. Sí esto es bueno o malo lo discutiremos en otro post.


Sin embargo, con preocupación descubro entre mis audiencias, compañeros y pupilos, que los profesionales que trabajan o quieren trabajar en tecnología, aunque son conscientes de esta realidad, simplemente no hacen nada… (tatatatannn …piano de terror).


Cuando pregunto cuantas personas están inscritos a una publicación técnica (revista, pasquín, sitio web, blog, etc…) no más del 10% levantan la mano, o dicen yo. Por favor, no tiene nada que ver con el costo. Mencionen una plataforma o tecnología y estoy seguro que encontraran una revista digital independiente gratuita, sin contar que todos los fabricantes (IBM®, Oracle®, Microsoft®) publican las suyas. La mayoría de voces autorizadas de nuestra industria tienen sus propios blog, y adicionalmente no falta quien los plagia… perdón, quienes los parodiamos o traducimos en nuestro propio idioma. Y ni que decir que compren un libro para leer. Hay ingenieros que no hacen lo mínimo, que es leer la sección de tecnología de los diarios locales, ni tan solo para enterarse de las tendencias de la industria.


Por otro lado, se encuentra uno con muchísimos profesionales que aprendieron y dominaron una tecnología y nunca más se esforzaron por actualizar ese conocimiento, ni siquiera en las siguientes versiones de esa misma tecnología, y es ahí donde se ven terribles implementaciones de las mismas. Por ejemplo, en el caso de mi dominio, el desarrollo de aplicaciones en el Microsoft .Net Framework®, se encuentran aplicaciones desarrolladas desde cero (no migraciones) con Framework versión 4.0 que todavía usan las mismas técnicas de la versión 1.1 o 2.0 (consumo de datos a través de dataset, servicios web con asp.net, falta de ejecución paralela, etc…), estamos hablando de conceptos que eran validos hace 9 años, pero ya no. Claramente, una persona que ha pasado 9 años sin actualizarse hace comentarios tan venidos a tono como, “ese Microsoft todos los días cambia las cosas y nada de lo que uno hace sirve ahora“. Pus claro, si no se siguen la evolución del producto con disciplina y no se entienden las razones por las que se introducen nuevas características, pues no se va a poder usar las nuevas versiones como es debido.


Colegas de oficio, como esto ya esta muy largo para ser un blog y suena a regaño, solo quiero insistir en el hecho que lo aprendido en la universidad (que de por si es muy, muy poco) no es suficiente. Mi opinión, y de ser bienvenido, mi concejo, es que debemos actualizarnos de forma continúa. Si de algo se trata la ingeniería de sistemas, es sobre el conocimiento ¿cómo podemos garantizar las soluciones que brindamos sí no lo poseemos? o por lo menos no lo actualizamos. No debemos ser ingenieros versión 1.0, es nuestra responsabilidad profesional, y diría que ética, actualizarnos continuamente para entregar una versión mejorada de nosotros mismos.

Reopening

Hola a todos, después de un largo receso voy a retomar mi blog. He estado un poco ocupado ajustándome a mi nuevo perfil profesional y uno de los grandes sacrificados fue este rinconcito de internet.


Para esta reinauguración, además de los post referentes a noticias y temas técnicos, quiero agregar un poco de opiniones y observaciones basadas en mi nuevo rol de arquitecto de software. Esto con el fin de imprimirle un toque de opinión personal.


Agradezco a todas las personas que me escribieron y siguieron visitándome, así no encontraran muchas cosas nuevas. Espero tener mucho contenido fresco basado en el hecho que este es un año lleno de estrenos y nuevas propuestas por parte de Microsoft®.

Resultados de la encuesta: “Temas que le gustaría recibir capacitación sobre productos o conceptos de Microsoft®”

El 10 de octubre con los compañeros del MCS Colombia, tomamos la decisión de correr una encuesta con el fin de determinar sobre qué temas les gustaría recibir capacitación en próximos eventos dictados en el seno de las comunidades técnicas o incluso aquellos organizados por Microsoft Colombia®. Quise compartir los resultados con ustedes, pues dan luces sobre las expectativas de los asistentes a charlas y eventos técnicos de nuestras latitudes latinoamericanas.


La encuesta.


Utilizamos el portal http://www.surveymonkey.com, no solo por lo gratuito, sino por tratarse de una herramienta muy completa para crear encuestas. Simplemente configuramos tres preguntas:


  1. ¿Cuál es tu área principal de relación con Microsoft(r)? (Usuario Final, Desarrollador e IT Y Plataforma)
  2. ¿Sobre qué tema le gustaría recibir capacitación sobre productos o conceptos de Microsoft(r)?
  3. ¿A qué nivel de profundidad te gustaría conocer de este tema? (Generalidades; Características detalles; Como se usa o se implementa; Una característica en profundidad).

Para la pregunta dos, debido a que se trataba de una respuesta de texto libre, al tabular la información, cree una columna de categoría, con el fin de clasificar los textos y obtener resultados sobre los cuales se puedan realizar análisis.


Adicionalmente, basado en las respuestas, agregué una clasificación para determinar si los participantes quería ver temas o productos actuales, o por lo contrario quería tener información de aplicaciones en estado beta o que no se habían lanzado todavía.


Desafortunadamente, la opción gratuita del portal, solo nos dejó consultar los primero cien (100) resultados (al día de hoy habían contestado 160 personas). Al analizar los resultados tomé la decisión de tabular aquellas personas que contestaron dos o más temas como una respuesta independiente, llegando a 137 respuestas.


La invitación fue abierta a los miembros de las comunidades técnicas o seguidores a través de Facebook o Twitter, incluso se puede constatar que participaron personas fuera de Colombia.


Los Resultados.


En general, todos los participantes contestaron juiciosamente la encuesta, no faltó el fanático que escribió “Me gusta recibir capacitación de como destruir Microsoft“, a lo cual aprovecho para responderle: Sigue los pasos de Steve Jobs!!! (… el que lo entendió, lo entendió…J).


Pregunta Uno.


A la primera pregunta los resultados fueron:


  • Desarrollador è 77%
  • IT y Plataforma è 18%
  • Usuario Final è 5%

Antes de lo importante, aclaro que el 5% no corresponde ni a nuestras madres, hermanas, novias, esposas, hijos, etc… Resulta obvio la falta de balance entre nuestras audiencias, tenemos muchos más desarrolladores. Sería interesante identificar las causas (no hay suficientes comunidades IT, no estamos identificando los miembros activos para ser parte de MCS, nos falta relacionamiento), para lograr que el mensaje llegue de forma equitativa, ya que los dos áreas se complementan y son necesarias.


Pregunta Tres.


Los resultados de la pregunta tres fueron:


  • Generalidades è 2%
  • Características detalles è 13%
  • Como se usa o se implementa è 47%
  • Una característica en profundidad è 38%

Este es un llamado al contenido de las charlas. Se concluye que la gente ya no quiere un contenido abarrotado de mucha información, ya no quieren el “Qué”, prefieren el “Cómo”, prefieren ver una charla que se centre en una sola característica y que al final puedan tomar el contenido de esa charla y aplicarlo a su trabajo diario. También considero que es un llamado a las demostraciones que hacemos: Es mejor hacer una demostración de un tema puntual donde podamos mostrar como lo hicimos, y no aquellas tipo mago, donde no podemos revelar nuestros secretos.


Pregunta Dos.


Deje para el final la pregunta dos, porque hice varios análisis y es donde está el meollo del asunto.


Antes de llegar a los fríos números, quiero decir que me llamo mucho la atención como la gente (23%) pide temas de base (lenguajes de programación, conceptos, mejores prácticas, metodologías, etc). Podríamos decir que no es parte del alcance, que es un problema de las universidades, pero finalmente si los profesionales que van a utilizar o implementar una solución a través de tecnologías, no tienen claras las bases teóricas o metodológicas que apalancan los productos, seguramente los resultados serán desastrosos. Deberíamos pensar en el seno de las comunidades como reforzar estos temas por el crecimiento profesional de los integrantes.


Información de temas futuros.


Al clasificar las respuestas por personas que quieren tener información de productos futuros se obtuvo:


  • Si (futuros) è 19%
  • No (prefiero actuales) è81%

Efectivamente como ya lo sospechábamos, la gente prefiere ver charlas sobre productos que actualmente está utilizando en sus organizaciones, sobre los cuales pueden poner en práctica los conocimientos adquiridos. Si se desglosa los resultados por tipo de relación (pregunta uno), los resultados no cambian, o sea que al 81% de los desarrolladores, o administradores de plataforma, prefieren ver temas actuales y no información del futuro.


Aquí también puede existir una oportunidad de mejoramiento para las personas que dictamos charlas o escribimos blogs. Muchas veces por hacer más, terminamos haciendo menos. Creemos que por siempre estar hablando de los productos futuros podemos demostrar nuestra experiencia y dominio en los temas, y resulta que estamos alejando a nuestras audiencias ya que ellos no sienten valor agregado en ese contenido futurista. Por ejemplo, 12 personas pidieron contenidos sobre Silverlight, pero solo 1 pidió información de Silverlight 5. Igual ocurre con SQL Server, solo 1 quiere ver información sobre la nueva versión.


Los cinco temas más solicitados.


A continuación, los temas más solicitados. Para esta clasificación tomé en cuenta el tipo de relación (pregunta uno), ya que el contenido del tema es diferente, y la clasificación que generé a partir de los textos escritos en las repuestas:


 




Para la gráfica de Usuario Final, la categoría “No” representan encuestados que no quieren conocer nada respecto a las plataformas de Microsoft®.


Buenos señores, eso es todo. Espero que la información recolectada sea de utilidad para ustedes y sus comunidades. La hoja de Excel con todos los datos, la pueden consultar a continuación.


Evento Virtual – Cloud Power 17 de Mayo

El 17 de mayo se realizará un nuevo evento virtual dirigido a todas las personas de habla hispana. El Evento Virtual – Cloud Power logró reunir expertos, herramientas, recursos y soluciones para todos los que quieren empezar a disfrutar de las ventajas de la Nube.

Yo los estaré acompañando en una charla sobre desarrollo de aplicaciones de negocio en Silverlight® 4.0. Se pueden inscribir aquí.

Silverlight – Cacharreando con Windows Phone 7® en un LG e900

Me prestaron por una semana un celular LG OPTIMUS7 E900 el cual trae instalado el nuevo sistema operativo Windows Phone 7® con el objetivo de cacharrear (experimentar sin ningún método científico) sobre el desarrollo de aplicaciones Silverlight para este nuevo sistema operativo.


Primero me gustaría dar mi opinión como usuario final y consumidor. Si lo compara contra cualquier móvil con Windows Mobile 6.5, la evolución es asombrosa, principalmente en el área de la usabilidad, donde uno encuentra una interfaz totalmente amigable y sobre todo fácil de aprender… intuitiva es la palabra que yo usuaria para calificarla. Adicionalmente el hardware de LG ayuda a lograr un buen desempeño y una experiencia fluida. Microsoft® logra reunir varias de sus plataforma dirigidas a consumidores (Bing, Messanger, xBox, Live, Office, etc…) en un único dispositivo, que no solo le permite mantenerse comunicado, sino distraerse durante esas horas de ocio y reuniones ladrilludas.


Como todas las plataformas de Microsoft®, existe todo un conjunto de herramientas que permiten desarrollar aplicaciones. En el caso de Windows Phone 7 (WP7) se pueden descargar de forma gratuita en el portal orientado a los desarrollares (http://create.msdn.com/en-US/). Con el fin de lograr la usabilidad y la riqueza en la experiencia del usuario final Microsoft® decidió como estrategia de desarrollo basarse en la plataforma de Silverlight™ y XNA™. Yo me puse como objetivo migrar una aplicación Silverlight existente para que funcionara sobre WP7.


Pros.


Lo más relevante es que para cualquier desarrollador que ya conozca cualquier plataforma XAML (WPF o Silverlight) la curva de aprendizaje es muy corta, más si se tiene alguna experiencia desarrollando aplicaciones sobre superficies Multitouch y entiende los conceptos respecto a la gesticulación con estas superficies.


Es evidente que es necesario hacer algunas adaptaciones a la capacidad de procesamiento del dispositivo, botones de control (los tres botones físicos que tiene el dispositivo) y el tamaño de la pantalla, pero…. si la aplicación de origen fue desarrollada bajo un patrón de diseño como MVVM y las diagramaciones de los formularios fueron realizados con tamaños y posiciones relativas y no absolutas… el trabajo es muy poco.



Una vez instaladas las herramientas de desarrollo, Visual Studio 2010 les permite crear un proyecto nuevo de tipo “Windows Phone Application”, de ahí en adelante todos los conceptos base de Silverlight (Data Binding, Styles, Templates, WCF y RIA Services, etc..) siguen funcionando de forma similar. Existen algunos controles propios de la plataforma listos para usar como ApplicationBar, Pivot y Panorama, los cuales ayudan a estandarizar el comportamiento de nuestras aplicaciones con las ya existentes en el sistema operativo.


Contras.


Básicamente encontré dos cosas que no me gustaron: Dentro del ambiente de desarrollo, instalar la aplicación en el dispositivo es muy fácil, ya que a través del “Zune client software”, tiene in asistente que ayuda en el proceso, sin embargo, si yo quisiera hacer una distribución masiva de mi aplicación en un ambiente corporativo tendría que hacerlo a través de Marketplace, y no necesariamente yo quisiera que mis aplicaciones estén disponibles en este lugar público, yo esperaría que a través de mi infraestructura corporativa pudiera distribuir la aplicación.


El otro tema es el acceso a bajo nivel de algunos elementos del Hardware del dispositivo, por ejemplo un lector biométrico o de código de barras. Así el dispositivo móvil contara con este tipo de hardware adicional, el ambiente protegido de Silverlight no me permite hacer operaciones directas sobre el API de estos elementos, lo cual puedo hacer en Windows Mobile 6 y 6.5.


Los invito a que bajen las herramientas y puedan juzgar ustedes mismos. Se pueden guiar con el blog de dan Wahlin’s al respecto aquí.

Entrevista radial sobre Silverlight y temas varios

El programa Ciberradio de la emisora radial de la Universidad del Valle me invitó para entrevistarme sobre Silverlight y otras tendencias del mercado, incluyendo la posición frente a HTML v. 5.0. Al final resulto una conversación agradable, le agradezco a los muchacho de Ciberradio. Quienes estén interesados en escucharla, la subí a YouTube:


[View:http://www.youtube.com/watch?v=RYAyejPPoNY:425:344]

Simposio SATI

Del 13 al 15 de Octubre en Cali se va a llevar a cabo el congreso SATI (Simposio de Actualización en Tecnología de la Información y Comunicación), auspiciado por la Universidad Libre de Cali y la empresa privada de la región. Un evento dirigido a toda la comunidad que esta alrededor de la tecnología. Es importante resaltar que no es un evento meramente estudiantil, sino que se espera la participación de los profesionales, la empresa privada, tanto empresas de tecnología como consumidores de la misma, y los gomosos de la informática y telecomunicaciones. Toda la información sobre el simposio, inscripciones, agenda, ubicación, etc… lo pueden encontrar en la página web http://www.sati2010.com/.


Los organizadores me han invitado para dictar una charla, y el día jueves 14 voy a hablar sobre el desarrollo de clientes inteligentes y al final les voy a mostrar el nuevo paradigma de Microsoft® XAML, sus diferentes implementaciones: WPF, XBAP y Silverlight, para terminar mostrando lo que se puede hacer con ella y donde radica la diferencia frente a otras propuestas. Igualmente, para las sesiones prácticas de taller, durante el día viernes, vamos a utilizar una máquina virtual con todo el software necesario para que los asistentes puedan conocer de primera mano las herramientas y la forma de crear aplicaciones cliente a partir de esta nueva plataforma.


Adjunto el material de mi presentación. Nos vemos en SATI.


Steve Ballmer en Bogotá – {Actívate} 2010

Imagino que muchos de los asistentes a evento de {Actívate} 2010 han reportado esta noticia en sus blogs, por esta razón simplemente quiero compartir mis opiniones respecto de la magistral charla dictada por Steve Ballmer en la ciudad de Bogotá.


Más allá de los anuncios sobre las características y bondades de los nuevos productos lanzados por Microsoft® durante este 2010; de cómo la computación en la nube cambia el paradigma de ser dueño de la “plataforma” y controlar el “centro de computo” de una organización; de como más que nunca (…y como siempre…), son los desarrolladores de software “¡¡¡developers, developers, developers!!!” los que le dan sentido y aglutinan todas estas estrategias para generar valor agregado.


Más allá de todo eso, en lo personal, lo que más me gusto fue su visión de futuro a largo plazo, la cual compartió de forma espontanea durante una sesión de preguntas abiertas al final de su presentación. Estas son algunas de sus ideas… escritas bajo mis percepciones:


Los servidores deben evolucionar a sistemas que “aprendan a servir” a partir de su uso diario: en algún momento lo importante en los servidores no se va a centrar en el software y los servicios instalados: Windows Server, SQL Server, SharePoint, etc… Estos se fusionaran en una sola cosa que les permita mejorar momento a momento a través del uso cotidiano. Por ejemplo, el traductor de idiomas de Bing entrega sugerencias más refinadas en cada momento, porque construye un modelo estadístico basado en las acciones seleccionadas por los usuarios del mundo entero. Sin embargo, lo que debe evolucionar en los siguientes años, es la forma como “aprenden” los aplicativos, ya que los modelos estadísticos son costosos en recursos y poco naturales. Ningún ser vivo aprende a partir de un paquete de datos heredado de sus padres, lo hacen a través de una asociación de experiencias vividas. Entonces, ¿Cuál es el mejor mecanismo? Aquí se reciben ideas.


Por otro lado, no importa si esos servidores están en la “nube”, o debajo del escritorio, los datos per se no tienen sentido, se deben combinar para generar información y ser útiles para las personas que requieren de ellos en el momento y lugar oportuno. El objetivo es crear dispositivos y aplicaciones cliente que enriquezcan la experiencia de interactuar con la información y explotar la funcionalidad de forma natural. Natural, NO ES a través de un teclado y un mouse. Natural es ser reconocido por mi voz y que entiendan mis particularidades lingüísticas (acentos, dejos, muletillas). Natural es poder interactuar a través de los gestos de mi rostro, manos y cuerpo (como las cámara fotográficas que hoy toman la fotografía cuando sonríen). Natural es tener dispositivos que se integren a mis herramientas de trabajo y tomen información al momento que ocurren los hechos (por ejemplo para operaciones de logística) y no esperar a que yo actualice una bitácora de tareas. Natural es interactuar con personas de todas partes del mundo sin que el idioma sea una barrera. Natural es poder compartir y usar información sin pasar por el proceso de copiar y pegar. Natural es que los desarrolladores de software entendamos la robótica como un conjunto de dispositivos sobre los cuales pueden correr nuestras aplicaciones.


El reto de HOY es que dejemos de ver todos estos dispositivos y características nuevas del hardware (multitouch, biometría, reconocimiento de video y voz, interactividad por gestos, movilidad, pantallas de diferentes tamaños, etc) como simples juguetes tecnológicos y los incorporemos a soluciones reales que mejoran y apalancan el trabajo de nuestros usuarios. En otras palabras, crear aplicaciones de negocio que cambien la percepción del usuario sobre los sistemas de información volviéndolos un habilitador de sus tareas cotidianas y no como otro trabajo más a realizar.


Les dejo el link para que descarguen el contenido de la charla que dicté en el marco de este evento (un verdadero honor para mí) sobre patrones arquitectónicos para la capa de presentación, un de las primitivas bases para hacer este futuro una realidad palpable.