"El objetivo es que los negocios puedan contactar con sus clientes", Entrevista a David Dinesh, desarrollador Android en Yelp

Yelp es posiblemente unas de las plataformas más conocidas en el complicado target de búsqueda de negocios locales. Nació en 2004 en San Francisco en 2004 y llegó a España en 2011. Parte del equipo de desarrollo está en Europa, más concretamente en Hamburgo donde trabaja desde 2013 David Dinesh Harjani. Hemos tenido la oportunidad de hablar con él sobre la aplicación de Yelp, sus principales funcionalidades, cómo es el desarrollo de una aplicación de estas dimensiones y consejos para un desarrollador que se incorpore a la programación Android.

Hablanos primero sobre la app de Yelp ¿Cual es su principal funcionalidad? ¿Por qué deberíamos tenerla instalada en nuestro móvil?

"Formo parte del equipo de desarrollo de la aplicación de Yelp para empresas, que está dedicada a los dueños de los negocios que aparecen en Yelp. Nuestro objetivo con ella es que los dueños puedan contactar con sus clientes y ser contactados"

Yelp es una plataforma fantástica que cuenta con las mejores reviews y una comunidad de usuarios muy viva, los Yelpers. En Yelp los usuarios pueden encontrar no sólo restaurantes y bares, sino también tiendas muy especiales, carnicerías, mercados y sí, también pueden dar con un fontanero o un dentista. Ese es el motivo por que todos deberíamos tenerla instalada en nuestro móvil, porque es una manera perfecta de encontrar los mejores negocios locales gracias a las opiniones de gente que vive en esa zona o ciudad, y que conoce los sitios de primera mano; consecuentemente, son reviews muy personales.

En lo que a mi trabajo respecta, yo formo parte del equipo de desarrollo de la aplicación de Yelp para empresas, que está dedicada a los dueños de los negocios que aparecen en Yelp. Nuestro objetivo con ella es que los dueños puedan contactar con sus clientes y ser contactados. Por ejemplo, un cliente potencial de una pastelería puede escribir a un negocio para solicitar un presupuesto, y a través de esta aplicación el dueño puede contestar rápida y cómodamente. Otro ejemplo es que desde esta aplicación es posible modificar datos importantes acerca del negocio como los horarios de apertura, la dirección y a qué categorías pertenecen. Además de estos ejemplos, tenemos muchísimas más funcionalidades como recibir notificaciones cuando un usuario escribe una reseña o un mensaje, contestar a las reseñas de los usuarios, subir fotos del negocio, etcétera. Es bastante completa pero seguimos trabajando en hacerla aún mejor.

¿Cuales son las últimas novedades que habéis incorporado a la app de Yelp?

En la versión 1.9 disponible desde el pasado martes 1 de diciembre para Android añadimos la posibilidad de modificar el perfil del Propietario o responsable del negocio, permitiendo al usuario subir o cambiar su foto de perfil, especificar su puesto y escribir o modificar su biografía. Hemos extendido los tipos de ítems que pueden aparecer en la sección de “Actividad” de tu negocio con dos nuevas incorporaciones: entregas y reservas. También añadimos soporte para usuarios con más de 20 negocios, que es muy importante para aquellos dueños responsables de grandes cadenas.

Por último, hicimos cambios de corte más técnico en la aplicación para intentar reducir su consumo de memoria; esto es algo común, en cada nueva versión añadimos nuevas funcionalidades para nuestros usuarios a la vez que mejoramos los cimientos de la misma.

¿Diferencias entre plataformas? ¿Qué distingue a la app de Android de la de iOS? ¿MIsmas funcionalidades? ¿Tiempos de actualización?

" los usuarios de Android buscan “ofertas” con mucha mayor frecuencia que los de iPhone, o que los yelpers de Android están más interesados en la vida nocturna y los de iPhone en brunchs"

No hay grandes diferencias en este momento respecto a las versiones de Yelp para Android e iOS. Los diseños son muy similares, por no decir iguales, aunque hay pequeños detalles que las diferencian; a veces porque nuestro lenguaje de diseño es ligeramente diferente en Android (por ejemplo, el aspecto del indicador de carga en Android frente a la versión personalizada de la versión para iOS), y otras aplicaciones que técnicamente tienen una arquitectura diferente. La aplicación de iOS ahora mismo funciona siguiendo la filosofía de “cuando necesito algo, muestro una pantalla de carga y realizo una petición al servidor” mientras que en Android guardamos una caché con ciertos datos para intentar minimizar peticiones al servidor y así hacer la aplicación más interactiva para el usuario y a la vez consumir menos batería. Las dos estrategias tienen sus pros y sus contras.

Ambas aplicaciones tienen la misma hoja de ruta respecto a funcionalidades, pero tienen ritmos distintos; iOS está ligeramente por delante, pero todo lo que aparece en una versión de iOS está de camino para la de Android. Solemos trabajar en paralelo (iOS y Android) pero los tiempos de desarrollo no son los mismos y iOS está ligeramente por delante en la hoja de ruta. Sin embargo, las nuevas versiones de cada aplicación son lanzadas en paralelo, es decir: la versión 1.9 que lanzamos recientemente estuvo disponible tanto para Android como para iOS el mismo día, lo que las diferencia es algunas de las funcionalidades que incluyen.

También miramos el comportamiento de los usuarios. En agosto publicamos un estudio muy curioso que explicaba las diferencias en usabilidad entre los usuarios de iPhone y los de Android en Yelp. Llamaba la atención algunos datos como que los usuarios de Android buscan “ofertas” con mucha mayor frecuencia que los de iPhone, o que los yelpers de Android están más interesados en la vida nocturna y los de iPhone en brunchs.

A nivel técnico, no creo que estas diferencias se deban a aspectos técnicos entre las dos plataformas. Es común que las aplicaciones para iOS sean un poco más interactivas y/o fluidas que las de Android, pero eso se debe a las optimizaciones específicas que puede hacer Apple con sus dispositivos y a que el framework para la interfaz de usuario de iOS prioriza mejor este tipo de eventos (entiéndase por “evento” en este caso el que el usuario toque la pantalla, que ha de ser procesado a nivel de programación como un evento o acción del usuario en la aplicación que está ejecutándose) que en versiones anteriores de Android. Pero al fin y al cabo los frameworks para construir la interfaz de usuario en ambas plataformas tienen la misma filosofía: esperar a que el usuario interactúe con la pantalla y procesar estas interacciones lo más rápido posible. A nivel personal, como opinión, te diría que esas diferencias encontradas en el estudio indican más diferencias entre los consumidores que optan por comprar un iPhone o un Android que diferencias técnicas entre las plataformas.

Principales retos frente a la competencia ¿Foursquare, Tripadvisor, etc..? ¿Cuáles son?

Yo, personalmente, no me centro en los que otras compañías hacen o podrían hacer. Lo que sí sé y puedo contarte es que estamos mejorando e innovando, y un ejemplo de ello es que la app de Yelp para empresas se lanzó hace justo un año, y durante estos últimos meses hemos lanzado otras innovaciones como “Promociones y Cupones regalo” o “Reservas de Yelp”, para hacer la reserva directamente desde Yelp en bares y restaurantes.

¿Cómo es la organización de equipos técnicos en Yelp para desarrollar la app? ¿Número de desarrolladores trabajando en ella?

Somos tres equipos trabajando en diferentes áreas en la sede de Hamburgo.

¿Habéis podido liberar alguna parte del código que utiliza la app como Open Source? ¿Qué proyectos tenéis?

En cuanto a la app de Yelp para empresas, aún no hemos liberado partes de nuestro código como Open Source porque la aplicación es bastante nueva. Aún estamos añadiendo nuevas funcionalidades, y estamos centrándonos en eso.

Como empresa sin embargo, no dejamos de contribuir código Open Source a la comunidad, siendo nuestro ejemplo más reciente y conocido el de PaaSTA. Sí, en Yelp nos encantan los puns para nombrar cosas. Podéis encontrar todos nuestros proyectos Open Source en nuestra página de GitHub. Volviendo a Android, uno de nuestros proyectos Open Source es parcelgen, una utilidad para transformar un esquema de un objeto JSON en una clase Java que implementa la interfaz Parcelable, lo cual hace muy útiles a estos objetos porque los podemos poner en un Bundle y pasarlos entre nuestras Activity. Este proyecto originalmente fue escrito por el equipo de nuestra aplicación Yelp para Android de San Francisco, y lo utilizamos en ambas aplicaciones. También tenemos YLTableView.

¿Cuál es el proceso de testing/QA de una aplicación de las dimensiones de Yelp?

Escribimos tests en código para probar las nuevas funcionalidades: esto nos permite tener un proceso rápido y que podemos repetir cuantas veces nos sea necesario para asegurarnos de que no hemos roto otras funcionalidades de la aplicación en lugar de tener que hacerlo “a mano”. Una nueva funcionalidad no puede ser añadida a la aplicación si no pasa todos los tests que tenemos, porque es un requisito durante la revisión de código de esa funcionalidad para poder subir ese Git commit a la rama master. Aparte de esto, durante la parte final del desarrollo de una nueva versión de la aplicación, solemos organizar reuniones donde los miembros del equipo nos dedicamos a utilizar la aplicación y buscar errores o detalles que no sean del todo correctos para arreglar antes del lanzamiento o para la siguiente versión si hay otras tareas más importantes que realizar.

Por último, cuando se añaden bloques de funcionalidad importantes para la siguiente versión, hacemos disponible una versión de la aplicación con esta nueva funcionalidad a nuestro Product Owner lo antes posible, antes incluso de la revisión de código, para verificar que hemos implementado la nueva funcionalidad de acuerdo con las especificaciones.

¿Cómo empezaste en el mundo de Android y qué te llevó a recalar en una compañía internacional como Yelp?

"Creo que el mejor consejo que puedo dar es el de “nunca dejar de aprender”. Es decir; por muchos años que lleves programando en general o en una plataforma/tecnología en concreto nunca sabes lo suficiente"

En 2009 comencé mi andadura en Android cuando la plataforma apenas era conocida; el iPhone estaba comenzando a despegar, pero no todo el mundo tenía claro que el smartphone fuese el futuro ni qué plataforma iba a ganar. En aquel momento yo estaba empezando mi último año estudiando Ingeniería Técnica en Informática de Gestión en la Universidad de La Laguna y Android me llamó la atención porque al contrario que con el iPhone no necesitabas un Mac para programar y la estrategia de Google me recordaba a la de Microsoft con Windows en los 90, así que no tuve dudas para lanzarme a por ello. Hice un proyecto en Android junto a otros estudiantes para el Ayuntamiento de San Cristóbal de La Laguna durante mi último año y tras terminar comencé a trabajar como programador de Android, iPhone y J2ME en una pequeña empresa de Santa Cruz de Tenerife. Al terminar mi contrato allí estuve durante un año y medio en una empresa de La Laguna y tras eso decidí hacer algo distinto y descubrir cómo se desarrollan las grandes aplicaciones para Android en otras partes del mundo. Eso fue lo que me llevó a proponerme dar el salto fuera de las Islas y a recalar en la oficina de Yelp en Hamburgo.

¿Consejos para un desarrollador recién llegado?

Creo que el mejor consejo que puedo dar es el de “nunca dejar de aprender”. Es decir; por muchos años que lleves programando en general o en una plataforma/tecnología en concreto nunca sabes lo suficiente, porque nuestro mundo cambia constantemente y porque es imposible saberlo todo. Así que afrontar cada día con la mente abierta y tener en cuenta que habrá cosas que se te escapen es la forma más razonable de hacer las cosas. Cuando descubres un error causado por una línea de código que escribiste tú, no te encierres en pensar “ha sido culpa mía”; en lugar de eso, trata de pensar en qué concepto no tuviste en cuenta y en aprender de ello para aplicarlo desde hoy. Los errores que hayas cometido no te hacen un mal desarrollador, pero si decides aprender de ellos no solo mejorarás sino que además podrás ayudar a otros desarrolladores cuando se encuentren con las mismas situaciones (o similares) con las que te tropezaste. Ser un buen miembro del equipo es algo que se valora mucho y positivamente.

¿Principales problemas que te hayas encontrado programando en Android?

Yo no los definiría como problemas sino como características de la plataforma: la situación típica es que tienes que resolver un bug o implementar una funcionalidad y que hay determinadas versiones de Android para las que el problema se resuelve de una forma y otras para las que tienes que utilizar un método diferente. También es muy gracioso cuando ves un vídeo oficial de Google sobre cómo resolver situaciones específicas en Android y dices “sí, yo quiero que mi aplicación se comporte mejor en esa situación” y seguir las instrucciones de Google pero resulta que lo que no te dicen en el vídeo es que la solución que proponen requiere de una determinada versión de Android, generalmente la más nueva.

Al final, creo que todos los desarrolladores de Android estamos acostumbrados a que la plataforma funcione de esta forma y acabamos con 2 formas distintas de hacer lo mismo para distintas versiones y cada trimestre hacemos F5 en la página de Google que indica los porcentajes de uso de las versiones de Android para poder decirle a nuestros Product Owner “ahora tiene sentido no seguir soportando X versión de Android”, y si dice que sí, poder limpiar el código borrando el que soportaba las versiones viejas y dejar sólo el nuevo. Al final el problema de esto no es tener que realizar el doble de trabajo, sino que tienes dos distintas ramificaciones del código casi independientes que mantener, cada una pudiendo causar sus propios bugs específicos.

¿Qué apuestas de futuro podrías hacerlo en cuanto a Android?

La única que puedo hacer en un mundo tan cambiante como el de la tecnología es que Android seguirá con nosotros durante mucho tiempo; creo que aún hay muchos mercados en los que puede seguir creciendo, así que no creo que veamos decaer su uso a corto plazo. Lo que sí me pregunto es cuánto tiempo nos queda antes de la siguiente “revolución”, en el sentido de que primero tuvimos el software de sobremesa con Windows y OS X, y ahora tenemos las aplicaciones móviles para Android e iOS. ¿Qué será lo siguiente? Yo no sabría predecirlo con certeza.

¿Herramientas fundamentales de desarrollo que usas a diario?

Android Studio y Genymotion son el pan de cada día. Utilizamos Charles para poder examinar mejor las comunicaciones entre el servidor y nuestras aplicaciones como el contenido del JSON que nos llega, los parámetros de las peticiones al servidor, el código de estado de la respuesta e incluso podemos engañar a la aplicación y devolverle un contenido JSON distinto al que devolvió el servidor para probar cosas. Tenemos también varios scripts propios de Yelp para realizar tareas comunes como comprobar que el código que estamos escribiendo pasa los tests en un ordenador en remoto ejecutando Jenkins. Eso es todo.

¿Qué aplicaciones son referentes en Android?¿Cuáles te sirven de inspiración o te parecen las más innovadoras?

Creo que Pocket Casts es un muy buen referente; Shifty Gelly es un ejemplo de desarrollador centrado en Android que ha tenido éxito, cuando lo normal es centrarse en la aplicación para iPhone y pensar luego en la de Android. Otra cosa que me parece interesante es cómo Facebook ha utilizado las libertades de Android para hacer disponible su interfaz de “Chat Heads” con su aplicación Messenger; es algo que claramente en iPhone no se puede hacer y de lo que me gustaría ver más ejemplos para promover el desarrollo de aplicaciones disruptivas en Android.

Volviendo al iPhone, del que de hecho soy usuario, las aplicaciones en las que más me fijo son Paper de Facebook, Tweetbot y Overcast. De Paper me encantan sus nuevas ideas para realizar acciones que ejecutamos siempre de la misma forma en otras aplicaciones como ver una imagen a pantalla completa e inclinar el teléfono para movernos horizontalmente o la forma en la que se deslizan los elementos de una lista a otra al navegar entre menús. Tweetbot para mí es la aplicación independiente o “indie” por excelencia, ya que tiene un grado de refinamiento y de funcionalidades superior al de muchas aplicaciones desarrolladas por equipos más numerosos. Overcast por el contrario es un ejercicio de sencillez extrema: casi toda la interfaz está diseñada de la forma más simple y directa posible, lo cual redunda en una aplicación intuitiva para usar, algo que creo es muy fácil de decir pero más difícil de ejecutar. Y por último Mailbox, que fue la aplicación que debutó la idea de deslizar ítems en una lista para realizar acciones.

Google Play | Yelp

Ver todos los comentarios en https://www.xatakandroid.com

VER 0 Comentario

Portada de Xataka Android