Acerca de la necesidad de un "Juramento hipocrático en Informática"

Hace unos días apareció el ya célebre experimento “Mojave”, del cual diversos blogs se han hecho eco (entre ellos Vista-Tecnica, vecino en Geeks, y on10 entre otros). Se trata a grandes rasgos de una campaña de marketing mediante la cual se ha pretendido demostrar que en la mayoría de casos, las fervientes críticas, rumores y rechazos a Windows Vista se deben al desconocimiento de quienes las realizan acerca de dicho Sistema Operativo. Tal vez no sólo de quienes crean estos bulos (a.k.a. FUDs, del inglés “Fear-Uncertainty-Doubt” o “Miedo-Incertidumbre-Duda”) sino también de quienes los escuchan y, en lugar de analizar realmente su contenido y contrastarlo mediante una prueba real, se limitan a hacerse eco de ellos y continuar la “cadena”…  


Bueno, me parece cuanto menos sonrojante para los encuestados… Usuarios de XP (84%), Mac OS (22%), sistemas Windows pre-XP (14%) y Linux (1%) (no suman 100 puesto que algunos de los usuarios emplean varios de estos SO, jeje) evaluando a Vista con una puntuación de 4’4, y tras 5 minutos de demo le asignan una puntuación de 8’5… Vamos, que el 94% de ellos le asignó una puntuación superior tras la Demo… y no precisamente “unas pocas décimas” superior, ¡¡sino casi el doble!!


Por otra parte, en la misma web aparece la estadística de gente que lleva más tiempo usando Vista, el 89% se muestran satisfechos y el 83% lo recomendarían a un familiar, amigo o compañero. Valoración, dicho sea de paso, que comparto tras emplear Vista como único SO desde Noviembre de 2006 para todo (ocio, trabajo, estudios…).


Lo que ya no dice por ninguna parte es si los encuestados son profesionales del mundo de la Informática, bien sea técnicos o relacionados con puestos de ventas (típicos vendedores de grandes superficies…), porque de ser así… menuda falta de rigor, de profesionalidad, de capacidad crítica… De hecho, tal vez no sea el caso de estos encuestados, pero opiniones similares las he podido escuchar de compañeros de profesión, seguro que muchos de vosotros también las habéis escuchado. Sobre este hecho me gustaría reflexionar…


Imaginad ahora que en lugar de profesionales de la Informática, lo son de la Medicina, y ejercen su trabajo con la misma falta de rigor: ¿Cuántas víctimas se habría cobrado su falta de profesionalidad? ¿Cuántos años de cárcel deberían cumplir por ello? No hablemos ya si en lugar de médicos fueran arquitectos, pilotos de avión, etc.


Un debate de bastante actualidad en nuestro sector es el de la creación o consolidación de los Colegios de Ingenieros Informáticos, la regulación de nuestra profesión, la atribución de competencias… Este es un tema completamente distinto pero, sinceramente, ¿no sería prioritario crear una especie de “juramento hipocrático” en el cual todo profesional de la Informática se comprometa a actuar con rigor, a opinar de forma razonada? En definitiva, a demostrar que realmente los profesionales de este sector son profesionales responsables y competentes.



En mi opinión, me parece algo indispensable y mientras esta responsabilidad y ética profesional no esté garantizada, creo que no tenemos derecho a exigir ese grado de proteccionismo por el que muchos de los que carecen de rigor abogan. Cierto es que, por suerte, hay mucha gente responsable en nuestro sector… No estoy señalando a nadie con el dedo, todos nos conocemos sobradamente para saber en qué grupo estamos… Y también soy consciente de que con lo que yo afirmo terminarían pagando justos por pecadores, pero personalmente prefiero eso antes que regular un colectivo de profesionales del cual, por determinados individuos del mismo, jamás podría llegar a sentirme orgulloso de pertenecer a él. 


¿Qué pensáis vosotros? (PD.: Espero no ofender a nadie con este post :-D)

Charla Digital con los lectores del Diario Información de Alicante

De vuelta en España tras dos semanas de vacaciones y descanso, me gustaría invitaros a participar en una charla digital que tendré con los lectores del Diario Información de Alicante, mañana martes a las 18:00h (GMT+1).


Se trata de una oportunidad muy especial para mí, sobre todo en el terreno personal. El motivo de la entrevista es la relativa actualidad informativa de nuestro proyecto Windows Drive, especialmente tras la final de Imagine Cup en París. No obstante, la temática de las preguntas no estará limitada a ello, sino que pretende ser más bien mis reflexiones más amplias acerca de este mundillo de la Informática, las experiencias de un estudiante recién titulado como Ingeniero Superior en la Universidad de Alicante (con tanto alboroto, no había encontrado el momento para escribir algo al respecto, y la verdad es que hay muchas personas a las que agradecerles haber aportado su granito de arena a ese logro personal… De todos modos, quienes merecen dicha mención ya saben de sobra quienes son y en muchos casos ya se la he hecho llegar por otras vías, así que espero no decepcionar a nadie, jeje). No se trata de una entrevista técnica, puesto que al ser un periódico de carácter general, pienso que es más oportuno un enfoque de más alto nivel, con un carácter más social y humano que puramente geek. 🙂


En resumen, que acepto todo tipo de preguntas que puedan ser de interés para el público en general, para aquellos que llevan unos cuantos años en este sector y para otros tantos que a punto están de comenzar sus estudios universitarios en Informática, o simplemente para cualquier persona que sienta curiosidad e interés por todos estos temas y piense que yo pueda aportar respuesta a alguna de sus preguntas.


Para todos ellos, mañana a las 18:00h (GMT+1) estaré contestando a las preguntas que previamente podéis ir enviando desde aquí


¡Muchas gracias a la gente del Diario Información por esta oportunidad y a todos vosotros también por vuestra atención!

¿En qué consiste Windows Drive?

Mucho hemos hablado en Geeks.ms estos últimos meses acerca del proyecto Windows Drive en el cual hemos trabajado Héctor Juan, David Rodríguez, Carlos Junquera Cachero y yo mismo. O mejor dicho, os hemos mantenido al tanto de los logros que paso a paso hemos ido consiguiendo: la clasificación para la final española de Imagine Cup ’08 y la victoria en la misma, allá por el mes de Abril, posteriormente os comunicamos la noticia de que estábamos entre los tres proyectos clasificados para la categoría internacional de Windows Live y, finalmente, el éxito hace apenas 4 días en París.



No obstante, aún no habíamos explicado aquí de una forma concreta en qué consiste el proyecto. Como tampoco pretendemos soltar una descripción demasiado larga y enrevesada, me gustaría referenciaros a una gran entrevista que nos hizo la revista dotNetManía en la edición de Junio. Aún así, nos parece necesario responder a modo de cuestionario rápido una serie de preguntas que os ayuden a situaros mejor en el contexto del problema afrontado y los principios básicos de nuestra solución:


1.- ¿Cuál es el lema de Imagine Cup 2008?



Imagina un mundo en el que la Tecnología posibilite un Medioambiente sostenible


2.- ¿Qué problema afrontáis vosotros?



El Cambio Climático, puesto que es quizá el problema de mayor trascendencia y a la vez la causa de otros muchos problemas derivados (incremento del número de huracanes, descenso del nivel de lluvias, aparición de mayor número de incendios forestales no provocados, etc).


3.- ¿De qué forma?



Pensamos que la solución a este problema debe partir de la colaboración entre ciudadanos de a pie. A lo largo de la última década, muchos han sido los tratados y acuerdos entre gobiernos y otras instituciones para reducir el volumen de emisiones pero, al final, lo que verdaderamente cuenta es el ahorro de emisiones que la gran masa de ciudadanos puede llevar a cabo en sus tareas diarias. La Tecnología nos va a ayudar a ello optimizando nuestras actividades cotidianas.


4.- ¿En qué actividades cotidianas nos centramos?



Nuestro proyecto trata de optimizar el uso del vehículo privado. De esta forma, lo que perseguimos es hacer más sencillo y práctico que la gente comparta su vehículo con otras personas.


5.- ¿Existen soluciones en este sentido?



Sí, existen más de 100 soluciones, fundamentalmente basadas en plataforma web para abordar este problema. El fenómeno en cuestión se denomina en inglés “carpooling“.


6.- ¿Qué ventajas pensáis que aporta vuestro proyecto?



Cuando te dedicas durante meses a analizar minuciosamente las soluciones ya existentes y sus modelos de negocio, encuentras que, aunque éstas ofrecen unos resultados beneficiosos para el Medioambiente, existen una serie de patrones o mejor dicho de “antipatrones” o pequeños errores de concepto que hacen que el usuario se muestre reticente al uso de las mismas, de forma que finalmente no son todo lo efectivas que desearíamos. Algunas de ellas son:



a) Los sistemas existentes ponen en contacto a personas desconocidas que realizan una ruta similar, esto genera cierto miedo o poca disposición a meter en tu vehículo o montar en vehículos de personas que no conoces de nada… Nuestro sistema emplea el enfoque radicalmente opuesto, dispondremos de una serie de información almacenada “en la nube” mediante el uso de diferentes servicios de Live, de igual forma que ahora mismo disponemos de MSN Spaces o álbumes de fotos para cada usuario y seremos capaces de compartir esta información con nuestros contactos habituales de MSN Messenger mediante el uso de la API de Live Contacts, de este modo compartiremos vehículo con usuarios que ya conocemos: amigos, compañeros de trabajo, familiares, etc.
b) Existen más de 100 soluciones de Carpooling a nivel mundial y, sin embargo, la compartición de información entre ellas es totalmente inexistente. De este modo, cada una intenta hacer la guerra por su cuenta, existe gran redundancia de información en distintos almacenes de datos y, como consecuencia final, dos personas que perfectamente podrían complementar sus rutas son incapaces de encontrarse por estar en sistemas diferentes. ¿No sería mejor disponer de una fuente de información central, sobre la cual plantear distintos clientes? Mediante el uso de Live Services, podemos almacenar toda esta información en la nube, apoyándonos en el uso de SQL Server 2008 para información y cálculos más complejos. Posteriormente, el uso de una capa de servicios Windows Communication Foundation y la tecnología LINQ nos posibilita acceder a estas fuentes de datos y servir la información y métodos necesarios a cada uno de los clientes implementados.
c) ¿Hasta qué punto la visibilidad de estas plataformas web es la apropiada? ¿Qué estrategias de marketing emplean para llegar al gran público? A menudo, el aislamiento de estos sistemas es tal, que ni siquiera tienen presencia en redes sociales tan relevantes como Facebook, Twitter, LinkedIn o Windows Live. Por el modo en que nuestro sistema está concebido, cada usuario que haga uso de Windows Drive, será un punto de “publicidad” de nuestro sistema, ya que sus 100-200 (o incluso más) contactos de MSN Messenger verán que esta persona usa el sistema y podrán automáticamente unirse al mismo de manera gratuita; esto es: crear una auténtica cadena de colaboración a través de Windows Live.
d) ¿Qué nivel de experiencia de usuario proporcionan? ¿Está el usuario obligado a interactuar con el sistema a través de una página web o dispone de otras vías como podrían ser el uso de aplicaciones de escritorio, actividades dentro de MSN Messenger, clientes ligeros para PDA o, incluso, otros dispositivos como la XBOX, televisores con Windows Media Center, etc.? Al fin y al cabo, ¿la experiencia de usuario no consiste en dotar al usuario de una comunicación de último nivel en todos y cada uno de los puntos de interacción entre el usuario y el sistema, además de proporcionar cuantos puntos de interacción sean necesarios para ajustarse a los diferentes escenarios de uso?. En nuestro caso: acceder al sistema desde casa, desde el PC, chateando con un compañero/amigo, o desde un dispositivo móvil ya en la calle/carretera…
e) Por último, los sistemas de búsqueda de rutas existentes son muy simples. El punto de origen y destino de la ruta debe coincidir entre la búsqueda realizada y los resultados obtenidos… ¿No resultaría mucho más efectivo combinar una serie de algoritmos de inteligencia artificial y ser capaces de proporcionar rutas compuestas para, de este modo, mejorar los resultados de nuestras búsquedas y de este modo incrementar aún más si cabe la satisfacción del usuario con el sistema? Pues bien, si combinamos el uso de la SDK de Live Maps con las nuevas capacidades del Spatial Engine de SQL Server 2008… ¡podemos llevar a cabo esta funcionalidad!


7.- A modo de resumen, y puesto que se trata de una competición de desarrollo software, ¿qué tecnologías se han utilizado para el desarrollo del proyecto?



En primer lugar, nos gustaría resaltar que el uso de una u otra tecnología no hace mejor ni peor un proyecto en sí. Para nosotros, la fórmula ideal es la expuesta en este post:



a) Identificar una oportunidad de negocio, realizar un análisis competitivo y explotar nuestras potenciales ventajas respecto al resto de alternativas.
b) Centrar el desarrollo del proyecto en satisfacer las necesidades de los usuarios y en proporcionar una satisfacción elevada en el uso del sistema.
c) Por último, determinar qué tecnologías nos van a proporcionar estas posibilidades, diseñar e implementar el sistema en base a ellas. La tecnología es “únicamente” aquello que hace posible el proyecto, no el factor motivante del mismo.



Desde el punto de vista tecnológico, estas son las tecnologías que hemos empleado:





    1. SQL Server 2008


    2. LINQ


    3. Windows Communication Foundation


    4. Web Services


    5. Windows Presentation Foundation


    6. XNA


    7. J2ME (Java Middleware Platform for Mobile Devices)


    8. ASP.NET Ajax


    9. Silverlight 2.0


    10. .NET Compact Framework 3.5


    11. Windows Mobile 6


    12. Windows Live APIs (Virtual Earth, Contacts, Alerts, IM, Live ID)


    13. Windows Media® Center


    14. Visual Studio Team System 2008

    15. Expression Studio 2.0

Por último, dejamos una serie de recursos asociados, como son las fichas del proyecto publicadas con motivo de la final internacional tanto para la categoría de Software Design como de Windows Live, así como un vídeo promocional que creamos ya desde la fase nacional y que muchos de vosotros ya conoceréis, pensamos que resume muy bien todas estas características y además ofrece imágenes del proyecto a pleno rendimiento.





Aprovecho para dar las gracias a nuestro gran amigo Ricardo Acosta por el pedazo logo que se curró para nuestro proyecto, ¡artista! 🙂 


Como despedida, me gustaría dar las gracias a todos por vuestro apoyo desde las primeras fases de la competición y también animar a la gente a participar en la edición del próximo año. Si nosotros hemos podido, vosotros TAMBIÉN.


Ánimo y mucha suerte, ¡Imagine Cup 2009 ya ha comenzado!

Un primer vistazo a C# 4.0 de la mano del equipo de diseñadores del lenguaje

Parece que fue ayer cuando hablábamos de las novedades que el lenguaje C# introducía en su versión 3.0, novedades entre las que destacaban la declaración implícita de tipos, el uso de tipos anónimos, los métodos parciales y extensores, y toda una serie de características revolucionarias, orientadas a sentar las bases que hicieran posible la novedad principal de esta versión del lenguaje: las expresiones de consulta, claro exponente de la fuerte irrupción de la tecnología LINQ como parte intrínseca del lenguaje.


No obstante, de todos es sabido que el avance tecnológico es un gigante que camina de forma incansable y cuyo destino aún nadie sabe cuál puede llegar a ser, ni tan siquiera a medio plazo… En lo referido a las nuevas tecnologías de Microsoft, este fenómeno es incluso más evidente.


Pues bien, aún estamos acostumbrándonos a todas estas novedades, encontrando nuevas y mejores técnicas de aplicación de estas características para mejorar nuestros desarrollos y ya podemos comenzar a hablar de lo que será la próxima versión del lenguaje: C# 4.0


En el siguiente vídeo, nuestros amigos de Channel 9 Charles Torre y Robert Scoble se cuelan en una de las reuniones del equipo de diseño de C#. ¿Qué mejor forma de conocer las ideas que pasan por la mente de Anders Heljsberg y su equipo para la nueva versión del lenguaje que asistiendo a una reunión en su propio cuartel general?




Por el momento, no han revelado demasiados detalles al respecto puesto que el objetivo es dar a conocer las bondades del lenguaje en la próxima edición del PDC en el mes de Octubre. Si bien, lo que ya podemos anticipar es que el eje transversal en torno al cual girarán las novedades más significativas es la tecnología multinúcleo, y la forma en que el lenguaje se adaptará a esta característica hardware para hacer que nuestros desarrollos saquen el mayor partido posible a la misma y además seamos mucho más productivos desarrollando (lo sé, no es la primera vez que se dice esto, jeje). Elementos como las Parallel Extensions por ahora en fase CTP serán parte fundamental de C# 4.0 y también se introducirán otra serie de novedades como por ejemplo la adición de construcciones dinámicas al lenguaje.


¡Disfrutadlo!

Windows Drive: Campeones Mundiales de Imagine Cup 2008, Software Design Windows Live Award

De vuelta en casa tras una semana en París compitiendo en la final de Imagine Cup 2008, llega la hora de hacer un resumen al respecto pero, sobre todo, daros la excelente noticia de que por primera vez en los 6 años de existencia de esta competición un equipo de España consigue llegar a lo más alto. He tenido la suerte de vivir esta gran experiencia en primera persona, de la mano de tres grandes amigos y personas de un extraordinario nivel técnico: Carlos Junquera Cachero, Héctor Juan y David Rodríguez. Tres personas que por su gran capacidad de trabajo en grupo, conocimientos técnicos y potencial, son excelentes compañeros a la hora de abordar un proyecto informático en .Net … Tres de esas personas que a cualquier equipo competitivo le gustaría tener.



Bueno, pues con estos tres compañeros hemos logrado el triunfo en la categoría mundial de Windows Live de Imagine Cup 2008. Esta categoría premia a aquellos proyectos software que añadan funcionalidades y servicios a la red Windows Live, mediante el uso de la gran cantidad de APIs de desarrollo que esta plataforma posee. Podéis encontrar más información al respecto en este otro post, en el que hace tiempo os contábamos que habíamos sido seleccionados para la última fase, junto con China y Turquía.


La ceremonia de entrega de premios se celebró en un auditorio en el Museo del Louvre y fue el colofón perfecto para una gran semana en París, durante la cual conocimos a excepcionales estudiantes de todas partes del mundo, gente de Microsoft, jueces provenientes de distintos países y empresas… En resumen, una gran semana en la que hicimos gran cantidad de amigos, y aprendimos un poco de cada uno de ellos, de sus culturas, etc.


Tras más de 2h de ceremonia de entrega de premios en la que se anunciaron los ganadores en las diversas categorías de Imagine Cup (Algoritmia, IT Challenge, Project Hoshimi, Fotografía, Short Film…) llegó la hora de anunciar los ganadores en las dos últimas categorías: Windows Live y Software Design. El encargado de entregar el premio era el mismísimo S. Somasegar, Senior Vice President de Developer Division de Microsoft Corporation y el momento concreto lo podéis ver en el siguiente vídeo, aunque la batería de la cámara nos jugó una mala pasada y se cortó la parte final… Intentaremos conseguir otro vídeo lo antes posible.






Puesto que se corta el discurso de agradecimiento, lo termino aquí en nuestro idioma:



“… Nuestro equipo está formado por tres estudiantes de Oviedo y uno de Alicante, los cuales nunca habrían llegado a conocerse de no ser por la gran iniciativa de los DotNetClubs en España. Nos gustaría dar las gracias a las dos personas responsables de esta iniciativa de Microsoft Iberica: Beatriz Ordóñez y Ethel García-Simón. Sin duda, gran parte de este premio les pertenece a ellas dos, por haber luchado por esta iniciativa y también por la Imagine Cup en España. Por último, muchas gracias a todos por habernos ayudado a convertir uno de nuestros grandes sueños en realidad.”


En los próximos días publicaré un resumen más detallado acerca de nuestro proyecto Windows Drive, ahora que ya terminamos la competición podemos revelar nuestras armas secretas sin reparo alguno, jeje. Además, nos gustaría agradecer a la emisora de televisión Cuatro el apoyo e interés mostrado tanto por Imagine Cup como por nuestro proyecto, nos acompañaron durante los últimos dos días de competición, y realizaron un gran reportaje que podremos ver en la edición de Noticias Cuatro de este sábado día 12 a mediodía… PODEMOS!!!

Pex, herramienta automática para la realizacian de pruebas unitarias en .Net

De todos es sabida la importancia vital de las pruebas unitarias en el proceso de desarrollo de software. Estas pruebas son las primeras que deben realizarse sobre los artefactos software generados por el desarrollador: métodos, clases, etc.


Idealmente, las pruebas unitarias son las únicas realizadas por el desarrollador; del resto de pruebas se encarga el ingeniero de pruebas (tester). Además, difieren del resto (integración, pruebas de carga, pruebas del sistema, etc) en el tipo génerico de pruebas de que se tratan. Mientras que las pruebas realizadas por el tester son pruebas de Caja Negra, las pruebas unitarias realizadas por el desarrollador son pruebas de Caja Blanca. Como siempre, esto dependerá de cada organización o equipo. No obstante, a partir de un nivel TMM 3 (Testing Maturity Model), está claramente realizada esta distinción.


A grandes rasgos, las diferencias entre una y otra radican en que en las pruebas de Caja Blanca podemos “ver” el código mientras que en las de Caja Negra no (de ahí su nombre…). Esto determina los distintos metodos a seguir a la hora de realizar unas pruebas y otras. Las pruebas de Caja Negra se basan esencialmente en probar conjuntos de datos de entrada de todas las clases genéricas posible, y analizar el valor de salida, comprobando el valor real obtenido con el valor esperado. Uno de los métodos más habituales dentro de la categoría de Caja Negra son los métodos de clases/particiones de equivalencia.



Por el contrario, al realizar pruebas de Caja Blanca, debemos llevar a cabo un análisis del código y encargarnos de proporcionar las entradas de prueba necesarias para que todas las ramas del codigo sean probadas de manera adecuada. A este método concreto se le conoce con el nombre de “búsqueda de caminos”.



Dentro de este contexto de pruebas de Caja Blanca basadas en el metodo de búsqueda de caminos, es una labor bastante tediosa el cálculo del grafo de caminos cuando los algoritmos a probar adquieren cierta complejidad… Ante este problema, ahora contamos con una muy valiosa herramienta: Plex, de la cual ya nos habló hace un tiempo el amigo Rodrigo Corral por aquí. Se trata de una herramienta que actualmente está en fase de desarrollo por parte de Microsoft Research, y que tiene la capacidad de explorar nuestro código, encontrar dicho grafo de caminos, seleccionar el subconjunto mínimo suficiente de caminos para probar todas las sentencias de nuestro codigo y, finalmente, generar las entradas representativas necesarias al programa para recorrer todos estos caminos.


En el siguiente vídeo de Channel 9, podemos conocer más cosas acerca de esta valiosa herramienta, de la mano de Nikolai Tillman y Peli de Halleux, dos de los investigadores que trabajan en dicho proyecto.


 




En próximas entradas hablaré acerca de otras técnicas y herramientas valiosas para incrementar la calidad de nuestros desarrollos, así como de las metodologías aplicables a este proceso y la estructura organizativa ideal para los equipos que quieran evolucionar desde niveles básicos TMM a niveles más consolidados en la realización de pruebas de software.


Saludos @ Paris