El futuro de Flash y de ActionScript

Son tiempos de crisis en España y uno tiene que ver como poco a poco sus amigos y compañeros de trabajo van cayendo, uno a uno, en el pozo sin fondo del paro. Algunos de ellos tienen suerte y encuentran otro trabajo a los pocos meses, probablemente peor pagado y trabajando más horas. Otros no. Hasta que un día le toca a uno mismo.

No me entusiasma presumir de ello, pero yo soy uno de los pocos que han tenido suerte. Vuelvo a trabajar después de apenas 6 meses viviendo del paro.

Había asumido que ya nadie quiere programadores en ActionScript y que Flash, al menos en España, había muerto. Me había puesto a estudiar como un poseso otros lenguajes de programación y plataformas de desarrollo orientados, fundamentalmente, al mercado móvil (léase iOS y Android).

Paradójicamente, vuelvo a trabajar como programador de ActionScript, y para clientes que quieren aplicaciones para movil, tablet y pantallas táctiles. No sé al resto, pero a mi esto me lleva a una profunda reflexión. De hecho, en mi empresa no damos abasto, y probablemente tengan que contratar a otro desarrollador pronto.

¿Qué ha pasado? ¿No había muerto Flash? Empeño en ajusticiarlo había, doy fe, ¿No será que no era tan malo como decían?

Cierto es que, de momento, no se volverán a ver páginas web desarrolladas íntegramente en Flash. Y que los molestos banners que nos daban la murga con sonidos estridentes y cuajaban nuestro navegador, ya no estarán producidos en flash.

Pero no os relajéis, ahora estarán montados en HTML5, y os aseguro que seguirán dándonos la murga y cuajando nuestro navegador. Es más, estoy seguro de que harán que la experiencia de navegación sea aún peor en muchas páginas. No me voy a extender en explicaciones técnicas, pero en estos meses he tenido varias entrevistas en las que se pedían desarrolladores experimentados que pudieran resolver los problemas con la publicidad en HTML. ¿Qué problemas? En realidad uno sólo es el gordo. En una página web todos los programas javascript corren en el mismo espacio de nombres por defecto, y en cualquier página en la que se inserte publicidad (o sea banners animados por javascript) empizan a colisionar las variables de unos y de otros, y las librerías que utilizan. Esto no passaba con flash, porque cada banner se ejecutaba dentro de su propio reproductor.

Y es que después de haber seguido todos en rebaño al flautista de Hamelin nos damos cuenta de que todo era un engaño. Que un lenguaje de programación o una plataforma de desarrollo madura, que lleva más de 15 años siendo un estándar para la comunicación multimedia en internet, no puede ser el problema.

Quizá el único defecto, por llamarlo de alguna manera, que se le pueda achacar es ser demasiado potente y demasiado cómoda. Lo suficiente como para permitir que “creativos” sin el background necesario y sin el suficiente interés como para aprender y mejorar en su trabajo llenaran a rebosar la web de contenidos mediocres, mal concebidos, peor aún ejecutados,…
Y aquí volvemos a los problemas con la publicidad en HTML5, los mismos programadores amateurs que hacian banners horrorosos en flash por cuatro duros, ahora los hacen en HTML5 y así nos va. Ese problema que se encuentran, sin ir más lejos los periódicos y revistas en internet, es bien fácil de resolver si cada banner va en su propio espacio de nombres y el programador encapsula las librerías que utiliza en él. Pero como los que lo están haiéndolo no lo saben, y para mi sorpresa me he encontrado con que alguno de los programadores que me han hecho la entrevista tampoco, el resultado es un desastre. No quiero ni pensar los horrores que nos vamos a encontrar cuando empiecen a aparecer herramientas que acerquen la potencia creativa de HTML5 a la de flash.

Pero los programadores mediocres no son lo únicos responsables de la muerte de Flash en la web, lo son más aún los directivos de las empresas en las que trabajaban y los clientes que no exigieron un mínimo nivel de calidad. Los mismos que en unos años matarán el HTML5, Objectve C, Java, el Apple Store o el Google Play si no cambian mucho las cosas.

Cierto es que hay lenguajes mejores y peores para la tarea concreta que se quiere desempeñar, pero espero que cada vez haya más desarrolladores que tengan un mínimo criterio y el poder de convicción necesario para hacer ver a sus clientes y a sus jefes que, pese a lo que lo que dice Steve Jobs o el gurú mediático de turno, por muy famoso que sea, no tiene que ser ni necesariamente cierto ni necesariamente aplicable en todos los ámbitos. Que el único camino que vale es el de una buena formación y un análisis minucioso y ecuánime de cada proyecto.

Lo que la gente piensa que es el HTML5.

Cliente: ¿Y por qué no lo hacemos en HTML5? Así será compatible con todos los navegadores ¿no? Porque Flash es una mierda, ya lo decía Steve Jobs.

Programador: Sigh!

Pues sí, gracias Steve Jobs, por hacernos la vida un poco más complicada a los programadores, especialmente a los que nos hemos estado dedicando a la programación de front-ends en la web.

Poco sentido tiene ya lamentar la caterba de sinsentidos y estupideces que la gente argumenta en contra de Flash, el mal está hecho. Queramos o no, los que vivimos de esto ya nos hemos visto obligados a aprender HTML5 (+javascript +CSS).

Sólo quiero puntualizar una cosa respecto al pasado. Siempre han existido buenos programadores (los que se preocupan por entregar un trabajo bien hecho, por aprender y entender lo que hacen, y por hacerlo cada vez mejor) y chapuzas (la mayoría, siento ser así de pesimista). Juzgar una plataforma de desarrollo (Flash) y los lenguajes de programación asociados a ella (ActionScript y Flex) por los trabajos mal realizados en ella es muy triste.

Respecto al presente, tengo varias cosas que decir. HTML5 no es ninguna panacea. Más bien todo lo contrario (¿hay algún potencial cliente leyéndome?). No se pueden desarrollar aplicaciones en HTML5 por sí sólo. Necesitas combinarlo con CSS y javascript para convertirlo a algo que se parezca remotamente a lo que se puede hacer en Flash. Y por cierto, el nivel general de lo que se escribe por ahí en javascript es todavía más lamentable del que se ve en Flash.

Desde el punto de vista técnico estas son las desventajas:

  • HTML5 no es aún un estandar: Sólo lo soportan las últimas versiones de los navegadores más modernos. Cada uno de ellos lo implementa a su manera, y lo que funciona en unos , no funciona en otros, (o funciona distinto, que es casi peor)
  • Con CSS3 pasa tres cuartos de lo mismo.
  • Con javascript también. Añádase que es un lenguaje basado en prototipos y no en clases. Esto no es en sí una desventaja, pero sí que lo es que la mayoría de los programadores medianamente serios están formados en lenguajes basados en clases. Añádase que no soporta comprobación estricta de tipos (tampoco un gran problema, pero multiplica los errores y complica el desarrollo de aplicaciones complejas). Añádase que es un lenguaje interpretado y que el rendimiento de la aplicación depende del navegador que se utilice para ejecutarla… En fin, no sigo por que la lista es larga.

Concluyendo, y espero que esto sí que lo lea algún cliente, el tiempo de desarrollo se multiplica por un factor que va de 3 a 5, y por tanto el precio también (si es que se espera un mínimo de calidad en el producto).

A pesar de todo esto (y es que soy bastante pesado y cascarrabias) yo estoy feliz con el cambio. Estoy aprendiendo un lenguaje nuevo y eso me divierte. ¿Qué más se puede pedir? No, si al final le voy a tener que dar las gracias a Steve Jobs.