Slide 1

Slide 1 text

Aventuras y desventuras de un mindundi en Sp tify Comunidad CODE 24 de junio de 2019

Slide 2

Slide 2 text

http://thebluediamondgallery.com/legal/disclaimer.html

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

El “modelo Spotify” NO EXISTE (y nunca existió)

Slide 5

Slide 5 text

https://www.youtube.com/watch?v=GedMMF5sZSU

Slide 6

Slide 6 text

Ego slide Hemos venido a jugar... Desarrollador de software/producto @islomar islomar@gmail.com Teleco, Antropología Social y Cultural, Executive MBA, CSM…

Slide 7

Slide 7 text

¿Por qué Spotify?

Slide 8

Slide 8 text

https://picryl.com/media/questions-demand-doubts-emotions-2ea8c6

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

El proceso de selección

Slide 11

Slide 11 text

Uno: el brikindans el referral ● Busca a alguien que te pueda hablar de la empresa (e.g. vía LinkedIn) ● Prepara una buena carta de presentación / motivación ● Prepara un buen CV ● No pidas el referral a alguien a quien no conoces de nada ni con quien no tienes ningún amigo/conocido en común que te pueda avalar Programa de referrals en Spotify: ● Cobras si pasa el periodo de prueba ● Cobras más o menos según el puesto al que acceda ● Cobras bastante ● A veces funciona bien… y a veces fatal

Slide 12

Slide 12 text

https://www.amazon.es/El-proceso-CONTEMPORANEA-Franz-Kafka/dp/8497592816

Slide 13

Slide 13 text

Proceso de selección 1. Contacto con HR/Talent Acquisition (HangOut) a. Hangout, 40 minutos 2. Entrevista técnica con dos desarrolladores a. Hangout, 90 minutos https://www.glassdoor.com/spotify

Slide 14

Slide 14 text

Proceso de selección 3. Invitación a Estocolmo (onsite) a. Email previo con TODA la información (e.g. dos posibles equipos) b. “Está tó pagao” c. Cuatro horas de entrevistas (para dos posibles Tribes): i. Cultura ii. Desarrollo (coding) iii. Caso (resolución de incidencia) iv. Diseño de sistemas https://www.glassdoor.com/spotify

Slide 15

Slide 15 text

Observaciones durante el proceso ● Prácticas de eXtreme Programming ausentes (TDD, integración continua) ● Mucho foco en el bienestar de las personas ● Empresa GRANDE ● Importancia a la diversidad… siempre y cuando encaje en su cultura

Slide 16

Slide 16 text

Observaciones durante el proceso ● Mucha información sobre cuál es el siguiente paso y cómo será ● Contratan independientemente de necesidades concretas ○ NO selecciona todo el equipo en el que aterrices luego :-( ● “Bad smell” en las pruebas técnicas: algoritmia y nada de código “serio” ● Me sentí muy cómodo en todo momento

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

La oferta ● 54.000 SEK / mes ● Condiciones del on-call ● Paquete de realojamiento (relocation package) ○ Viaje premudanza y ayuda para encontrar piso ○ Ayuda económica para mudanza, muebles/contenedor y primer viaje ○ Muchísimas ayudas para la parejas (integración cultural y laboral) ○ Clases de sueco ○ Etc. ● Employee Stock Option Program (ESOP)

Slide 19

Slide 19 text

https://memegenerator.net/instance/64843465/barney-salute-respect

Slide 20

Slide 20 text

https://www.worldtravelguide.net/features/city-highlight/city-highlight-stockholm/

Slide 21

Slide 21 text

https://es.wikipedia.org/wiki/Ley_de_Jante 1. No pienses que eres especial. 2. No pienses que eres especial para nosotros. 3. No pienses que eres más listo que nosotros. 4. No te creas mejor que nosotros. 5. No pienses que sabes más que nosotros. 6. No pienses que vales más que nosotros. 7. No pienses que vales para algo. 8. No te rías de nosotros. 9. No creas que alguien debe ocuparse de ti. 10. No creas que puedes enseñarnos algo. Ley de Jante Esta ley impregnó las culturas danesa, noruega, sueca y finesa, países en los que se desaprueba que una persona se considere o sea mejor (en inteligencia, fuerza, belleza, o cualquier otra cualidad o habilidad) que las demás.

Slide 22

Slide 22 text

https://www.pexels.com/photo/jetty-feet-sign-wooden-128299/

Slide 23

Slide 23 text

● Portátil y móvil preparado… ● Primer día: “New hire orientation” ○ Recursos internos, programas de formación, etc. ○ Datos de la empresa ○ Cómo moverte ○ Regalitos :-) ● Charla con gente de producto cada viernes ● Trello con recursos, roadmap de expectativas/tareas/objetivos temporales ● Buddy: regulero, no estructurado...

Slide 24

Slide 24 text

Intro days ● Periódicamente, cada ~3 meses ● 2 días en Estocolmo, gente de todo el mundo ● Talleres (e.g. diversidad) y dinámicas para conocer gente ● Diversos “líderes” exponen diversas partes de la organización ● Charla final de co-fundador: chascarrillos, historia de la empresa ● Chief R&D Officer: A brief history of Spotify ● Turnos de preguntas ○ ¿Qué pasa con el remoto? ○ ¿Qué pasa con la accesibilidad de la aplicación? (dark theme).

Slide 25

Slide 25 text

https://twitter.com/accesslead/status/880097305671720961

Slide 26

Slide 26 text

MUCHA transparencia interna: confianza en las personas ● Acceso interno a casi todo. ● Charlas de Daniel Ek para transmitir visión y estrategia ● Facebook Workplace ● Newsletter interna ● Dashboards con métricas y datos sobre penetración en cada mercado, cifras premium vs free filtradas por múltiples parámetros... ● Google Drive ● Slack Diversidad e inclusión son MUY IMPORTANTES

Slide 27

Slide 27 text

https://www.flickr.com/photos/intersectionconsulting/7537238368

Slide 28

Slide 28 text

Foco en las personas

Slide 29

Slide 29 text

https://hrblog.spotify.com/2016/09/02/spotifys-core-values/

Slide 30

Slide 30 text

Talleres y charlas continuas, e.g.: ● Unconscious bias ● Growth mindset ● La importancia del sueño Salud mental ● Semana “Heart & Soul” ● Selfcare toolkit: cuenta Headspace, recursos online. ● “All the feels”: teléfono gratuito y confidencial para asistencia psicológica, etc.

Slide 31

Slide 31 text

“Flexible public holidays” (vacaciones según tus creencias) https://hrblog.spotify.com/2017/11/09/say-hello-to-flexible-public-holidays/ Encuesta de satisfacción interna en el Tribe: ● NPS (Net Promoter Score): ¿recomendarías trabajar aquí a un amigo? ● Resultados no transparentes

Slide 32

Slide 32 text

https://unsplash.com/photos/zBsXaPEBSeI La parte cool

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

¿Cómo se organiza Spotify “hoy en día”?

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

https://spotifylabscom.files.wordpress.com/2014/03/spotify-engineering-culture-part1.jpeg

Slide 37

Slide 37 text

https://spotifylabscom.files.wordpress.com/2014/09/spotify-engineering-culture-part2.jpeg

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

https://www.youtube.com/watch?v=Du11NQ2SEs4

Slide 40

Slide 40 text

Algunas cifras 2011 12 equipos 60 personas en Ingeniería 2017 184 equipos 1800 personas en Ingeniería 50 Agile coaches 2018 ~3800 empleados

Slide 41

Slide 41 text

https://spotifylabscom.files.wordpress.com/2014/03/spotify-engineering-culture-part1.jpeg

Slide 42

Slide 42 text

Business Unit ● Squad ● Tribe ● RIP Chapter ● RIP Chapter Lead ○ Hola, Engineering Manager ● Guild (“gremio”) ● Mission ● Business Unit Alliance - Mission Tribe Squad (continuous work in Progress)

Slide 43

Slide 43 text

On-call ● Incluido en contrato ● Flexibilidad de comienzo: e.g. a los 6 meses ● Se paga por día, independientemente de que existan o no incidencias ● MUY bien pagado ● Acuerdo dentro del equipo sobre cómo organizarlo ● PagerDuty, conectado con HR y la nómina ● Hiperregulado: horas y días de descanso a posteriori ● 1 día libre por cada 5 (aunque no haya intervención) ● Canal Slack con gente muy experimentada (guardia de las guardias)

Slide 44

Slide 44 text

Carrera profesional https://www.pexels.com/photo/beach-water-steps-sand-17727/

Slide 45

Slide 45 text

● Steps framework ○ Steps: Senior Engineer, Principal Engineer, etc. ○ Proceso de mapeo interno de “etiquetas” ● Evaluación personal de rendimiento (y expectativas) basado en: ○ Mastery ○ Achievement ○ Behaviour ● Caminos diferentes: Engineer - Engineer Manager / Tribe Lead, etc... ● Plan de Desarrollo: a trabajar y definir junto con tu Engineer Manager ○ Documentos de autoevaluación y ayuda a la reflexión ○ Herramienta de feedback 360º ○ Definición de objetivos a 3-6 meses: enfoque 70/20/10

Slide 46

Slide 46 text

¿Cómo se consigue el alineamiento?

Slide 47

Slide 47 text

● Spotify Rhythm: estrella polar, objetivos a 2 años ● Company bets: objetivos estratégicos (máx. 10) ○ Strategy days: upper management se junta dos veces al año para revisar los Company Bets. ● Mountain bets: innovaciones, compite por gente y recursos con los Company bets. ● OKR (Objective Key Results): a nivel de Mission y Tribe, top-bottom-top

Slide 48

Slide 48 text

https://www.slideshare.net/peterantman/growing-up-with-agile-how-the-spotify-model-has-evolved

Slide 49

Slide 49 text

● Alineados con los Company Bets ● A nivel de Tribe ● Definición top-down y down-top ○ Margen del Squad y Tribe para introducir nuestros propios objetivos ● Ventana deslizante de 3 meses ● Revisión bisemanal en sesión grupal con todo el Tribe OKR (Objective Key Results)

Slide 50

Slide 50 text

● Tribe Mission y Squad Mission ● Hack days (10%, cada Tribe decide cómo hacerlo) ● Hack week ● Tribe: ○ Lunch & Learn ○ Club de lectura ● Conferencias técnicas internas ● Sesión para reflejar estado actual de prácticas, herramientas y tecnologías en la empresa y detectar posibles áreas de mejora

Slide 51

Slide 51 text

● Grupo de Arquitectura Tecnológica ○ Promover principios y guías ○ Resolver problemas transversales en la organización de ingeniería ○ NO para dar el visto bueno de nada (en teoría) ● Grupo de “líderes técnicos” ○ Estrategia tecnológica ○ Definición de “excelencia técnica”: MEEEEH.

Slide 52

Slide 52 text

Sobre tecnología, principios y prácticas técnicas https://www.pexels.com/photo/green-and-black-computer-motherboard-825258/

Slide 53

Slide 53 text

● De todo, principalmente Java para backend (vienen de Python) ○ Framework propio: Apollo ● Hacia React en frontend ● Soluciones propias para casi todo: ○ https://github.com/spotify ○ Continuous Integration: herramienta común ○ Continuous Deployment ○ Orquestación de contenedores: Helios ○ Monitorización y alerting

Slide 54

Slide 54 text

● Equipos de infraestructura / plataforma ○ Economía de escala: principal foco en la parte tecnológica ○ Autonomía de los equipos para hacer continuous deployment… si quieres ○ Muy fácil hacer rollback ○ Autonomía de los equipos para definir instancias, escalar, etc. ○ Monitorización, alerting y logging de serie ● A/B testing en el ADN (data-driven decisions): ABBA

Slide 55

Slide 55 text

● Modelo open source interno ○ pull request a otros equipos en lugar de esperar. ○ requiere acuerdos inter-equipos sobre “calidad” para evitar conflictos. ● Mi squad/tribe: ○ servicios relativamente pequeños y simples, apenas evolucionables. Pocas dependencias. ¿Es realmente un problema la falta de “excelencia técnica” en este contexto?

Slide 56

Slide 56 text

¡Qué carallo? (aka WTF) https://www.flickr.com/photos/pedrosimoes7/39316167761

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

● Foco REAL en las personas en el día a día ● Propiedad colectiva del producto, no solo del código ● Equipos con responsabilidad y visión end-to-end ● Alta colaboración, con pair programming por defecto ● Feedback rápido (negocio y sistemas): ○ Integración continua de verdad, con trunk-based development por defecto “Agile” para mí es...

Slide 59

Slide 59 text

● Continuous deployment o al menos delivery ● TDD por defecto ● Simplicidad, a bajo nivel (de código) y alto nivel (de diseño/arquitectura) ● Código fácil de entender y de cambiar ● Valores como la humildad, el respeto y la transparencia “Agile” para mí es...

Slide 60

Slide 60 text

WTF que encontré ● Jira a saco ● Apenas radiadores de información a nivel de Squad y Tribe ● Scrum “de libro” ● Retrospectivas mecánicas en 15 minutos: “qué ha estado bien”, “qué ha estado mal”, y a otra cosa mariposa. ● Estimando con story-points “porque sí” ● Equipo con etiquetas: e.g. QA, Technical Owner

Slide 61

Slide 61 text

● Sin DoD ni DoR ni criterios de aceptación en las historias ● Mayoría de los equipos en espacios abiertos compartidos ● Sin pair ni mob programming (cowgirls y cowboys) ● Sin “team agreements”, cada uno a su bola ● Falta de cross-polinización entre los squads de una tribu WTF que encontré

Slide 62

Slide 62 text

● Nada de TDD. Tests hechos a posteriori… complejos y deficientes. ● Pull requests: ramas de días/semanas, miles de líneas... ● Desconocimiento casi total de arquitectura hexagonal, DDD, SOLID, etc. ● Código muy complejo, difícil de entender y de cambiar ● Identificación con el código: pairing y reviews dolorosas ● Falta de documentación: README vacío, ni un diagrama de arquitectura ● Ningún servicio se podía arrancar en local (dependencias múltiples) WTF que encontré

Slide 63

Slide 63 text

● Sin feedback serio en el equipo ○ Una vez al año, no todo el mundo participa ○ Evasión del conflicto: “hacerse el sueco” ● Technical Owner (TO): héroe, centralización de tareas ● Miembro no empleado (consultora): diferencias :-( ● Product Manager con visión Agile = Scrum ● Engineer Manager: 1-on-1 semanal… pero hiperpasiva y ausente WTF que encontré

Slide 64

Slide 64 text

El movimiento se demuestra andando ● Promover pairing: o esperaba a tener compañero o me unía ● Limitar el WIP ● Proponer retrospectivas “diferentes” ● Probar Kanban: pull vs push ● TDD: lead by example ● Promover trunk-based development ● Scout rule ● Club de lectura: “99 bottles” de Sandi Metz ● Charlas sobre arquitectura hexagonal, DDD, outside-in TDD, SOLID...

Slide 65

Slide 65 text

https://slides.com/irnmm/devsyparientes#/27

Slide 66

Slide 66 text

What the hell am i doing here (“Creep”) ● Sensación de no aprender (lo que me importa) ● Para encajar, debía “retroceder” 5 años ○ Concepción de “agile” y “excelencia técnica” demasiado diferentes ● Más personal (aún): ○ El coste de la vida ○ La oscuridad (de noche a las 3pm) ○ El frío ○ Alejado de la gente a la que aprecio ● El remate: charla “final” con Engineer Manager

Slide 67

Slide 67 text

https://www.pexels.com/photo/adult-art-conceptual-dark-278312/

Slide 68

Slide 68 text

Offboarding

Slide 69

Slide 69 text

¿Se podría haber evitado la “incompatibilidad”? ● No todo fue una sorpresa: smells durante proceso de selección ● Engineer Manager: ausente, sin feedback, hiperpasividad ● ¿Cambio de equipo? ● Adaptarme temporal o definitivamente: NOPE.

Slide 70

Slide 70 text

Qué me gustó de Spotify ● Proceso de selección y onboarding ● Mucha transparencia interna ● Confianza en las personas ● Equipos autónomos (responsabilidad end-to-end) ● Equipos autoorganizados (o casi) ● Espacio y tiempo para la innovación ● Mucho dinamismo interno: talleres, charlas, iniciativas de mejora, deporte, etc. ● Importancia a la salud mental ● Diversidad ● Estocolmo

Slide 71

Slide 71 text

Qué no me gustó de Spotify ● Engineer Manager totalmente pasiva… excepto al final ● La experiencia del día a día: va a depender muchísimo de dónde caigas... ● Ha crecido “demasiado” según lo que se busque: ○ Equipos “líquidos”: se crean y destruyen con relativa frecuencia ○ Referencias a personas como “recursos” ○ Cambio constante ● Excelencia técnica centrada en las herramientas e infraestructura

Slide 72

Slide 72 text

Qué no me gustó de Spotify ● Falta general de conocimiento y experiencia en alternativas a Scrum ○ XP: ni está ni se le espera ● Equipos con demasiadas etiquetas: QA, Technical Owner... ● Redescubriendo la rueda continuamente a nivel de squad (cultura, procesos, prácticas, etc.) ● Falta de acompañamiento a equipos recién creados ○ Agile Coaches desaparecidos o con “líderes” o sin meterse en temas “técnicos”

Slide 73

Slide 73 text

https://www.pexels.com/photo/woman-lying-on-sofa-with-cat-in-her-foot-909620/

Slide 74

Slide 74 text

Enlaces de interés (I) ● https://labs.spotify.com/ ○ https://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/ ○ https://labs.spotify.com/2014/09/20/spotify-engineering-culture-part-2/ ● https://hrblog.spotify.com/ ● Spotify “Heart & Soul” ● ESOP (Employee Stock Options Program) ○ https://hrblog.spotify.com/2017/05/31/the-spotify-stock-option-program-for-the-win/ ○ https://hrblog.spotify.com/2019/06/13/show-me-the-incentive/

Slide 75

Slide 75 text

Enlaces de interés (II) ● Preparación proceso: ○ Introducción a estructuras de datos y algoritmos ○ Cracking the coding interview ● Spotify break even ● Spotify’s Organizational Structure for Flexible Growth & Expansion ● Otras charlas o posts sobre Spotify: ○ Growing up with agile - how the Spotify 'model' has evolved ○ You can do better than the Spotify model ● Cultura sueca: ○ https://es.wikipedia.org/wiki/Lagom ○ https://es.wikipedia.org/wiki/Ley_de_Jante

Slide 76

Slide 76 text

Enlaces de interés (III) Carrera profesional (Steps framework) ● https://labs.spotify.com/2016/02/08/technical-career-path/ ● https://labs.spotify.com/2016/02/15/spotify-technology-career-steps/ ● https://labs.spotify.com/2016/02/22/things-we-learned-creating-technolog y-career-steps/

Slide 77

Slide 77 text

Fuentes de imágenes ● Spotify logos e iconos: https://developer.spotify.com/branding-guidelines/ ● Big Beng: https://www.flickr.com/photos/yavannna/415483302 ● Ámsterdam: https://www.flickr.com/photos/44534236@N00/5866586357 ● Muro de Berlin: ○ http://www.all-free-photos.com/show/showphoto.php?idph=PI89196&lang=en ● Hamburgo: ○ https://www.pexels.com/photo/reflection-of-building-on-body-of-water-2506904/ ● Remoto: https://www.pexels.com/photo/woman-lying-on-sofa-with-cat-in-her-foot-909620/ ● https://www.pexels.com/ ● https://unsplash.com

Slide 78

Slide 78 text

Feedback bienvenido (próximamente via Typeform)

Slide 79

Slide 79 text

https://www.youtube.com/watch?v=GedMMF5sZSU

Slide 80

Slide 80 text

https://www.pexels.com/photo/questions-answers-signage-208494/