Con la irrupción de los smartphones y tablets de los últimos años y el paso acelerado de parte de la economía tangible a la economía digital, el desarrollo web se ha visto tremendamente fragmentado, sectorizado y disperso en un conjunto cada vez mayor de tecnologías heterogéneas. No es raro que cualquiera que se acerque por primera vez a la programación web sienta cierto vértigo al decidir qué herramientas usar, qué tecnologías emplear. Aquí hay que hacer un auto de fe que en ocasiones te lleva a estudiar a fondo los frameworks más de moda con el riesgo que esto supone.

Muy lejos queda cuando alguien era capaz de definirse como maquetador web o web master (sólo pensar en estos conceptos trasnochados me chirrían los oídos), aunque no es raro que aún se incluyan esos términos en algunos currículums... El panorama ha cambiado radicalmente y ha evolucionado tanto que la industria ahora bendice todo lo que suene a estándar o tecnología no propietaria.

Hoy es tal la cantidad de opciones disponibles para comenzar un nuevo proyecto web que es tremendamente difícil acertar en las más adecuadas dada las características del proyecto. Algunas preguntas recurrentes suelen ser:

  • ¿Me baso en un CMS flexible como Drupal?
  • ¿Lo hago desde cero (...)?
  • ¿Diseño mobile first o desktop first?
  • ¿Evolucionará el proyecto mucho, poco o nada en el futuro?

... y esto si no caemos en el error que querer usar porque sí las tecnologías que más conocemos y que más cómodas nos resultan (por eso de evitar salir de nuestra zona de confort).

Ya el concepto de programador web tiene poco contenido, al menos a mí me dice más bien poco: ¿especialista en front-end, en back-end, en despliegue de infraestructura, en diseño, en usabilidad, SEO, etc.? Me temo que no todo el mundo puede ser excelente en todas esas áreas, de ahí la fragmentación y la realidad ineluctable para la que un proyecto más o menos extenso tenga que contar con perfiles diferenciados.

Desde hace mucho hemos pasado del concepto de página web a aplicación web para la que su desarrollo requiere de habilidades y roles bien distintos:

  • Diseño y usabilidad (user experience o UX). El éxito de cualquier web, sobre todo si se basa en la atracción de tráfico para generación de contenidos o ventas va a depender directamente de un buen diseño y una magnífica usabilidad. Además, hacer un diseño responsive puede ser todo un reto y un trabajo adicional importante a considerar.
  • Front-end, es decir, todo aquello que muestra al usuario final el contenido de la web y le permite interactuar con ella.
  • Back-end: todo lo que se cuece por detrás y que da soporte al front-end: APIs basadas en web services o servicios REST, acceso a base de datos, etc.
  • Si existe una base de datos, su buen diseño y mantenimiento es una tarea relevante.

Necesario pero no suficiente... una aplicación web tiene que ser desplegada en algún entorno e infraestructura IT: ¿servidores web Apache, Nginx, LightTpd, IIS, en la nube con Amazon EC2 o Azure de Microsoft? Esos entornos, lógicamente, tienen que estar bien configurados y correctamente mantenidos y todos son un mundo en sí mismos.

Una vez desplegada la web y en funcionamiento de cara a los usuarios, el trabajo no queda ahí: hay que medir la web tanto en el éxito de su funcionamiento como en el uso que hacen de ella los propios usuarios; es ahí donde interviene la analítica web. Si además al sitio no llega nadie (que vendría a ser algo así como pintar un cuadro maravilloso pero que nadie ve) habría que implantar tácticas SEO y SEM. Es más, esas tácticas se implantan no al final de desarrollo sino también durante el mismo: forman parte del mismo desarrollo del proyecto.

Lo que quiero destacar aquí es el carácter heterogéneo y poliédrico del desarrollo, evolución y mantenimiento de una aplicacion web que queda muy lejos del concepto simplista de quien se autodenomina programador web; así las cosas, mejor definirte en tu propio currículum como experto en ciertas áreas tales como:

  • Experto en front-end basado en Foundation, Bootstrap, etc.
  • Desarrollador de back-ends basados en node.js, APIs REST, ASP.NET Web API, etc.
  • Diseñador especializado en comercio digital, usabilidad y RWD (responsive web design)
  • Administrador de sistemas web basados en tecnologías LAMP.
  • Conocimientos de diseño web y UX.

Anótate esto y ahora mismo ve a cambiar tu currículum indicando un perfil más explícito como los anteriores.

Y, para colmo, ¿qué hay de todos los aspectos sobre seguridad?. La seguridad afecta transversalmente a varios de los roles que hemos identificado anteriormente, de modo que a la lista anterior añadiríamos:

  • Experto / auditor en seguridad web.

De este modo cada vez que me llega un currículum con una línea en donde pone desarrollador web, pues..., la verdad, no sé exactamente qué pensar.

No es sólo cuestión de en qué rol te identificas más o menos, en cual tienes más o menos experiencia, es que, además, para cada uno de ellos las herramientas, tecnologías, frameworks, etc. que existen son extraordinariamente amplias, por lo que podemos caer en el riesgo de especializanos en algún framework que hoy día puede ser muy popular pero del que nadie hable dentro de un tiempo.

Si trabajas en el desarrollo web y tus habilidades, herramientas y tecnologías que conoces son las mismas que hace tres años, aún no te han dicho que vives en la prehistoria y toca reciclarse, además profundamente.

La miríada de conocimientos, librerías y frameworks disponibles para un desarrollador de front-ends, por poner un ejemplo, son tan extensas que te hace dudar realmente de lo que sabes o dejas de saber: Foundation de Zurb, Bootstrap, Semantic UI, Gumby Framework, Javascript (esto es para despistados), CSS3, preprocesadores como Less y Sass, Blueprint CSS y un larguísimo etcétera aparte de pequeñas librerías imprescindibles como jQuery, Modernizr, HTML5Shiv, Respond...

Que haya tantas opciones, algunas excluyentes y otras complementarias en el mismo proyecto es en mi opinión extraordinariamente bueno, ya que así podemos afinar mucho sobre qué usar según las características del proyecto a realizar; sin embargo, tantas opciones pueden tener un lado muy perverso:

  • ¿Tendrán continuidad las librerías / frameworks que elijamos?
  • Si evolucionan, que sin duda lo harán, habrá que tener en cuenta el coste de adaptar y migrar nuestras soluciones ya en producción a las nuevas releases, si es que no queremos que llegue el momento de tener que mantener proyecto con librerías obsoletas dentro de algunos años.
  • Sin duda, si elegimos ciertas librerías nuevas para nosotros, su curva de aprendizaje supondrán un coste a añadir en el desarrollo del proyecto.

Este es un aspecto del desarrollo de software que comento prolijamente en El Libro Negro del Programador: la línea sutil que separa la elección de un buen conjunto de tecnologías y su evolución futura sin comprometer los proyectos cuando estén el produccion.

El desarrollo web es hoy día más poliédrico que nunca, más diverso que hace tan solo dos años y, precisamente por ello, con más opciones de desarrollo profesional que antes. Si te consideras un programador web activo, muy activo, pues enhorabuena, ¡no te vas a aburrir!

¿Por qué leer El Libro Negro del Programador?

Adquirir desde:
Amazon (kindle eBook / papel)
CreateSpace (papel)
PayHip (epub / mobi / pdf)

El libro negro del programador.com
Segunda Edición - 2017

El libro negro del programador.com
Now available in english!

Archivo

Trabajo en...

Mis novelas...