¿Qué elementos UX puede cambiar el equipo de Quora en la aplicación de iPhone sin hacer un lanzamiento de la App Store?

Mejoramos constantemente la experiencia de usuario de nuestros productos móviles y web para ayudarlos a que funcionen mejor para las personas que usan Quora, y ejecutar pruebas A / B para comprender el impacto de nuestros cambios es una parte importante de ese proceso. Tanto nuestras aplicaciones para iPhone como Android son capaces de ejecutar Javascript a través de navegadores web integrados llamados webviews, y aprovechamos eso para hacer grandes cambios sin los lanzamientos de App / Play Store. (Puede leer más sobre nuestro enfoque híbrido en Reconstruyendo Quora para iPhone desde la base de Tommy MacWilliam en Ingeniería en Quora).

Echemos un vistazo a algunos ejemplos, comenzando por la primera vez que abre la aplicación:


Todo lo que toca la luz en esta pantalla se puede probar A / B sin una nueva versión de la aplicación. Es decir, esta pantalla es esencialmente una vista web de pantalla completa, que representa el contenido que generamos en nuestros servidores. Tenemos una buena cantidad de código nativo para manejar todas las interacciones relacionadas con OAuth, pero podemos cambiar cualquier cosa en esa página sin un lanzamiento del cliente. Este enfoque nos permite ejecutar fácilmente pruebas A / B cerradas en nuestros productos móviles.

Después de iniciar sesión, será llevado a su feed. Aquí hay un desglose de lo que se implementa usando código nativo y código web en nuestra aplicación iOS:


Podemos probar libremente A / B todo en el cuadro verde sin ninguna versión del cliente, mientras que los componentes contenidos dentro de los cuadros azules pueden requerir una versión de la App Store. Cuando presiona el botón en la esquina superior izquierda que dice “Feeds”, por ejemplo, se activa un evento nativo, lo que significa que no podemos cambiar esa interacción sin un lanzamiento de la App Store. Pero, ese evento nativo se desliza hacia abajo en una nueva UIView que contiene otra vista web, por lo que podemos probar A / B lo que se muestra dentro de la vista.


Sin embargo, algo implementado en código nativo no significa necesariamente que no podamos cambiarlo sin un lanzamiento de la App / Play Store. Cuando creamos nuevos componentes, a menudo incluimos “ganchos” que permiten modificarlos a través de Javascript. Por ejemplo, las pestañas en la parte inferior de las capturas de pantalla anteriores son componentes nativos, pero cuando los desarrollamos, incluimos una funcionalidad que permite que su texto se muestre sin tocar ningún código nativo. Los usuarios de Quora particularmente inteligentes pueden haber notado que cuando probamos y lanzamos la página de escritura (Escribir página por Henry Modisett en el blog de Quora), no lanzamos una nueva versión de la aplicación a pesar de que los componentes nativos se vieron significativamente afectados. Esto se debe a que ya teníamos toda la funcionalidad nativa que necesitábamos, hasta cambiar el texto nativo que decía “Preguntas abiertas” a “Escribir” en la barra de pestañas.

Además de pequeños cambios como texto nuevo, también podemos construir y probar A / B flujos bastante complejos sin una nueva versión. Digamos que queríamos ejecutar una prueba A / B en la función “Su contenido”. ¿Qué podríamos hacer sin una versión nativa?


Como fue el caso con el feed, todo lo que se encuentra entre la barra de navegación y la barra de pestañas es contenido web generado en nuestros servidores, por lo que podemos hacer lo que queramos con el idioma, el diseño, el color, el tamaño, etc. El título que se muestra en la barra de navegación utiliza un componente nativo, pero podemos modificarlo usando Javascript, por lo que no necesitamos una versión nativa. Lo mismo con el botón en la parte superior derecha: Javascript decide qué texto se muestra en el botón, por lo que también podríamos ejecutar una prueba A / B en ese idioma. Cuando presionas ese botón, se te presenta un modal que se ve así:

Absolutamente todo lo que ve en esta pantalla puede modificarse sin un lanzamiento: el contenido principal, el texto del botón, el texto del título, el comportamiento del botón, etc. De hecho, podemos modificar lo que sucede cuando presionas cualquier botón nativo sin un lanzamiento de App / Play Store. Entonces, por ejemplo, si quisiéramos probar A / B empujando una página en la pila de navegación en lugar de mostrar un modal, no necesitaríamos un lanzamiento. Incluso si quisiéramos que ese botón hiciera algo completamente diferente (por ejemplo, mostrar una barra de búsqueda en la página actual), probablemente no necesitaríamos una nueva versión.

Por lo tanto, para resumir, podemos cambiar la gran mayoría de los elementos de la interfaz de usuario en nuestras aplicaciones móviles sin lanzarlos a la tienda de aplicaciones o Play, ya sean componentes nativos o web. Esta arquitectura, junto con nuestro modelo de implementación continua (Implementación continua en Quora por Martin Michelsen en Ingeniería en Quora), nos permite iterar rápidamente en nuestras aplicaciones móviles para crear un gran producto.