Continuamos conociendo la tecnología que hay detrás de las startups de tecnología más interesantes de nuestro país. En esta ocasión le toca el turno a Origo.by. Dos de sus cofundadores, Antonio Huerta y Pablo López (CEO de Origo.by) nos desvelan cómo han ido paso a paso hasta construir esta impresionante plataforma de opiniones que cuenta con una de las interfaces más innovadoras que hemos visto últimamente en la web. Además, aprovechando que acaban de presentar novedades en sus apps para Android e iPhone.
¿Podéis describir en qué consiste Origo para la gente que aún no conozca la plataforma?
Origo es una red social (con sus followers y esas cosas) orientada al mundo de las opiniones. Un título, un color y una opinión. Así de fácil. Es una plataforma donde los usuarios pueden opinar sobre todo aquello que les interesa y valorarlo con una puntuación. De cero a cien. El cero representa el rojo, el 100 el verde. Y toda la gama de colores intermedios.
Estarás de acuerdo (o no, por eso nos gustan las opiniones) que el caos impera en Internet. Cada vez hay más ruido. Nos gusta utilizar una imagen: Twitter es un patio de colegio, con sus niños jugando, gritando, ligando y llorando. Facebook es la boda de un amigo, donde cambias de grupo cada dos minutos y les cuentas a todos lo mismo una y otra vez… Y Origo es una biblioteca, donde todo está ordenado y sereno. Es como si fuese la Wikipedia de las opiniones.
¿Qué tecnologías principales usáis en vuestro stack tecnológico?
La plataforma está desarrollada en PHP, con Symfony2. Aunque Symfony2 solo se está usando actualmente para la API REST que sirve el contenido tanto a la web como a ambas aplicaciones móviles.
Todos nuestros datos están en MongoDB con una capa por encima de cache en Memcached y un sistema de colas basado en Beanstalkd.
En el frontend, usamos Underscore para renderizar las vistas, y Backbone + RequireJS para mantener el código ordenadito. Además hay una capa con NodeJS y Socket.io para las notificaciones en tiempo real y stats. Todo el código tiene tests a distintos niveles que van desde tests de comportamiento usando BDD hasta tests unitarios pasando por tests de integración gracias a PhpUnit, Behat, QUnit y Sinon.
¿Cómo os organizáis? ¿Cuál es vuestra metodología de trabajo? ¿Aplicáis metodologías ágiles como scrum o kanban? ¿Alguna herramienta recomendada?
La verdad es que la metodología aún es un poco anárquica. Utilizamos Trello con backlogs de funcionalidades ordenadas por importancia, y lo usamos como pool de cosas a desarrollar. Mantenemos por separado una planificación en una hoja de excel, y vamos ajustando en base a cambio de requisitos.
Usamos git flow para mantener aislado el desarrollo de funcionalidades y las vamos integrando a medida que van se van terminando y nuestro sistema de integración continua (CircleCI) nos da luz verde.
Tengo que reconocer que somos un poco pijos en el tema de Coding Standards. Una llave colocada en un lugar incorrecto, o un espacio de más, hace fallar la build completamente. La razón de ser tan estrictos con esto es que somos muy pocos para la cantidad de código con la que cuenta Origo, con lo que de vez en cuando necesitamos poder hacer modificaciones automáticas en el código en base a expresiones regulares, y conseguir que tenga buen formato es algo que te ayuda enormemente.
Podrías describir los pasos que habéis seguido para montar la infraestructura
Lo importante a la hora de crear la infraestructura es cómo evolucionas un prototipo realizado en apenas dos semanas a lo que hoy en día es Origo.
Lo primero fue montar un prototipo que apenas tenía tests unitarios, pero funcionaba y aportaba lo necesario para explicar el nicho de mercado que se quería cubrir. A medida que el tiempo fue pasando, el código de ese prototipo fue refactorizándose por capas. Primero el backend, separando la capa de servicios o business logic de la capa de almacenamiento / repositorios. Luego el frontend, añadiendo mucha interactividad y pasando de html estático a vistas en javascript.
Lo último fue aislar el frontend del backend y permitir que el frontend usara el backend mediante peticiones a la API REST.
¿Contáis con alguna API abierta para interactuar con Origo desde otras apps?
Contamos con una pero aún no está desarrollada al cien por cien. Nos falta implementar un sistema de autentificación un poco mejor que el actual, e integrar nuestro rate limiter. Actualmente estamos buscando proyectos que quieran tener early access a nuestra API y realizar un piloto con nosotros.
¿Cuáles han sido los principales retos para trasladar la idea de Origo a las apps móviles?
El principal reto ha sido a nivel de producto. Nosotros partimos de información visual en forma de infografía, que en un móvil sería difícil de visualizar por el tamaño de las pantallas. Tomar la decisión de ir más hacia feed que hacia "huella", que es como nosotros llamamos a las infografías de opiniones sobre un mismo tema, o de un mismo autor, es una decisión que no nos ha sido fácil.
¿Cómo ha sido el proceso de desarrollo de las apps de iOS y Android? ¿Cuánto tiempo el habéis dedicado al desarrollo?
Una vez que el Backend / API ya estaba implementado, hemos tardado más en decidir cómo iba a ser el producto en su versión móvil que lo que hemos tardado en implementarlo. Es normal que vayan surgiendo nuevas características, y el esfuerzo que dedicamos a cada una de las plataformas no es el mismo, pero en general avanzamos al mismo ritmo en las tres plataformas.
¿Cuáles son vuestros siguientes pasos?
Ahora viene una de las partes más difíciles del proyecto, tenemos 3 plataformas que mantener y tenemos que poner todo nuestros esfuerzos en hacer crecer la comunidad. Cada día se unen nuevas personas para compartir sus opiniones sobre cine, tecnología, música, restaurantes, videojuegos, etc y nosotros queremos que siempre esté todo perfecto ya vengan de Android, iOS o Web.
Sabemos que Roma no se construyó en un día, que lo importante es seguir adelante y apoyarnos en toda la gente que ya esta esta usando Origo a diario y que constantemente nos recuerdan lo interesante que les parece el proyecto. Poco a poco lograremos poner cada cosa en su sitio :-)
Sitio web | Origo.by Descargar Apps móviles | iOS, Android En Genbeta Dev | La tecnología que hay detrás de Funddy