JavaScript y Equipos Internos en Spotify

Si hay algo que me gusta hacer en mi tiempo libre cuando estoy al frente del computador o en el celular, es leer los blogs de las empresas que sé que tienen un blog donde, los ingenieros o desarrolladores de software, comparten sus experiencias solventando situaciones o conceptos aplicados en la práctica.

Hace algún tiempo compartí un artículo sobre un genial algoritmo que usan en Vox para generación de los layouts del sitio de noticias del mismo nombre, Vox.com. En esta ocasión quiero compartir una respuesta en Quora que me llevó a un tema mucho más interesante sobre cómo es la organización en Spotify.

spotify

¿Cómo usa Spotify JavaScript?

Esa fue la pregunta que me llevó al tema interesante, sin embargo, no la voy a pasar de largo ya que la respuesta, dada por un empleado de la empresa, también vale la pena compartir.

La pregunta se origina en Quora(otro sitio donde suelo leer muchas cosas interesantes) y la responde Mattias Johansson quien es Ingeniero de Software en la empresa que nos compete ahora.

Mattias cuenta en la respuesta que la interfaz del cliente de escritorio de Spotify está construida totalmente en JavaScript (con algunos elementos generados mediante Handlebars y LESS) y aprovecha la base hecha en C++ que viene siendo la misma que se usa en las aplicaciones para iOS y Android.

Explica que el núcleo en C++ se encarga del manejo de las playlists, de la reproducción de la música y otras cosas más, mientras que JavaScript se encarga de permitir la interacción y renderizar los componentes. Más adelante comenta sobre cómo Spotify divide los equipos de trabajo en algo que se llama Squads (lo que veremos más adelante) y luego nos deja saber cómo la empresa combina JavaScript con los equipos de trabajo.

Los Spotlets

Si hay algo por lo que me gusta leer los blogs de esas empresas, es el hecho de descubrir nuevos usos a herramientas que día a día utilizo para mi trabajo. En cada lectura conozco alguna herramienta nueva o leo cosas geniales sobre cómo modificar a la necesidad algunas librerías. Es un aprendizaje seguro.

Resulta que el cliente de escritorio de Spotify está hecho a base de pequeñas aplicaciones web que ellos llaman Spotlets. Cada Spotlet vive en su propio iframe que se ejecuta dentro del Chromium Embedded Framework.

Te podrías preguntar, ¿por qué así y no una aplicación normal? Mattias explica que al haber tanta gente trabajando sobre Spotify y haber varios diferentes equipos de trabajo echando mano sobre diferentes partes de la aplicación, al cada parte ser independiente es más fácil coordinar lo que se necesita para completar un requerimiento o lanzar una nueva funcionalidad.

Las discusiones sobre qué emplear para completar algo no se dan entre 100 personas o más sino entre el equipo de trabajo y ya que cada Spotlet es independiente, no hay forma en que pueda dañar otra parte de Spotify. Eso sí, al final la aplicación termina pesando mucho, ya que en varios Spotlets puede que exista una misma librería aunque llegado su momento al comparar el peso de una canción contra el de una librería JavaScript, la forma en la que está hecha no deja lugar a dudas en que así debe ser. Y así funciona.

Los Equipos Internos

Hay un paper creado por Henrik Kniberg y Anders Ivarsson sobre cómo son las divisiones de los equipos de trabajo dentro de Spotify. El PDF solo tiene 14 páginas y es una de las formas más interesantes en las que he visto divido equipos grandes de trabajo. No sé que tanto se apliquen los conceptos de este paper del 2012 en Spotify pero, sin duda alguna, vale mucho la pena leerlo. Abajo les cuento un poco más.

Para resumir un poco el asunto, ocurre que dado el gran número de personas involucradas en el desarrollo de Spotify(la aplicación) toda este gente se divide en varios grupos de trabajo que van desde lo más específico hasta el punto más genérico en el que se pueden agrupar.

organizacion de spotify - 2012

Teniendo en cuenta eso encontramos:

  • Squads
  • Tribes
  • Chapters
  • Guilds

Squads

Son equipos de trabajo conformados por personas con diferentes habilidades cuya misión es completar y trabajar(a largo plazo) sobre una característica en especial de Spotify. Están diseñados para ser como una mini-startup y generalmente aplican metodologías ágiles para el desarrollo y la validación de los MVP mediante métricas.

Tribes

Es una colección de Squads que trabajan en áreas relacionadas de la aplicación. Se puede ver como si fuera una especie de incubadora de Squads(ya que estas son mini-startups), tienen cierto grado de autonomía y libertad.

Ya que son varios Squads los que se agrupan en un Tribe la cantidad de estos se define usando el concepto del Número de Dunbar. Este indica que una persona no puede mantener relaciones sociales estables con más de 100 personas, así que los Tribes están diseñados para que haya menos de 100 personas.

Chapters

Son grupos de personas que comparten las mismas habilidades. Existen para facilitar la comunicación entre miembros de diferentes Squads pero que trabajan en una misma disciplina(los testers, los backend, los frontend, los ops). Si bien no trabajan juntos, se reúnen con cierta frecuencia para compartir situaciones, desafíos o aprendizajes.

Guilds

Son similares a los Chapters solo que se conforman por personas dentro de diferentes Tribes. Similar a los Chapters, la idea de los Guilds es fomentar el compartir de conocimientos, herramientas, técnicas o prácticas.

Nunca llegué a pensar en todo el esfuerzo que podría requerir organizar tanta gente para el bien común dentro de una empresa. Tampoco había llegado a imaginar que Spotify fuera una empresa tan grande. Y no dejo de imaginar el enomre reto que debe ser coordinar a tanta gente, en diferentes espacios, en distintos lugares del mundo.

Les dejo el enlace para que descarguen el paper. Es gratis pero está en inglés.

Anuncios

Autor: cesc1989

Ingeniero de Sistemas que le gusta escribir y compartir sobre recursos que considera útiles, además que le gusta leer manga y ver anime.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s