16 septiembre 2016

Un mallorquín en la corte del rey Spolsky (y III)



Saludos a *.*, y bienvenidos a la tercera y última parte del relato sobre mis andanzas en "el Google de los programadores". Si en la primera parte os explicaba cómo conseguí el trabajo y en la segunda os contaba cómo fue la preparación para el mismo y el primer par de meses, esta suerte de epílogo versará sobre las características de Stack Overflow como empresa, desde el punto de vista de un miembro del equipo de desarrolladores. Vamos que nos vamos.

"Remote First"

De forma exageradamente simplificada pero que para el caso nos vale, lo único que un programador necesita para hacer su trabajo es su ordenador, su cerebro y una conexión a Internet. Por tanto, una empresa que necesite programadores debería poder contratarlos en cualquier lugar del mundo en el que haya ordenadores, Internet y cerebros. Sencillo, ¿verdad? Bueno, pues a día de hoy la mayoría de las empresas que se dedican a esto de la programación o no entienden esto del trabajo remoto o no lo aplican adecuadamente.


 Interneeeeet... y cereeeeebros...


Stack Overflow es una de las pocas empresas tecnológicas (aunque por suerte cada vez hay más) que han asimilado el trabajo remoto como parte integral de su cultura empresarial (qué bien hablo, me acaba de salir una corbata y todo), algo que yo ya sabía antes de formar parte de la misma pero ahora que estoy "en el ajo" puedo confirmarlo fehacientemente. La "salsa secreta" para que esto funcione tan bien consta de estos ingredientes:

En primer lugar, equipamiento. Tal como os conté en la anterior entrada, antes de que llegara mi debut como empleado recibí el paquete completo de ordenador, monitor, silla y unos cuantos adminículos más. La política de la empresa respecto a herramientas y espacio de trabajo es que todos los empleados reciben equipamiento informático completo y tienen su propio despacho en cualquier lugar del mundo: bien en alguna de las oficinas de la empresa para aquellos que vivan lo suficientemente cerca de (y quieran trabajar en) una de ellas, bien en su propia casa/espacio de coworking en caso contrario. Y esto implica enviar ordenador, silla y mesa a donde haga falta, además de sufragar el coste de la conexión a internet/alquiler del espacio de trabajo.

En segundo lugar, comunicación. Tenemos un canal de chat (bueno, en realidad varios, uno por equipo) al que estamos permanentemente conectados: desde que encendemos el ordenador por la mañana y decimos "buenos días", hasta que decimos "hasta mañana" al dar por terminado el día. Cada vez que tenemos que decir o preguntar algo importante a alguien del equipo o a todo el equipo en general, lo hacemos en el canal de chat... y esto lo hacemos todos, incluso los empleados que trabajan en una oficina, incluso aunque las personas que están chateando estén pared contra pared en la misma oficina. De esta forma todos nos enteramos de lo que pasa, estemos donde estemos (el chat es persistente, por cierto, de forma que al empezar el día podemos consultar "qué se ha estado cociendo" mientras dormíamos).


"...decir o preguntar algo importante..."


Aparte del chat, también usamos videoconferencia (Google Hangouts) cuando una conversación de chat "se nos va de las manos" y consideramos que será más rápido tratar el asunto hablando, y/o cuando hay más de un par de personas implicadas. Por cierto, como parte del equipamiento que acabo de mencionar todos los empleados reciben auticulares con micrófono y webcam - y no es por capricho, son herramientas de trabajo imprescindibles.

Y en tercer lugar, pero no menos importante, la metodología (o más bien filosofía) de trabajo. En Stack tenemos lo que el bonito acrónimo ROWE define: Results Oriented Working Environment. Una de las cosas que me dijo mi nuevo jefe en uno de mis primeros días fue (traducción libre del inglés, por supuesto): "No voy a controlar cuántas horas trabajas, no tienes que rellenar informes, da igual qué horario de trabajo quieras hacer. Pero quiero resultados, el trabajao debe salir adelante." Caramba, qué sorpresa: me contratan para ser productivo, no para calentar una silla - cosa que a priori parece obvia pero que en un trabajo clásico presencial puede quedar enmascarada. Trabajando remotamente, en cambio, o realmente trabajas o no tienes dónde esconderte.

La otra cara de la moneda queda pues clara: todo el que trabaje en Stack debe ser una persona altamente proactiva, capaz de encontrar (¡o inventar!) algo que hacer sin esperar a que venga alguien a decir "este es tu trabajo para hoy" (cosa que de todas formas sería muchas veces imposible debido a esa manía que tenemos los humanos de vivir en un planeta esférico con zonas horarias).

En resúmen: la filosofía es básicamente "Trabaja desde tu casa, pero si quieres venir a alguna de nuestras oficinas, eres bienvenido" y no al revés.


El trabajo remoto puede no ser tan bonito a veces, pero en promedio mola mucho. 



"Default Open"

La filosofía del código abierto es el requetefuturo, y hasta los más ateos al respecto se han acabado convertiendo. Pero cuando digo que Stack Overflow es una compañía Default Open no me refiero sólo a su generoso catálogo de proyectos públicos, sino a algo más amplio: cualquier pieza de información referente a la compañía es pública/publicable a no ser que explícitamente se diga lo contrario, desde las tripas tecnológicas hasta cómo se calculan los sueldos.

Por supuesto, los empleados debemos aplicar sentido común y no publicar datos personales y/o confidenciales como sueldos específicos (aunque esta información sólo la tienen RRHH y los jefes, claro) o información financiera (a la que todos tenemos acceso - "Default Open" también se aplica internamente), y en caso de duda siempre podemos preguntar. Pero por otro lado, se nos anima a publicar código, escribir en blogs, hablar en conferencias, participar en los sitios de nuestra red... la idea es que los empleados contribuyamos en lo posible a que la empresa gane visibilidad en los internetes - y ojo, ¡esto influye en nuestro sueldo!

En la primera entrada de esta serie ya publiqué una selección de enlaces a artículos/videos/hilos/*.* que de una forma u otra "desnudan" la compañía, pero a poco que busquéis no es difícil encontrar más.


- ¿Puedo publicar esa captura del chat en la que sale tu jirafa hinchable?
-... wat?
- Eso es un sí, ¿verdad?


"Work on whatever you want"

De acuerdo, esta frase no forma parte, así literalmente, de la cultura empresarial de Stack Overflow; me la he inventado yo... pero se acerca bastante a la realidad.

En efecto, los desarrolladores de Stack tenemos bastante libertad para trabajar "en lo que queremos", por supuesto con los oportunos y razonables matices, por ejemplo "tiene que ser algo útil y relacionado con los productos de la compañía" (ya ves, qué tiquismiquis, ¿no?). Pero voy a dejar que lo explique un veterano de la empresa (buscad a Nick_Larsen):

Hay tres tipos de tareas en las que trabajas [como desarrollador] en Stack Overflow.

La primera es bugs, que se asignan dependiendo de la estrategia de cada equipo. En algunos equipos una persona se encarga de TODOS los bugs durante un período determinado de tiempo, en otros equipos son asignados a la persona que conoce mejor la parte del código implicada. Este es el único tipo de tarea que se asigna directamente.

La segunda es ayudar a alguien con su proyecto. En este caso el jefe del proyecto pide ayuda y alguien viene a prestarla durante un período de tiempo, encargándose típicamente de continuar donde otra persona lo ha dejado o implementando características de una lista. Este tipo de tareas son "pseudo-asignadas": te comprometes a ayudar pero sueles tener cierta libertad de elección. Por ejemplo, "necesitamos a alguien que implemente la búsqueda para la sección de documentación", y alguien dice "hey esto suena bien, yo me encargo".

La tercera es implementar tus propias ideas. Tras más o menos los primeros seis meses casi todo el mundo emplea la mayor parte de su tiempo en esta zona. Dado que eres un usuario de Stack Overflow y sus productos, básicamente eres tú quien identifica los problemas, piensas en soluciones y las implementas (con la ayuda del "product team" para refinar las ideas, por supuesto). Básicamente estás haciendo "dogfooding" continuamente.

For supuesto hay ciertas tareas de alto nivel que vienen desde el equipo ejecutivo, tipo "necesitamos versiones localizadas de Stack Overflow" o "tenemos que mejorar el algoritmo de presentación de publicidad", pero esto es lo más técnico que viene desde arriba.

Es decir, libertad pero no libertinaje, o algo. De todas formas debo decir que esta explicación es algo antigua (un año, o sea una eternidad en tiempo internetero) y ahora estamos empezando a trabajar con más "rigor" en los proyectos grandes (con especificaciones, estimaciones de tiempos y demás); pero seguimos teniendo la libertad de elegir en qué queremos trabajar, e incluso cuando estamos en "bug duty", que es la estrategia de mi equipo (una semana en la que uno de nosotros, por turno, se encarga únicamente de corregir bugs) somos nosotros mismos los que elegimos qué bugs atacamos - que incluso a veces no son tales sino deuda técnica.

Oh, y no puedo dejar de mencionar la filosofía de la empresa en cuanto a la metodología de trabajo... de nuevo, en palabras de un veterano:

Odiamos las reuniones y los emails
No hacemos planificación de proyectos, ni sprints, ni estimaciones horarias.
No hacemos reuniones diarias o scrums.
No enviamos emails con informes de estado.
Las reuniones están desaconsejadas, debe haber una buena razón para convocar una.
Una reunión semanal para que el equipo esté al corriente de en qué está trabajando cada uno.
Los desarrolladores emplean típicamente 2-3 horas en reuniones.

No es tan anárquico-caótico como parece: sí que nos enviamos emails, tenemos reuniones y explicamos qué estamos haciendo y esas cosas; pero la clave está en que todo eso está reducido al mínimo estrictamente necesario. Además, como he dicho antes ahora sí estamos empezando a hacer planificaciones y estimaciones (para los proyectos grandes, los bugs y cosas pequeñajas se corrigen/hacen y punto), pero aún así... yo me quedé babeando la primera vez que aprendí cómo se trabaja en Stack, y puedo asegurar que sí, es tan bonito como parece.


"Treat your developers right"



Por último, pero no menos supermolón, no quisiera dejar de mencionar los beneficios que todos los desarrolladores de Stack (la mayoría de ellos se aplican también a los empleados en general) disfrutamos. Ya he mencionado el equipamiento completo vivamos donde vivamos, el despachito privado y la comida gratis (¡uooooh!) cuando podemos pasarnos por alguna de las oficinas de la empresa, y el avión+alojamiento pagados cuando viajamos. Pero es que además hay unas cuantas cositas más, por ejemplo:

  • 25 días de vacaciones al año, más 10 días extra para los internacionales (para que nos montemos los días festivos a nuestro gusto).
  • Cada cuatro años cuatro semanas extra de vacaciones que hay que tomar de golpe (o esperar cuatro años más y tomar ocho), para "recargar pilas" a base de bien.
  • Una semana al año para cuidar a un familiar enfermo, tres días en caso de fallecimiento de un familiar (todo esto es bastante flexible y en muchos casos puede ampliarse).
  • Tres días y un generoso presupuesto anual para formación (asistencia a conferencias y/o cursos, adquisición de libros). Esto incluye el caso de que queramos dar una conferencia.
  • Doce semanas de baja por maternidad (¡o paternidad!) o adopción. En caso de adopción hay también una ayuda económica para gastos legales.
  • Pago de las cuotas de gimnasio, club deportivo o similar.

...y alguna más que seguro que me dejo. Ah sí, pegatinas y camisetas de Stack Overflow, que no falten, por supuesto.


And little color, red colored...

Pues en una especie de mezcla de "podría seguir contando cosas durante eones" y "pues ya no sé qué más contaros" aquí se acaba el rollo. Dado el caso, preguntadme lo que queráis en los comentarios, y haré todo lo mallorquinamente posible por dar alguna respuesta medianamente coherente. Paz, amor y empleos fantabulásticos para todos. ¡Nos blogueamos!