Featured image

A qué me dedico… la eterna pregunta Link to heading

Nota
En este post trato de explicar mi profesión a cualquiera que no pertenezca al mundo del desarrollo de software. Si trabajas en el ámbito del desarrollo de software las siguientes líneas no te aportarán demasiado, no obstante te invito a que lo leas de todas formas, siempre hay algo que se puede aprender o alguna creencia que se puede desmitificar.

No falla. No hay comida, cena o encuentro que haga con familiares, amigos o nuevos contactos donde no surja el que es hoy por hoy el mayor misterio de la humanidad:

  • “Pero… ¿Tú qué haces exactamente?”
  • “¿Qué es eso de QA?”
  • “Oye, ¿pero tú sabes hackear?”

No os voy a culpar. El mundo evoluciona rápidamente y surgen nuevos trabajos y profesiones continuamente. Antes decías que eras bombero, futbolista o médico y la gente entendía perfectamente lo que hacías. Ahora tenemos influencers, data analysts, youtubers, community managers e incluso cloud engineers (ingenieros de la nube, que poco tienen que ver con el hombre del tiempo). QA o QA Automation es algo más antiguo de lo que parece, pero no obstante pertenece al mundo del desarrollo de software que aunque cada vez puede sonar con más frecuencia sigue siendo un poco desconocido en nuestros días.

Para explicar bien cuál es mi profesión os propongo un juego, un ejemplo con el que seguro entenderéis por donde van los tiros.

El “tester” manual Link to heading

Imagina la construcción de un restaurante que se está preparando para su apertura el próximo verano. El dueño del restaurante ordena la preparación de todos los detalles del local y además encarga unos platos que quiere incluir en la carta para la fecha de la apertura. El chef junto al equipo de cocina se encargan de elaborar los platos de muestra y tú eres el/la afortunado/a de probar cada uno de esos platos. Te piden que evalúes varios aspectos:

  1. Que los platos son exactamente lo que el dueño del restaurante le ha pedido al equipo de cocina.
  2. Que los platos se pueden comer y que estos estén ricos.
  3. Por último, el dueño también quiere que cada plato esté perfectamente presentado.

“Un plato gourmet bellamente presentado sobre un plato blanco, con ingredientes coloridos artísticamente dispuestos y decorados con guarniciones, sobre una mesa de madera con iluminación natural suave creando una atmósfera de comedor elegante”

Tú debes evaluar cada uno de esos aspectos, si por ejemplo te presentan correctamente un plato que se puede comer y está rico pero el cocinero en lugar de prepararte un potaje con garbanzos como quería el dueño te ha dado para comer una lubina con patatas lo tendrás que devolver. “Esto debía ser un potaje con garbanzos, no una lubina con patatas”. El cocinero tendrá que volver a realizar el plato y tendrá que cumplir los 3 aspectos anteriores.

Aquí podríamos decir que eres un “tester”, la persona que se dedica a probar cada plato y garantice que cumple con los aspectos solicitados.

El “tester” que sabe programar Link to heading

Los cocineros tienen que perfeccionar sus platos además de ampliar la carta con nuevos platos que el dueño del restaurante quiere incorporar. Rápidamente te das cuenta de que no das abasto, que estás probando platos todo el día y verificando demasiadas cosas. Los platos se te acumulan y te desquicias. Le pides al dueño del restaurante ayuda para probar los platos, pero él no tiene tiempo y tampoco quiere contratar personal que se dedique únicamente a probar platos.

Entonces se te ocurre una idea: Resulta que eres un “manitas” capaz de diseñar y construir un robot y le ordenas a este que evalúe los platos de la misma manera de como lo harías tú (sé que suena a ficción, pero imaginémoslo 😁). El robot no necesita descansar y puede evaluar todo lo que tú hacías mucho más rápido que tú por lo que empieza a quitarte muchísimo trabajo. Tú solo debes preocuparte de que este funciona correctamente. ¡Enhorabuena! ¡Te has convertido en un “tester” superproductivo!

De evaluar el plato a mirar a la cocina - ¿Cómo mejoramos la calidad de nuestros platos? (QA Automation) Link to heading

“Una imagen de una cocina con dos cocineros cocinando”

Con el tiempo tú y tu robot sois tremendamente eficientes y eres capaz de evaluar muchísimos platos y aspectos diferentes según lo requiere el dueño del restaurante. Sin embargo te percatas de que con bastante frecuencia tienes que devolver los platos a cocina porque estos no están cumpliendo con las exigencias demandadas. Te acercas a la cocina para preguntar qué está ocurriendo y descubres algunos problemas:

  • Los cocineros no tienen claro qué cocinar porque no entienden lo que el dueño les está pidiendo y que debe cumplir cada plato.
  • Los cocineros tampoco tienen forma de probar la comida mientras cocinan, lo que les ayudaría mucho para comprobar la textura, el punto de sal o el punto de cocción de los alimentos que se requiere en la receta.
  • Los cocineros también están teniendo problemas con los proveedores. Mientras que ellos piden tomates y patatas para cocinar las recetas el suministrador les está trayendo zanahorias y apio, que no es lo que ellos han pedido y por lo tanto no los pueden usar para cocinar.
  • También a los cocineros les encantaría saber si el plato cumple con todo lo necesario antes de que este salga de la cocina, para que en ese caso tengan tiempo de arreglar el plato antes de enviarlo a la mesa.

Todos estos problemas no tienen nada que ver con el plato en sí, pero sin duda afectan al resultado de cada plato (y por ende, a la calidad del plato en sí mismo). Es en este punto en el que descubres que factores como los procesos o como las herramientas con las que trabaja el equipo son las que terminan impactando en gran medida al resultado final: al plato que termina en la mesa del comensal.

Sin duda, resolver los problemas surgidos en cocina es vital para hacer que los platos cumplan con los niveles de calidad exigidos. Con tu experiencia decides:

  • Colaboras con el dueño del local y el equipo de cocineros para que queden claros tanto los platos como los aspectos que estos deben cumplir.
  • Diseñas y construyes robots que ayudan a los cocineros a averiguar si los platos están cumpliendo con algunos de los aspectos requeridos mientras cocinan.
  • Colaboras con cocina y el suministrador para que quede claro qué ingredientes necesitamos para cocinar los platos y ayudas a diseñar algún robot que permita comprobar que este contrato con el suministrador se mantiene correctamente.
  • Facilitas al equipo de cocina todas las herramientas que pudieran necesitar para que ellos mismos puedan evaluar los platos antes de que estos se envíen a la mesa.

Mi papel en la calidad del software Link to heading

Pueden sonar confusas las acciones finales del ejemplo del restaurante, pero nos sirven para entender que para ayudar a resolver los problemas de calidad que sufría el restaurante hemos tenido que ayudar y colaborar conjuntamente con otras partes del equipo (dueño, cocina, suministros) para mejorar los procesos y las herramientas porque con ello obtendríamos una mayor calidad en los platos que saldrían a las mesas, contribuyendo a la satisfacción de los clientes y del dueño del restaurante.

Volviendo al mundo real, desarrollar software podría ser similar a llevar un restaurante y un programador que escribe líneas de código podría reflejarse en un cocinero que debe cocinar el plato. Y como podéis deducir a estas alturas, en el desarrollo de software podemos encontrarnos problemas similares a los que menciono en el ejemplo del restaurante.

No soy un programador que crea software y tampoco soy quien describe al programador lo que tiene que hacer, pero como QA Automation me dedico a investigar y evaluar aquellos procesos, herramientas y metodologías que impactan en la calidad del producto en sí mismo. También puedo ser capaz tanto de realizar las pruebas necesarias yo mismo para validar el software como de automatizar programando una prueba para que lo haga por mí o el equipo de desarrollo (haciendo que seamos mucho más eficientes y productivos).

Espero que alguna duda haya logrado disipar a todos los que hayáis logrado llegar hasta aquí y espero que algo de todo lo que he dicho os ayude a comprender no solo a qué me dedico sino a que hayáis podido aprender algo nuevo con ello. El mundo del desarrollo de software es extenso y complejo y aunque humildemente considero que sé muchas más cosas que hace algunos años cuando empecé a dedicarme a esto el futuro que nos espera es ilusionante y desafiante día tras día. Quién sabe si estaré listo para ello, de lo que estoy 100% seguro es que pienso compartir este post la próxima vez que alguien me pregunte cuál es mi trabajo.