Trividuel, entrevista con uno de los miembros del equipo
El texto de éste post pertenece a una pseudo entrevista que le hice a Pau, de Trividuel, la cual tenía como objetivo no solo hablar del juego, sino del desarrollo del mismo, algo que resulta incluso mas interesante que el propio juego.
UPDATE: Trividuel parece haber desaparecido en el ciberespacio.
¿De qué trata Trividuel?
Trividuel es un juego de preguntas y respuestas con componentes sociales donde vas a poder jugar con tus amigos. Acertando preguntas en el menor tiempo posible te va a permitir ganar puntos y colocarte el primero en el ranking de usuarios mensual, lo cual es francamente complicado, hehe.
La parte técnica
Trividuel está hecho con PHP , la librería Zend Framework y bastante Javascript (con jQuery) que gestiona el juego en sí. El diseño es completamente hecho por mí (basándome en el de foursquare.com).
Fuera de Zend, también tenemos algunas partes de código algo más complejas, como por ejemplo el auto-categorizador de preguntas, que es un componente que acepta un string de texto como input y te devuelve una categoría sugerida para ese texto. El auto-categorizador implementa el algoritmo Naive Bayes, muy popular en IA y Datamining.
Nace la idea de hacer el proyecto
La idea original fue de Mike, mi mejor amigo, el cual nos conocemos y andamos juntos desde el instituto. Él desarrolló una primera versión de doonish hace muchos años y la llamó Ask and Answer. La idea a mi me encantó y siempre le decía que deberíamos volver a desarrollarlo juntos, que triunfaría, y bueno al final lo conseguí convencer y nos pusimos manos a la obra con lo que hoy es doonish. La primera versión la desarrollamos en 6 noches de trabajo. Era muy simple pero ya funcional y siempre con la idea de tener un producto al que poder ir añadiendo mejoras poco a poco.
La conformación del equipo
Inicialmente empezamos Mike y yo (como ya dije arriba), pero eventualmente se unieron nuevos socios que aportaron grandísimas ideas de mejora para la mecánica del juego y para el desarrollo del negocio. Podéis ver el listado casi completo en la página del equipo. Falta Esteve, que se ha incorporado con nosotros hace dos semanas (y que lo tenemos añadido en la página de equipo en el entorno de staging).
Cuando entró el nuevo grupo de socios decidimos cambiar el nombre del proyecto por motivos marketing. Pasamos de llamarle “doonish” a llamarlo “Trividuel”, su nombre actual.
Herramientas que usaron para el desarrollo (incluyendo lenguaje y frameworks)
De lenguajes ya hablé anteriormente, así que me centro en otras herramientas útiles que hemos usado.
Además de MySQL, usamos Redis para guardar algunos datos puntuales y de carácter más temporal (o pre-procesados). Usamos un gran conjunto de nuevas herramientas / librerías que han salido para PHP, como composer, Pimple, monolog, predis, algunos componentes de Symfony 2 como el parser de yaml, switfmailer, twig y silex.
La arquitectura de la aplicación es sencilla, pero contiene algunos componentes especializados separados de lo que es el framework principal.
Como véis nos gusta poner nombres a cada uno de los componentes, para facilitar la identificación de los mismos y dar un toque divertido a nuestras conversaciones técnicas.
Para gestionar el código fuente usamos Bitbucket, que es una herramienta web por encima de Git (muy al estilo de Github) pero donde los repositorios privados son gratuitos.
En Bitbucket tenemos un repositorio para cada uno de los componentes:
Bitbucket funciona de maravilla y se integra 100% con Jira, pudiendo añadir una referencia de los tickets de Jira en los mensajes de commit.
Por ahora no usamos el plugin de Agile en Jira (Green Hooper) pero si que tratamos de hacer una metodología ágil un poco adaptada a nuestras necesidades. Cada viernes hacemos retrospectiva del sprint terminado y planificamos el siguiente, añadiendo tareas por valor en horas de nuestra capacidad.
Problemas que les hayan parecido interesantes en su momento
Hemos tenido algunos problemas de rendimiento recientemente. Por ejemplo, tenemos una tabla de “respuestas” que guarda cada pregunta que ha sido jugada en Trividuel. Cuando tocan hacer “JOINS” con esta tabla (que es a menudo) hay que optimizar bastante la consulta SQL. Hay mucho espacio para mejorar todavía, pues la base de datos no está muy optimizada por el momento.
Hemos incorporado hace poco una capa de cache que guarda el resultado de las consultas más pesadas por un tiempo (para evitar ese segundo que tarda en devolver la consulta) y bueno, la gran mayoría de arreglos han sido en la UI de juego, dónde más que problemas son optimizaciones de usabilidad pero que son importante para que los usuarios vean una aplicación fluida y sin fallos.
Mantenimiento y soporte con los usuarios
La interacción con los usuarios es una cosa que intentamos buscar proactivamente. Acostumbran a colaborar mucho con el juego de los siguientes modos:
-Crean preguntas para que otros usuarios puedan jugar
-Sugieren correcciones a preguntas
-Sugieren nuevas etiquetas para agrupar preguntas
-Eventualmente nos pasan alguna sugerencia o bug