Temporada 3 – Rock Developer

Es un tema de controversia, siempre lo ha sido. ¿Cúal es la mejor forma de desarrollar productos?

El día de hoy discutimos sobre las razones para usar la metodología de desarrollo ágil en el tan esperado regreso del podcast RockDeveloper.

Reciban un cordial saludo de sus conductores Cesar Reyes y Iaax Page

Control de Calidad

Ultimamente han venido a mi cabeza ideas de analogías sobre el control de calidad, y he querido expresarlas aquí.

Que sucede comunmente cuando se desarrollan proyectos a pequeña-mediana escala y estos son evaluados por los usuarios finales ?

Les dibujo un panorama antes. Una micro-empresa los contrata para el desarrollo de una aplicación web, donde tienen que administrar la venta en línea de ciertos productos. Esta aplicación tiene dos ámbitos: uno público para el consumidor final, y otro administrativo para personal entrenado. Gente que sabe, o debería saber hacer su trabajo.

Bueno, pues bien, empeiza la etapa de pruebas por los usuarios (como es un proyecto pequeño, no existe departamento de calidad, el departamento de QA son, los usuarios finales, y uno mismo) , y estos hacen y deshacen de la aplicación llevándola a condiciones que el desarrollador no se imagina.

El triste escenario más común, es que el usuario final, encuentre no uno, ni dos, sino varias maneras de hacer fallar el sistema, y el desarrollador quede en vergüenza, argumentando que un sistema debe contemplarlo todo y evitar mensajes de error inesperados. Que sucede a continuación ? El desarrollador, quien está sujeto a la aprobación del cliente puesto que él tiene su cheque en espera, baja la cabeza, y corrije los fallos.

Ahora… Hablemos con la verdad.

Se sabe en el mundo del desarrollo dos cosas :

1- El desarrollador piensa que el usuario es un estúpido, incompetente, con un coeficiente por debajo de un ratón buscando queso.

2.- El usuario piensa que el desarrollador es un idiota arrogante, necio y además perezoso, que siempre se negará a hacer algo a pesar de que sea para su beneficio.

Pues bueno, yo creo que ambos tienen razon, y no al mismo tiempo.

Aceptemos, que ya estamos bajo este paradigma, y como desarrolladores, estamos hartos de probar una y otra vez nuestra propia aplicación, y no entendemos, como alguien puede hacerlo tan mal una sola vez mientras que nosotros hacemos el proceso perfectamente siempre. Aceptémoslo, NO LE TENEMOS PACIENCIA AL USUARIO, NO TENEMOS TIEMPO PARA SU INEFICACIA. Y es entendible, puesto que nuestro trabajo (hablando exclusivamente como desarrolladores) es desarrollar instrucciones lógicas para que una máquina haga su labor, no capacitar ni bordear todas las infinitas causas de un error. Tal vez ese trabajo le corresponda a alguien más, alguien destinado para atención al cliente. Un mediador.

Y, del otro lado, como usuarios, muchas veces hemos usado una aplicación, esperando que sea tan intuitiva como una interfaz de iPhone. Yo, al menos, he hecho berrinche pensando cómo es posible que los diseñadores de la interfaz de una aplicación no pensaron en que desconozco por completo del tema, y su aplicación no me permite avanzar puesto que no me manda ningún mensaje de error. Inmediatamente me dibujo en mi cabeza la imagen de un programador rascándose la barriga diciendo ‘Que se joda el usuario, si no hace bien las cosas, no es mi problema’.

Ahora… creo que es responsabilidad del usuario investigar antes sobre un producto, antes de usarlo. El usuario espera de la computadora y su software demasiado, y creo que esto es gracias a la dramatización de las películas, que han humanizado el software: Programas que hablan con personas, que son capaces de analizar la realidad sin los sensores adecuados, alguien recuerda como Kitt, el auto increible, podía averiguar cuantas personas habían en una habitación ? tambien contenía todos los planos de todos los edificios que se puedan imaginar. Una vez, escaneó las huellas de una llanta, y le dio  a Michael Knight la marca, modelo de neumático, y la matrícula del auto que lo manejaba. Creo que eso le ha dado un concepto erróneo de las computadoras a las persona que NO SABEN DE COMPUTADORAS.

Ahora, imaginen esto: Llega un cliente a un concesionario de autos, y pide una prueba de Manejo.

Arranca el carro, mete primera velocidad y avanza, inmediatamente mete quinta velocidad, y el carro hace ruidos extraños. entonces, el usuario reclama “porque el carro no contempló esto?!!!”.

Luego, se baja del automóvil, le saca el aire a una llanta, y sigue manejando, el auto obviamente pierde control rápidamente, y el usuario vuelve a reclamar: “porque el carro no sabe prevenir este problema?!!”

Luego le vacía el anticongelante, el carro se recalienta, y vuelve a reclamar…

Se que suena absurdo, pero, no es absurdo que una persona también meta letras en un campo donde le piden la edad ?

No es absurdo que una persona quiera crear una factura cuando ni siquiera ha elegido un producto a facturar ?

“Es que, el usuario puede andar distraido, y teclear erroneamente datos”

o “El usuario no tiene porque sufrir la complejidad del sistema, el sistema debe guiarlo intuitivamente a través del proceso”

Nuestros líderes de proyecto siempre nos decían “Piensa que el usuario es el ser más tonto que hayas imaginado”

Creo que en la computación se le está deslindando cierta responsabilidad al usuario final, se le está permitiendo ser tonto, o descuidado, y se le está cargando todo un esfuerzo en evitar catástrofes a los sistemas por medio de procesos de calidad.

No estoy en contra de la calidad de un sistema, pero, vamos, la gente sabe que si metes aluminio al microondas, se descompone. La gente sabe que si le echas otro liquido que no sea gasolina al tanque de un auto, dañas el auto. La gente sabe que si haces una fogata dentro de un refrigerador, se quema !

PORQUE NO PODEMOS EXIGIR CIERTO SENTIDO COMUN A UN USUARIO EN COMPUTACION ??

Ahora… dos cosas:

1- La tecnología, le hace la vida más fácil a la humanidad. Hoy en día es más difícil estropear un automovil que hace 30 años, puesto que la mayoría trae sensores que alertan a las personas para hacer las revisiones y reparaciones adecuadas a tiempo. Aun así, un auto de línea económica no tiene el mismo sistema de calidad y confort que un auto de super lujo. Sabemos que el auto de superlujo tendrá una mejor computadora, tendra mas sensores y mejor control sobre tracción, frenos, motor, etc.

Porque no podemos llevar esta analogía al software ? Enfocarnos en el tipo de usuario que tenemos enfrente, y saber que tipo de control de calidad estamos dispuestos a desarrollar, y cuanto el esta dipuesto a pagar. Por que el control de calidad cuesta, tiempo y recursos hombre.

Tal vez el usuario espera un control de calidad de super-lujo, cuando está pagando el tiempo y esfuerzo para desarrollar un control de calidad austero. Seamos realistas y proyectemos esa realidad al usuario.

2.- La tecnología continuamente va avanzando, y la humanidad se va adaptando a ella. Volviendo a la analogía de los autos, Hace 10 años tener frenos ABS era carísimo puesto que estaba en sus inicios y solo las marcas que la habian desarrollado podian implementarla. Hoy en día tener frenos ABS en un automóvil es más economico, y esto es porque ya están probados, refinados y el sistema ha madurado, y al extenderse en todas las marcas, se vuelve menos complicado de implementar.

Asi sucede con el software y la gente. Hoy sabemos que la validación básica de un formulario no es tan complicada que hace 10 años, y esto es gracias a los patrones de diseño, frameworks y otras herramientas como el paradigma AJAX nos resuelven gran parte del camino.

Espero haber aclarado el punto de todo este rollo que les he escrito:

Es cierto, hoy en día es más fácil implementar validaciones básicas, y también es cierto que es responsabilidad nuestra asegurar un nivel de calidad adecuado. Pero tampoco se vale como usuario ponerse en el papel de ‘no se usar una computadora’ . Si no sabes como usar algo, usalo bajo tu propio riesgo, tomate el tiempo de aprender, lee el manual, pregunta, no esperes que el cielo se te abra y te caiga la respuesta del cielo.

Los programadores no tienen excusa para ser flojos y antipaticos con el usuario.

Los usuarios no tienen excusa para ser ignorantes y tontos.

Versionitis

Creo que cada vez más se libera software más frecuentemente, hasta microsoft lo empieza a hacer, recuerdo cuando no podían liberar algo hasta una nueva version del Visual Studio o Service Pack que lo soportara. Ahora tenemos el ejemplo de chrome, donde en menos de 3 años ya van en la version 13 y Firefox anuncio que le va a seguir los pasos.

Pasa tambien en los video juegos, donde salen “actualizaciones”, que corrigen bugs, o que le agregan funcionalidad.

Esto tiene que ver mucho con las metodologias agiles, que dicen que hay que hacer iteraciones cortas, y en cada iteración se debe tener un producto entregable. Entonces cada 2, 3 semanas el cliente tiene nueva funcionalidad en su sistema.

Y la reflexion es si esto es bueno o malo, definitivamente tener nueva funcionalidad mas frecuentemente es bienvenido, pero esto provoca la incursión de mas bugs. Para evitarlo se necesita tener una disciplina de pruebas, tener pruebas de unitarias y de integración que te aseguren que al estar escribiendo código nuevo, no se rompa funcionalidad previa.

Tambien algo que es necesario para poder hacer actualizaciones tan frecuentemente es, el que estas, sean lo mas sencillas posibles, por ejemplo chrome, ni siquiera te das cuenta que hay una version nueva. Otro ejemplo de esto es en wordpress, en este tipo de aplicaciones web creo que es mas difícil alcanzar eso.

Definitivamente no estoy en contra de liberar mas frecuentemente, pero si hay que proteger al usuario de errores mas frecuentes y de actualizaciones complicadas.

Festival Latinoamericano de Instalacion de Software Libre

Por fin está listo el podcast del mes de Marzo.

En esta ocasión nos acompañó Alexandro Colorado, un entusiasta promotor del software libre, para platicarnos acerca del FLISOL y su realización en la ciudad de Cancún, lugar donde actualmente radicamos Cesar, Iaax y un servidor, así como el buen JZA (Alexandro) .

Espero les guste esta amena charla de aproximadamente 40 minutos, donde JZA nos comparte su experiencia como colaborador del proyecto OpenOffice.org y su vision de la filosofía del Software Libre.

Aprovechamos este espacio para animar a todos los escuchas a participar en el FLISOL ya sea en Cancun o en donde sea que radiquen (esperemos que se realice un FLISOL en tu ciudad), ya que la colaboración es la materia prima de este movimiento.

Les adjunto los datos de JZA para cualquier información sobre el FLISOL.

JZA
Coordinador Nacional para Mexico del FLISOL
twitter: @flisolmexico
web: http://flisol.info/Mexico

Gracias,  apoyen el movimiento y comenten. Nos vemos en Abril.

Pd.- La cancion del final es una sorpresa para aquellos amantes del llamado Art Rock.

Contribuye sin ser desarrollador

Flisol

Un gran mito dentro del software libre es que es únicamente para programadores. Este mito cobra aún mas fuerza cuando el tópico no solo es de uso sino de contribuir al proyecto. “Solo los programadores informáticos entienden de eso”.

Sin embargo el software libre esta lleno de comunidades repletas de personas que se dedican y estudiaron otras cosas. Fisicos, matemáticos, maestros de ingles, consultores, médicos, abogados y muchos otros profesionistas así como estudiantes de diferentes grados apoyando el producto.

Una de las áreas mas populares de la contribución es la de soporte. Todos somos usuarios, y usuarios con mas experiencia no están restringidos por su profesión. En esta época todos tenemos necesidad de usar un procesador de texto, un cliente de correo y un navegador web. Entonces por que no ayudar a otras personas? Esta es una forma de contribución tangible ya que los usuarios pueden aprender unos de otros.

Otra área también accesible es la de documentación, despues de todo si sabes escribir puedes crear un manual, si sabes escribir bien, puedes ayudar redactandolo de una forma mas que sea más fácil de seguir.

El control de calidad siempre es importante, ser un tester o técnico de pruebas, es relativamente fácil ya que solo debes seguir instrucciones de operación y calificar el desempeño de la aplicación. Quizás necesites aprender como trabaja el sistema de control de calidad y tener la experiencia suficiente para saber cuales son los comportamientos que debes esperar.

Si sabes inglés puedes ayudar a traducir o localizar diferentes areas del proyecto, desde la página web, hasta la interfaz del software así como la documentación y comunicados del proyecto.

Otra forma de contribuir es generando recursos para el proyecto, plantillas pueden ayudar a nuevos usuarios a rapidamente entender o generar contenido sin tener que aprender todas las areas del software. Esto es principalmente importante en software mas intenso de operación como una hoja de calculo o un software de estudio musical.

El software libre sin importar su giro tiene elementos estandarizados de colaboración. Es importante aprender a usar estos elementos.

  1. Lista de correo – ayuda a usuarios y desarrolladores a comunicarse entre ellos. Es la forma mas fácil ya que todos en internet usamos correo electronicos.
  2. Control de errores – no solo errores pero tambien peticiones de mejoras y arreglos o parches.  Esta es una herramienta muy importante para la resolución de problemas en el software. Procura aprender como reportar errores o bugs.
  3. Wiki – Esta es como una pagina web que fácilmente te permite crear contenido dentro del proyecto. Esto puede ser tips, manuales, tutorias instruccionales, o descripción de procesos.
  4. Repositorios de código – A pesar de su intimidante nombre, estos son solo una versión en linea del código que incluye el software que usas. No es imperativo conocerlo pero es bueno saber que existe. Esto permite a usuarios actualizar el software.
  5. Chat – Usualmente se usa el IRC, software como Xchat o mIRC, te permitiran conectarte al canal donde podras preguntar en vivo us dudas.

Recuerda que el contribuir no es cosa del otro mundo. Pero, cual es el beneficio de contribuir?

El beneficio depende de tu situación, tu te puedes beneficiar con tan solo usar el software. Te hará un usuario experto y te hará tener mejores resultados sobre tu trabajo.

Si eres un estudiante puedes seguramente sacarle provecho al contribuir ya que el proyecto de software es un proyecto abierto que puedes mostrar a tus jefes en un futuro. Al ser abierto, este será un material fácilmente comprobable por tu supervisor.

Digamos que eres un estudiante de inglés, gracias a tu colaboración traduciendo la documentación puedes aplicar a un trabajo de traducción técnica, la cual podrás comprobar enseñando tu nombre en la página de contribuciones del proyecto.

Un proyecto de software libre, no se diferencia demasiado de un proyecto de software tradicional. Así que esto puede ser tu primer experiencia para una carera profesional.

El ser un usuario experto también te permitirá enseñar y entrenar a empresas a usar el software, esto puede ser algo que puedes hacer al mismo tiempo que lo haces con el resto de la comunidad. Un experto formador siempre estará al día con su materia y el software libre ayuda a que la comunidad te reconosca tu expertisé.

Si aún tienes dudas te recomendamos visitar el FLISOL. Un evento con enfoque en ayudar a las personas a colaborar con el software libre y sacarle el mejor provecho. El FLISOL o Festival de Latinoamericano de Instalación de software libre es un evento que se lleva en diferentes lugares del continente el 9 de Abril. Para mayor información puedes ir a la página http://flisol.infosi vives en Cancún ve a http://flisol.info/Cancun

JZA
Coordinador Nacional para Mexico del FLISOL
twitter: @flisolmexico
web: http://flisol.info/Mexico

Una meta-organización de libertad

FLISOL 2011
En mi experiencia con eventos este es el único que he visto que haya logrado con tal presición de una manera tan constante. El festival latinoamericano de software libre, es uno de aquellos milagros que ha creado el software libre. El de que en un dia al año se generen sedes en diferentes ciudades, culturas y pueblos con una misma meta — Expandir el uso del Software libre.
En mi area de trabajo he ido a diferentes paises participando con estudiantes, desarrolladores, diseñadores y usuarios con interés en las tecnologías de información por una buena decada. He visto toda clase de eventos, desde eventos donde acampas ahi, hasta eventos donde son unicamente virutales. Eventos para negocios, hasta eventos para ONGs.
Los eventos que no he participado, he escuchado sin embargo para toda la diversidad que existe, el evento FLISOL ha sido el unico que he visto en su tipo con esa tradición y empuje. El festival latinoamericano de sotware libre, se ha llevado ya por unos solidos 7 años y ha tenido un exito y apoyo en constante ascenso. Diversos paises han podido participar y las sedes de cada uno han sido muy bien orgnizadas.

Que es un FLISOL?

Un FLISOL es principalmente un INSTALLFEST o Festival e Instalación, donde tradicionalmente son actividades que los grupos de usuario crean para ayudar a la difusión del grupo.
Ahora imagina que en un día, miles de personas estarán expuestas a software que no tiene millones de dolares de marketing pero que su comunidad tan entusiasta hace que mas gente cada vez sea expuesta y sea parte de la comunidad.
Esta comunidad esta unida por su curiosidad y entusiasmo hacia la tecnología que va bajo el principio de libertad. Esta libertad es basicamente el sentimiento de propiedad que se le da a todos de ser participes de la construcción de las soluciones que ellos busquen.

Pero que es una comunidad?

Una comunidad tradicionalmente se conoce como a un grupo de personas que conviven en una comuna, es decir en un area geográfica determinada. Cada persona desempeña un rol, y esto sirve al resto de la comunidad.
Asi vemos que en el software libre, aunque el area no es geográfica, vemos una relación entre desarrolladores, usuarios, localizadores y promotores que ayuda a que este software de desarrolle y se mejore día a día.
FLISOL es una labor de los promotores donde ayuda a generar usuarios, pero tambien a que los desarrolladores tengan contacto con dichos usuarios en una diversidad de ambientes geograficos.

Donde encuentro un FLISOL?

El sitio del FLISOL concentra los datos de todas las sedes donde se vaya a realizar el FLSOL. Sin embargo todos estamos invitados a crear nuestras sedes del FLISOL, aunque es importante revisar los principios de estos y organizarnos respecto a ellos. Procura tener en mente al usuario a la hora de organizarlo.
Es decir, apoya a una sede si ya existe, o haz una investigación previa para que el usuario no tenga la confusión de a donde ir. Cuando el usuario llege a la sede, pueda rápidamente identificar lo que le interesa. Que pueda tener asistencia tambien para ayudarle con su instalación y que tenga las herramientas disponibles para hacerlo.
Este y más tips puedes encontrarlos en el sitio del FLISOL, así que dirigete a este, y ponte en contacto con tu sede local.

JZA
Coordinador Nacional para Mexico del FLISOL
twitter: @flisolmexico
web: http://flisol.info/Mexico

Fallas comunes

Falla de Grua de Rescate

Pues bien, hemos regresado despues de una larga ausencia, en este 2011, inagurando la tercera temporada del podcast con un tema muy comun entre toda la comunidad de desarrolladores: las fallas mas habituales que nos ocurren dia a dia.
Esperamos que les guste esta media hora de charla y nos envien sus comentarios y sugerencias.

Revolución. 25 años de Windows

Un día como hoy, hace 100 años. La revolución mexicana alcanzo el éxito. Díaz abandonaba el país, y un nuevo orden estaba apunto de formarse. Un día como hoy, hace 25 años Microsoft presento un sistema operativo que estaba destinado a convertirse en la pieza de software mas distribuida, conocida y pirateada del mundo. Windows 1.0.

Aun no se sabe claramente si Bill Gates decidió retrasar el lanzamiento debido a que en su intento anterior había fallado miserablemente o por que estaba esperando que se alinearan las fechas con la revolución mexicana. Bueno, en realidad eso ultimo es parte mentira. Dudo que William Henry Gates III, haya tenido en cuenta una fecha tan importante para mi país.

Lo que si tuvo claro, fue la idea de colocar un computador en cada hogar de america, visión que después se expandió a colocar un computador en cada hogar del mundo. Este es un pensamiento revolucionario. La visión con la que Gates construyo Microsoft alrededor de Windows proviendo a este ultimo de herramientas de productividad y mas tarde herramientas empresariales, lo llevarian a convertirse en el sistema operativo de-facto en las computadoras personales.

Creo que hay un mercado para cinco computadoras en el mundo.
Thomas J. Watson CEO de IBM en 1943.

Creo, que esta epoca puede bien a bien equipararse con el oscurantismo, ya sabes, la santa inquisición y su quema constante de brujas y hechiceros paganos. Mucha gente puede salir a defender esta postura, pero todos sus argumentos son invalidados automáticamente si consideran que están hablando del presidente de una compañía llamada International Business Machines. La labor de un CEO es tener los ojos abiertos a las posibilidades. Es guiar a la compañía hacia su siguiente punto catalizador que los convertirá de nuevo en punta de lanza.

Esta es la mentalidad que estaba presente en Gates, cuando estuvo al frente de Microsoft, la lidero y guio hasta convertirla en el gigante de Redmond. Las convicciones y el fanatismo pueden facilmente confundirse. Es por tanto imperativo tener un ancla. Una persona u objeto que nos permita regresar a la realidad. Obtener una vision panoramica de la realidad. Un 360 del mundo que estamos descubriendo. Si no terminaremos siendo embaucados como Steve Jobs en los Piratas del Valle del Silicio.

Xerox debio ser la empresa que creara la primera línea de sistemas con interfaces gráficas. Un ejecutivo dijo que era basura. Cuando Jobs visito el mítico PARC tuvo una visión.  O en realidad se robo el prototipo, nadie nunca lo sabrá. Entonces, cuando Gates le roba a Steve lo que el le había robado a Xerox, quien puede culpar a alguien en esta película?

El mundo no esta hecho para aquellos de corazón débil. Si por alguna casualidad estas en el mundo de la computación, y formas parte de alguna de las tres tribus principales Linux, Windows o Mac y jamás has visto este filme. Bueno, creo que el consejo sobra.

Un líder triunfador siempre es un visionario, un revolucionario, un amante de lo desconocido. Hoy, invito a todos mis hermanos mexicanos y del resto de las naciones del mundo de habla hispana a unirse a la nueva revolución. La revolución tecnológica antes de que esta nos deje atras. España, Chile y Argentina tienen ya un buen avance. Sigamos este ejemplo, y llevemos a nuestras naciones al desarrollo con inversión en tecnologia.

C++ 1/4 de Siglo Despues

Me tope con este articulo de C++ en FayerWayer que te lleva a la entrevista que le hicieron Wired a Bjarne Stroustrup creador y desarrollador de C++

De la entrevista me quedo con lo siguiente:

Solo queria hacer tecnicas de programacion basadas en tipos seguras y abstractas, para poder enseñarlo y aplicarlo a los sistemas de programacion.

Y tambien con el hecho de que fue uno de los primeros lenguajes que se esparcieron en forma viral y no por esfuerzos de marketing.

C++ fue el catalizador que me hizo programador. La llama que ilumino mi universo por mucho tiempo.

Eran finales de los año 90 cuando por cuestiones propias de la academia fui introducido a C++ fue como despertar de un largo sueño. Conceptos como objetos, herencia y polimorfismo resonaban en mi mente de estudiante como tambores de guerra. Programar era entonces arte, y yo un aprediz de artista.

Lejos estaba de saber que me deparaba el futuro. El ritmo vertiginoso con el que las tecnologias empezarian a desarrollarse y los cambios que venian. Hoy, en un mundo dominado por contenido basado en Java (Y todos sus derivados), C#, VB, PHP, Ruby on Rails el mundo de C++ se me antoja lejano. Y sin embargo solo basta un viaje a la terminal para observar y vivir de nuevo en C.

La razon por la que quize escribir este articulo fue como homenaje a uno de los lenguajes de programacion que mas nos han dado. Y tambien para recordar que no todo el desarrollo de software es desarrollo web.

Felicidades C++

Iaax Page.

Consultor en  Marketing Online, Diseño y Desarrollo Web
Conexiones: LinkedInFacebookTwitter

Fuentes

FayerWayer C++
Wired C++ Adds to Programming

Directorio de Software Open Source

Para continuar con el buen sabor de boca que ha dejado el ultimo podcast de desarrollo de software de la temporada 2 de RockDeveloper les presento lo que es una de las noticias de hoy en el mundo de los Mergers and Aquisitions o como decimos en español Fusiones y Adquisiciones.

http://www.ohloh.net/ (Mejor conocido como The open source network) fue adquirida de manos de Geeknet (antes SourceForge) por Black Duck Software. Black Duck se dedica brindar servicios para administrar el uso de software open source en ambientes corporativos.

El proposito de Black Duck Software es vender mas productos y servicios a corporaciones de tipo fortune 500 promover el uso y desarrollo de software open source.

Nice.

Iaax Page.
Consultor en  Marketing Online, Diseño y Desarrollo Web
Conexiones: LinkedIn, Facebook, Twitter