Jueves, 25 de Septiembre de 2008 por climens

Test de Joel, autoevaluación

El otro día llegué a un interesante post sobre qué preguntarle a nuestro futuro empleador en una entrevista. Después de leerlo me di cuenta de que si en una entrevista llego a preguntar todo eso y encima valoro las respuestas que me dan, no sé sin encontraría trabajo en el inframundo del desarrollo de software (si trabajas en un sitio que cumple, por ejemplo, 8 de los 12 puntos, por favor ¡contrátame!), por lo menos en España.

Lo importante en definitiva es que se basa en The Joel Test: 12 Steps to Better Code (versión en español). Son 12 sencillas preguntas que esconden toda una filosofía de buenas prácticas deseables en cualquier entorno de desarrollo. También googleando he encontrado un excelente artículo sobre estas 12 preguntas aplicadas al desarrollo web. Estas son:

  1. ¿Usas control de versiones?
  2. ¿Puedes tener listo el producto en un solo paso?
  3. ¿Compilas el producto a diario?
  4. ¿Tienes una base de datos de errores?
  5. ¿Solucionas los errores antes de escribir nuevo código?
  6. ¿Tienes una planificación actualizada?
  7. ¿Tienes unas especificaciones?
  8. ¿Tienen los programadores un entorno de trabajo tranquilo?
  9. ¿Tienes las mejores herramientas que puedes comprar?
  10. ¿Tienes testers?
  11. ¿Escriben código los candidatos durante su entrevista?
  12. ¿Haces pruebas de usabilidad de "vestibulo"? (O sea, a cualquiera que pase por allí y esté dispuesto)

Aunque en realidad se podrían hacer muchas más, si se realizan la mayoría de ellas probablemente se esté trabajando de forma decente. Si no, la cosa se puede poner complicada: posiblemente vives diariamente en un infierno incomprensible.

Ahora toca la parte complicada. ¿Qué nota sacamos en mi empleo actual? Vamos a ver

  1. Sí, desde hace un tiempo y por supuesto para nuevos desarrollos. Subversion que no es ni el mejor ni el peor pero tiene herramientas chulas como TortoiseSVN y VisualSVN. Además está bastante extendido y se encuentra fácilmente soporte y ayuda.
  2. No, de momento. Es algo necesario y está planificado. Supuestamente con MsBuild o Nant lo podemos conseguir.
  3. Sí. Para el producto actual usamos TeamCity con cierto éxito, gratuita para pequeños grupos. Eso sí, faltan aun los scripts completos del paso 2.
  4. Sí, usamos Redmine y una herramienta interna (bastante inservible, la verdad), aunque no se si el Redmine me acaba de gustar del todo. En fin, mientras tengamos todos los errores registrados bueno es.
  5. Más o menos. A veces el tiempo apremia, pero se debería hacer. La compilación del paso 3 comprueba los tests unitarios, lo que no significa que encuentre todos los bugs, obviamente.
  6. Sí, lo intentamos, aunque a veces vamos dando palos de ciego sin saber muy bien el rumbo.
  7. Eso creo. El flujo de generación de especificaciones es bastante malo, por lo que muchas veces no son lo suficientemente rigurosas ni explícitas.
  8. Depende de la oficina. En la que yo estoy es excelente.
  9. No. Siempre hay pegas para adquirir herramientas pero estamos mejorando.
  10. No oficialmente. Se prueban las cosas bastante mal y sin rigor.
  11. No, lo que me atañe y voy a ver qué puedo hacer al respecto. De momento me leere la Guerrilla Guide to Interviewing a ver qué saco de interesante.
  12. No. Parece que ahora quieren contratar a unos expertos en usabilidad para guiarnos, aun así dudo que se realicen pruebas de este tipo

Así que mi JoelScore(tm) es de unos 6/12. Aprobado raspadillo y por los puntos 1, 3 y 4, lo cual no es por tirarme flores, pero creo que he contribuido bastante a instaurar estas herramientas y procesos. A ver si el año que viene llegamos a 8 o 9/12, lo que estaría bastante bien.

En resumen, aconsejo a todo el mundo que trabaja en este mundillo que lea las preguntas, que lea lo que significan las preguntas y se autoanalice para ver en qué estado está y qué puede hacer por mejorarlo.

Compartir | meneame | fresqui | del.icio.us | digg | technorati
Tags: , , | Sin comentarios

Martes, 16 de Septiembre de 2008 por climens

La ignorancia

Ayer me quejé a mi banco online de que había una operación que no podía realizar a través de mi Mac, ya que solamente funcionaba con Internet Explorer y obviamente es un producto que no está disponible para mi plataforma. Esta fue su respuesta:

  • Resolución de Pantalla: 800 x 600 píxeles.
  • El acceso lo puede realizar con los navegadores Microsoft Internet Explorer versión 5.5 y Netscape Navigator 6.0.
  • La intensidad de cifrado del navegador ha de ser, como mínimo, de 128 bits.

No contentos con eso, además añaden:

Así mismo le recomendamos la instalación de las últimas versiones de dichos navegadores, para que pueda aprovechar al máximo todas las posibilidades que le ofrecemos.

Realmente algo complicado, ya que hace ya algún tiempo que Netscape dejó de estar disponible y la versión 6.0, además de ser altamente inestable, apareció en el año 2000. Sin comentarios. Por no decir que Explorer 5.5 también apareció ese año para versiones de Windows anteriores a XP, que aun no existía. Así que dudo bastante que su aplicación funcione en ninguno de esos dos navegadores.

Así que ni corto ni perezoso les indiqué que no me resultaba posible conseguir ninguno de esos navegadores en mi Mac, pero que tenía Safari y Firefox, siendo este último el segundo navegador más usado y que merecía ser considerado como tal y estar soportado ya que está disponible en multitud de plataformas a parte de Windows.

Y esta fue la respuesta:

En primer lugar agradecemos su sugerencia y damos traslado de la misma a nuestros servicios centrales para su valoración y posible implementación.

Se agradece, pero lo mejor viene a continuación:

Asimismo, le informamos de que la página ----- está optimizada para trabajar con PC.

Esto ya es lo último. ¿Cómo de optimiza una web para trabajar con un hardware completo? Podría alegar que mi Mac es un PC dado que pocas diferencias tiene con uno de estos ahora que es 100% Intel, salvo el sistema operativo. Veo que mucha gente sigue asociando PC = Windows, lo que ya sabía pero no es lo que espero de un servicio de atención de un banco online.

En resumen: hay que dar soporte a Firefox como poco en todas las aplicaciones web ya que es la única manera de asegurarse que casi cualquier persona podrá disfrutarlas en cualquier plataforma independientemente de su sexo, religión o condición social. Y no solo eso, sino que debería ser considerado como un tipo de discriminación y penalizado como tal. Además, con la aparición de Chrome es posible que el mercado de los navegadores de haga más heterogéneo con el tiempo.

Y otro consejo: que nadie ponga en 2008 que la web está optimizada para Explorer 5.5 y Netscape 6.0 porque es sencillamente mentira.

Compartir | meneame | fresqui | del.icio.us | digg | technorati
Tags: , , , | 4 comentarios

Jueves, 22 de Mayo de 2008 por climens

La impedancia de los WebForms

El otro día leí un estupendo artículo sobre la difícil mantenibilidad de los WebForms de ASP.NET. Realmente expone las frustraciones a las que nos enfrontamos muchos programadores que trabajamos con esta tecnología de Microsoft, especialmente los que venimos del mundo puramente web y raramente hemos trabajado en VB6 o WinForms.
Entre los motivos que se exponen son los siguientes:

  • Algunas cosas sencillas, patrones típicos de HTML/Javascript cuestan mucho o son casi imposibles
  • No hay ningún control sobre el HTML generado, dificultando especialmente la conciliación con el diseño original
  • Los controles reciben IDs tediosos de manejar desde Javascript, que además cambian si se cambia el control de contenedor
  • Los controles a veces no funcionan como deberían y hay que ir investigando porqué se comportan como lo hacen

Yo al final opto muchas veces por usar repeaters, simples y sencillos. Dibujan el HTML tal cual está previsto y así sale todo como está previsto, pero claro, luego vienen los problemas cuando hay que anidar unos dentro de otros: ni se me ocurre abrir el diseñador.

En esta línea, hoy han publicado una continuación hablando del modelo web, lo que conocemos de toda la vida:

  • HTTP
  • Cookies
  • (X)HTML
  • CSS
  • JavaScript

Una vez entendido es bastante sencillo. Tiene sus inconvenientes pero todo se deriva de la naturaleza del HTTP, donde cada llamada es completamente independiente de la anterior. Eso obligó a crear las cookies y desde el renacimiento del Javascript gracias a la explosión de AJAX conforman un conjunto bastante completo conocido por una infinidad de desarrolladores web alrededor del mundo.

Por lo tanto, para reducir las diferencias entre la programación Windows y la web, los programadores de Microsoft se inventaron:

  • Los postbacks
  • El ViewState
  • El ciclo de vida

Y así nacieron los WebForms. Decidieron reinventar la rueda para captar a los clásicos programadores de VB6 que empezaban en la web cuando apareció el .NET Framework y el Visual Studio .NET por allá por 2003. Pero a los que veníamos de ASP no nos ofrecieron en realidad una continuidad con el medio que conocemos y que por más que pase el tiempo no acabamos de comprender el nuevo modelo pensando que "antes era más sencillo". No es lo que yo llamo progreso.

Un ejemplo reciente: me preguntaron porque si movían opciones de un ListBox a otro por Javascript y luego hacían un Request para recoger el valor de la lista en la acción, devolvía null. Pues simplemente porque ese tipo de controles meten su valor en el ViewState para "completar" la información que HTML por sí mismo no da. Así que la solución es copiar el valor en un campo oculto y luego recogerlo, teniendo que hacer manualmente lo que ASP.NET hace automáticamente solamente porque usando los eventos de .NET, cada movimiento entre listas obliga a recargar la página (no con AJAX, pero el problema es parecido). Y con razón me dicen que antes era más sencillo. No les puedo decir que no.

Así que tengo esperanza en los frameworks MVC. He probado MonoRail y los resultados han sido muy positivos: todo bien separado, diseño tal cual había sido concebido por los creativos, testeo de cada una de las partes, etc. Ahora va haciendo camino ASP.NET MVC (y en Codeplex con código fuente y ejemplos), que no es ni mejor ni peor pero probablemente sea más fácil convencer a las altas esferas si lleva el ADN de Microsoft y no el de Open Source (es lo que tiene el vendor lock-in). En cualquier caso, sea con uno o con otro, creo que es el camino a seguir para librarse definitivamente de los WebForms y volver a jugar en terreno conocido.

Via | Working with the web model [lostechies.com]

Compartir | meneame | fresqui | del.icio.us | digg | technorati
Tags: , , , , , | Sin comentarios