¿Viste cuando una de las personas que más admirás te plantea un desafío? Bueno, de eso se trata este post, respondiendo a un planteo que me hizo Michael Bolton luego que le hice una pregunta en el webinar que dio en TestingUY. Lo que le pregunté fue cuál era su metodología para investigar y escribir sobre un tema, y él aludió a que yo habiendo hecho un doctorado seguramente tenga más claro cómo hacer eso que él, y que le gustaría ver algún artículo mío al respecto. Así que acá va: tips para mejorar tu forma de investigar (basado en lo que aprendí en mi tesis al hacer una Revisión Sistemática de la Literatura para analizar el estado del arte).
Acá está el video completo pero en particular te lo dejo ya apuntando a cuando me responde la pregunta 🙂
De lo que más destaco de la respuesta de Michael, es que hace referencia a algo que también leí de Jerry Weinberg, es que una excelente forma de aprender sobre algo es escribiendo al respecto. Lo ampliaría un poco más y me animo a decir que:
Una excelente forma de aprender algo es tener que explicarlo, ya sea en un artículo o en una charla, curso, o incluso contándoselo a alguien más de manera distendida.
Una de las cosas que más me sirvieron de esos tres años que dediqué a hacer el doctorado en España no fue relacionado al tema en sí de investigación (que fue Model-driven Testing) sino que fue relacionado a las metodologías y enfoques de investigación. En este post quiero compartir algunas prácticas que pueden ser útiles al investigar cualquier cosa, que a mí me sirvieron al hacer el estado del arte de mi tesis y hoy en día las tengo incorporadas hasta cuando busco una receta para cocinar algo (cosa que hago muy a menudo).
El artículo me quedó algo largo pero creo que para entender el proceso vale la pena, ahora, si querés ir al grano de lo que te puede servir, andá a la última sección.
Investigación de mi tesis
Del 2011 al 2014 estuve viviendo en España, en una pequeña ciudad universitaria de Castilla-La Mancha llamada Ciudad Real, bajo la tutoría de Macario Polo Usaola y Beatriz Pérez Lamancha en el grupo Alarcos dirigido por Mario Piattini. También hice una pasantía de 3 meses en un instituto de investigación en la ciudad de Pisa, en Italia, de la mano de Antonia Bertolino (la autora del famoso artículo Software Testing Research: Achievements, Challenges, Dreams).
Como en toda tesis, o en toda investigación, antes de hacer algo es mejor ver si alguien más ya no lo hizo 🙂 y acá es donde es útil hacer una Revisión Sistemática de la Literatura.
Revisión sistemática de la literatura
Lo que se suele hacer es una investigación del estado del arte, y algo que en el equipo donde estudié insistían mucho era de hacer esa investigación siguiendo un método que ayude a ordenar el proceso.
Hacer una revisión de la literatura es algo muy complejo dado que hay muchas fuentes y los resultados de búsqueda de temas relacionados al tuyo pueden traerte cientos de resultados. Por esto es que algunos investigadores han propuesto metodología para hacer esto en forma ordenada, y en particular el que nos enseñaban en la UCLM y que tengo como base para compartir es el método de revisión sistemática de literatura (SLR – systematic literature review) propuesto por Bárbara Kitchenham (si querés leer más del método, este es su artículo más referenciado: Guidelines for performing Systematic Literature Reviews in Software Engineering (2007)).
Lo importante es seguir un protocolo de búsqueda. Esto es lo que digo que en principio hay que entender, poner en práctica rigurosamente alguna que otra vez, pero luego terminamos haciéndolo en forma bastante natural.
Protocolo de búsqueda
Lo que plantea la metodología de Revisión Sistemática de la Literatura es que primero debemos definir el proceso que vamos a seguir, porque de otro modo les aseguro que va a ser muy complicado. Si hoy tuviera que hacer otra investigación para el estado del arte de una tesis, lo haría muy distinto y le prestaría mucha más atención a hacerlo en forma ordenada, tomando notas y no perdiendo registro de cada paso. Te dejo acá un poco esquemático y resumido el proceso que yo me había definido en aquel entonces basado en lo que nos enseñaron de la propuesta de Bárbara Kitchenham.
Cuestiones de investigación:
- Primero que nada necesitamos definir preguntas que quiero responder.
- Por ejemplo: ¿qué propuestas existen para generar automáticamente datos de prueba para sistemas que manejan bases de datos? ¿Existen enfoques de Model-driven testing para esto?
- Para enmarcar la búsqueda es necesario definir el contexto, en qué área estaremos investigando. Por ejemplo, dentro de la Ingeniería de Software, dentro del Testing de Software, específicamente el Model-driven testing.
- Deberíamos imaginarnos cuáles son los resultados esperados de nuestra búsqueda.
- Luego, definir keywords, para lo cual también conviene pensar en sinónimos.
- Con las distintas keywords podremos armar la cadena de búsqueda . Para esto se usan las keywords conectando con operadores ANDs y ORs y quizá eliminando resultados que contengan keywords que puedan entorpecer nuestros resultados. Esto depende un poco de los motores donde se estén haciendo las búsquedas. Ejemplo de keywords: “testing”, “quality assurance” (por más que no me guste, hay que pensar en cómo otros escriben al respecto), “quality control”, “model driven”, “model based”, “data generation”, “populate”. En este ejemplo me fue necesario buscar formas de eliminar resultados que tengan que ver con medicina, ya que existen artículos médicos que incluyen palabras como “testing” y “population” por ejemplo.
- Para el éxito de esta etapa creo que es conveniente, si no se tiene un conocimiento amplio en el tema a investigar, adoptar un enfoque exploratorio, iterando y refinando a medida se van encontrando y ojeando los primeros resultados.
Qué y dónde buscar:
- En nuestra vida cotidiana será Google o similar.
- En el mundo académico, se suelen usar bibliotecas digitales donde se publican artículos y revistas de carácter científico.
- En mi caso las fuentes que utilicé para la tesis fueron Scopus, ACM, IEEE, etc.
Estrategia de búsqueda:
- Antes de comenzar a buscar se deben tener claros los Criterios de inclusión y exclusión. Algún ejemplo de criterio de inclusión podría ser revisar que habla de software testing, que cuenta una experiencia real, que muestra un enfoque novedoso. Algún ejemplo de criterio de exclusión podría ser que sea un artículo duplicado o similar a uno ya analizado de los mismos autores, que esté en un idioma que no comprendo, que sea muy sesgado a una herramienta comercial, que falten fundamentos o referencias o validación de lo propuesto.
- Para ordenar el proceso se suele utilizar un formulario de extracción, el cual debe ser diseñado pensando en todos los datos que queremos almacenar y luego procesar de los resultados. Generalmente se arma una planilla y se van cargando los resultados y se van analizando con los criterios definidos. Por ejemplo, vamos a querer guardar la fuente, fecha de extracción, link, autores, herramientas propuestas, si cuenta con aplicación práctica, si cuenta con validación estadística, si cuenta con caso de estudio, etc.
Ejecución de la búsqueda:
- Luego que tenemos todo el protocolo definido, ejecutamos la búsqueda. Los resultados los vamos a cargar al formulario de extracción que definimos. De esta forma vamos a tener una planilla con todos los títulos, abstracts y links a los artículos completos que encontramos. Para gestionar esa búsqueda y tener claro por qué incluimos o descartamos un artículo, una forma puede ser tener una columna “descartado por título”, “descartado por abstract”, etc, donde se haga referencia a cuál fue el criterio de exclusión que me hace descartar.
- Vamos a ir iterando y aplicando los criterios de inclusión y exclusión en este orden:
- Revisión de títulos.
- Revisión de abstracts.
- Revisión del paper entero.
- Otra cosa que se suele hacer es analizar las referencias de los artículos seleccionados para ver si hay más trabajos relevantes a considerar que no hayan caído dentro de la búsqueda. Ojo, si algún artículo interesante no entró en nuestra búsqueda, tal vez eso muestra que nuestra cadena de búsqueda o nuestras keywords no están bien.
- Otra forma de analizar más publicaciones que pueden ser interesantes, es buscando quién ha citado los artículos relevantes seleccionados (porque puede que estén trabajando algo similar). Esto es algo que los motores de búsqueda suelen darlo.
- Además, sería interesante buscar más trabajos de los mismos autores porque posiblemente sean sobre el tema de interés.
Análisis de resultados:
- Analizar los resultados aprovechando los datos que tenemos en la planilla con todos los datos que obtuvimos de los artículos analizados. Por ejemplo, podríamos mostrar la cantidad de artículos publicados sobre el tema por año, por país, o por algún criterio o categoría de interés.
- Con esto se puede analizar la tendencia y así concluir si es un tema que se está volviendo cada vez más relevante o no.
- Luego del análisis general, podemos hacer un análisis crítico individualizado, estudiando cada artículo de los que pasaron todos los criterios de inclusión y exclusión. Si hicimos las cosas bien, esos artículos serán los que abordan el tema de interés y son los que me permiten finalmente entender cuál es el estado del arte.
- Parte de este análisis implicará analizar pros y contras de cada solución, buscando a su vez gaps o huecos en estas propuestas, ya que al final lo que se busca hacer al estudiar el estado del arte es ver qué puedo investigar yo que no hayan investigado otros.
¿Qué es aplicable a la vida cotidiana?
Algunas cosas para destacar del proceso de Revisión Sistemática de la Literatura que son interesantes a considerar en el día a día de nuestras rutinas laborales:
- Antes de buscar algo, pensar bien las keywords, sinónimos, elementos a eliminar de la búsqueda, y armar la cadena de búsqueda. Podemos iterar haciendo variaciones a medida que vemos si la búsqueda nos retorna los resultados que queremos o no.
- Antes de leer los resultados, pensar de antemano en qué cosas hacen que un resultado NO sea relevante. Por ejemplo, busco una receta para hacer un pan de banana, pero no tengo huevos, así que las recetas que lleven huevo no me van a servir, eso es un criterio de exclusión. Otro ejemplo sería que haya que pagar o suscribirse para acceder al artículo, otro podría ser que en lugar de una receta escrita me quieran mostrar un video y justo no tengo tiempo para eso, quiero el texto y ver las cantidades, ¡nada más!.
- Pensar en qué cosas hacen que el resultado sea relevante para mí, lo cual serían los criterios de inclusión. Por ejemplo, es de un sitio de recetas reconocido, detalla las cantidades de cada ingrediente, muestra fotos del proceso y del resultado.
- No creo que sea práctico bajar la lista de resultados a una planilla cada vez que hacemos una búsqueda tal como mostré que lo hacía con el proceso. De todos modos, creo que lo que sí podemos hacer es dejar abierta la pestaña con los resultados de búsqueda e ir abriendo los resultados que nos parecen interesantes en otras pestañas. Eso lo veo más ordenado a abrir uno, ir para atrás, abrir otro, y así. De esta forma estamos aplicando los criterios de inclusión y exclusión primero al título y a la descripción (o sea, las primeras frases que nos muestra Google) y luego analizamos el contenido completo. Yo suelo ordenar esta exploración página por página de resultados, o sea, miro toda la primera página de resultados de Google y abro los que pueden ser interesantes. Luego reviso cada uno en detalle y después de haber terminado con esos, voy a la segunda página (si es que es necesario seguir). Por esto me parece importante haber dejado abierta la página con los resultados.
- Este proceso se puede hacer iterativo, analizando qué tan bien o no funcionó la búsqueda y así ir mejorando las keywords.
- Además, una buena práctica es revisar referencias de los artículos que parezcan interesantes (misma estrategia, abrir en otras tabs).
- No descartaría intentar contactar a quienes hayan escrito el artículo, ver qué cosas publica en Twitter, Quora o Linkedin. Algo que mencionaba Michael Bolton en su respuesta, es que al contactar a la gente pidiéndole información sobre sus artículos, generalmente van a responder contentos, porque estarán viendo que lo que escribieron generó interés y está siendo de utilidad para alguien.
La complicación particular que hay al aplicar el sistema en una búsqueda en Google, es que la finalización de la búsqueda no está determinada. O sea, generalmente se analizan TODOS los resultados de la búsqueda. Pero las búsquedas de Google generalmente dan miles y miles de resultados, con lo cual no es viable y no vale la pena. Ahora, ¿cuántas páginas reviso, solo la primera, las dos primeras, las 10 primeras? Creo que depende de la importancia de lo que estamos analizando, así como de qué tan relevantes siguen siendo los artículos a medida sigo pasando resultados en Google. Muchas veces los resultados se van por las ramas o terminan siendo artículos muy similares entre ellos que ya no aportan nada de valor. Acá creo que uno termina confiando en que Google mostrará el contenido más relevante primero, basando su algoritmo en cuestiones como qué tan referenciado por otros es un artículo, qué tanto contenido tiene y otras cuestiones que los que están en el mundillo del SEO lo tienen bien claro.
Me parece que esto de investigar está sumamente vinculado con el testing, donde podemos utilizar y entrenar nuestras habilidades de explorar, hacer preguntas, pensar cómo jugar con las entradas (claves de búsqueda) para obtener distintas salidas (resultados).
Tremendo post Fede! Si será importante explorar e investigar de forma adecuada para llegar a la información correcta!
Gracias por compartir.
Interesante articulo, es una buena guía para la utilización de motores de búsqueda y para la planificación de una investigación. Si bien uno ya tiene una intuición de como hacer esto, este artículo lo expresa más formalmente y fácil de entender.
Muy buen artículo! Muy útil