11 julio 2016

Un mallorquín en la corte del rey Spolsky




La paz sea con vosotros, osados blogonautas. Pues sí, a estas alturas soy bastante previsible y sé exactamente lo que estáis pensando: "Si hay nueva entrada bloguera es que el calvofriki ha vuelto a estar en Japón junto al resto de la unidad familiar". Pues sí y no. Es cierto que ahora mismo me hallo en territorio nipón, pero no es de eso de lo que os voy a batallitear ahora. Por el contrario, sucede que ha acontecido un algo sumamente importante y de enormes repercusiones para mi vida laboral y en cierta medida también para mi vida familiar (tranquilos, no es nada malo, todo lo contrario), que bien merece una al final serán dos tres entradas blogueras de esas que yo solía escribir con cierta frecuencia en tiempos pretéritos.

Aviso con antelación que la parrafada que sigue a continuación será de interés (si es que realmente lo es) principalmente para aquellos de vosotros que seáis programadores/desarrolladores de software/rockstar-ninjas/gurús de la informática, o sea, los que disfrutáis y/u os ganáis los garbanzos escribiendo infinitas líneas de código para alimentar aparatejos con teclado y pantalla. Como es posible que algunos de vosotros seáis en cambio personas normales, daré antes un poco de información contextual que haga más digerible la cosa.

Un poco de contexto pretérito

Nueva York, Usamérica, septiembre de 2000. Un señor llamado Joel Spolsky, programador y a pesar de ello humano, decide crear con la ayuda de un colega su propia empresa de desarrollo softwarístico, Fog Creek software. El objetivo de tal emprendimiento era, según él mismo cuenta, "crear la empresa en la que ellos mismos querrían trabajar, una empresa en la que los programadores son los reyes del mambo y todo lo demás está para mantenerlos felices y productivos", porque "sólo así conseguirían reclutar a los mejores". Toma ya. Ahí es nada.



Un ratito después, en abril de 2008, se enfrascó en un interesante proyecto con la ayuda de Jeff Attwood, otro programador estadoumericano. Como este último explica, el objetivo era proporcionar a los programadores una plataforma realmente útil para resolver las dudas que surgen durante el desempeño de la susodicha profesión/hobby/obsesión/locura (suelen ser las cuatro cosas a la vez), dado que los recursos que existían en la época (blogs, foros y compañía) no daban la talla por ser muy heterogéneos, llenos de ruido y de difícil navegación y búsqueda - y el único sitio parecido a algo realmente útil era de pago. Así nació Stack Overflow, el sitio de preguntas y respuestas para programadores.

La cosa funcionó y a día de hoy Stack Overflow es con diferencia el recurso en línea más importante para los programadores que quieren despejar alguna duda relacionada con su actividad. Con el tiempo, además, la familia ha ido creciendo y la llamada red Stack Exchange consta ya de más de 150 sitios de preguntas y respuestas que tratan casi cualquier tema que os podáis imaginar (y si tu tema favorito no tiene sitio y puedes reunir a unos cuantos coleguis que te apoyen, puedes pedir que lo creen).

Yo descubrí Stack Overflow gracias al anuncio en el blog de Jeff Attwood, y abrí mi cuenta durante la beta privada (¡oh!). Vamos, que soy veteranillo en el sitio.




"Woof from home"

Así las cosas, damos un saltito y llegamos al año 2013, allá por la primavera. Tengo mi cuenta de Stack Overflow con un buen puñadito de puntos de reputación (que obtengo cuando otros usuarios votan mis preguntas y respuestas como útiles/molonas) y un buen día encuentro esto en un lateral del sitio:




Guiado por la curiosidad cliqueo en ello y descubro que Stack Overflow buscaba programadores... en cualquier lugar del mundo. Sí, trabajo 100% remoto. No, en serio: resulta ser una empresa plenamente convencida de las bondades del trabajo remoto.




En ese momento una idea loca me cruzó la cabeza: ¿podría yo llegar a trabajar en Stack Overflow? ¿En la empresa que a esas alturas de le película ya podía considerarse "el Google de los programadores" y de la que yo ya era bastante fan? Hummm... no era descabellado. Más o menos daba el perfil: unos cuantos años de experiencia, una cuenta activa en Stack Overflow, pasión por el desarrollo de software (eso que no falte nunca) y unos cuantos proyectos de código abierto publicados (para la maquinita obsoleta de tres letras, sí, pero por sorprendente que parezca eso era lo de menos).

Pero ¡ay! Estaba ese problema tan común entre los habitantes de la piel de toro: el inglés. No me sentía con la suficiente confianza como para comunicarme en la susodicha lengua de forma hablada, aunque sí escrita. Así que escribí un bonito email a team@stackexchange.com preguntando si ello podría ser un problema (quién sabe, quizá podría apañarme con chats y emails)... y la respuesta fue amable pero clara: sin inglés hablado, nasti de plasti, ya que buena parte de la comunicación del equipo se realiza por videoconferencia.

Así que decidí aparcar "el sueño americano" por el momento. Y poco después ocurrió un lamentable suceso: por una serie de tristes circunstancias achacables a la despiadada crisis económica perdí el empleo que había estado desempeñando durante los últimos ocho años. Sí, me quedé paradito como otro puñado de millones en no-se-dice-ese-país-se-dice-essspaña.

Haciéndome el sueco

Apenas un par de meses después de adquirir el status de vago-y-maleante encontré una oferta de trabajo sumamente interesante, publicada por un integrador turístico sueco cuya sede principal está situada en Mallorca (ya que como todo el mundo sabe, aparte de un par de ensaimadas y alguna que otra sobrasada lo único que hay en Mallorca son turistas). Y adivinad qué: un requisito indispensable para optar al puesto era hablar inglés, debido entre otras cosas a que buena parte del personal de la empresa (incluyendo el que sería mi jefe) eran suecos con pocos o nulos conocimientos de español.


Los suecos en cuestión


Dadas las circunstancias imperantes, agarré mi falta de confianza para hablar inglés y muy diligentemente la tiré por el retrete, tras lo cual envié mi curriculum a los amigos suecos. Una entrevista en inglés (a la que acudí más nervioso que un ternero a una parrillada argentina) y unas semanas después, el trabajo era mío, para mi alivio y aún más el de mi familia.

"Woof from home", la venganza

Dos años después y sin saber muy bien por qué, me dio por ponerme a pensar (cuidado: duele un poco pero suele dar muy buenos resultados). Desde que tenía el suequi-trabajo mi inglés hablado había mejorado considerablemente, así como mis conocimientos de programación web (anteriormente me había dedicado más bien a aplicaciones tipo escritorio). Además había ampliado mi "escaparate" de open-source-cosas con un simulador de Z80 y un emulador de MSX, así que... la verdad es que estaba bastante a gusto en compañía de los nórdicos, pero ¿y si ahora sí que sí tenía sentido intentar colarme en la plantilla de Stack Overflow?


Por suerte se me ocurrió que antes de lanzarme al ataque sería buena idea indagar un poco sobre la empresa (con el "producto" en sí ya tenía bastante experiencia) y resultó que hay un montón de información útil disponible para quien la quiera buscar. Con respecto a alguien que busca apuntarse a una de sus ofertas de empleo como programador, esto es parte de lo que encontré:


Además de deglutir información sin mesura, se me ocurrió que sería buena idea ofrecerme a colaborar con las traducciones y el testeo previo de Stack Overflow en español, que salió a beta pública el pasado diciembre... y como quien no quiere la cosa acabé siendo el primer moderador del sitio. Todo ello me permitió conocer un poco más los entresijos del funcionamiento interno de la red Stack Exchange.

Y con todo eso en mis alforjas decidí que era el momento de dar el salto al vacío. El 29 de diciembre de 2015 (sí, me acuerdo del día exacto, soy un tipo raro) redacté una carta de presentación nada modesta (la ocasión lo requería) y la usé, junto a mi curriculum, para apuntarme a la oferta de Full-Stack Web Developer.

Las siete pruebas de (obtener el) Job


¡Mirad mirad, he hecho un chiste "de proporciones bíblicas"! ¡Jo jo jo!


Pues resulta que el día 13 de enero (no, de esta fecha no me acordaba, he revisado mi correo) recibo un email de un señor que dice trabajar como RRHHero para Stack Overflow. Bastante antes de lo que esperaba, y encima disculpándose por tardar tanto en escribirme.

En dicho email me pregunta cuándo podríamos quedar para tener una charlita-entrevista por Skype o similar. La susodicha (a la que "acudí" N veces más nervioso que a la de los suecos) fue la primera de las seis (que acabaron siendo siete, no os impacientéis y seguid leyendo) que todo candidato a programador stackero debe superar. La cosa fue más o menos así:

  • La primera entrevista era de tipo introductorio y fue con el señor de RRHH. Esta entrevista es equivalente a la única que se hace normalmente para optar a empleos hispánicos, y consiste en preguntarme un par de cosas sobre mí y mi experiencia laboral, así como explicarme sucintamente en qué consiste el empleo al que opto.
  • En la segunda entrevista ya nos dejamos de tonterías, y un programador me pide que escriba una rutina que haga cierta cosa (no, no puedo dar detalles, lo siento). Se trata de una prueba relativamente sencilla, nada trivial pero que alguien con algo de experiencia programando debe poder sacar casi del tirón; el objetivo era simplemente comprobar que realmente sé programar (puede parecer una tontería pero no lo es tanto).
  • La tercera entrevista era otra prueba de programación, también del tipo "escribe una rutina que haga algo" pero esta vez un algo más complicado, y en la que ayudaba (sin ser realmente imprescindible) tener algo de base teórica/matemática/algorítmica. No del tirón, pero a base de pensar un poco (pista: recursividad) también la pude sacar. Aquí el objetivo era comprobar cómo me enfrentaba a un problema más o menos complejo.
  • En la cuarta entrevista nos adentramos en el fantástico mundo de las bases de datos. Se me pidió que diseñara una estructura de tablas para almacenar los datos relacionados con cierta cosa (jo, cuesta describir algo sin poder dar los detalles), cosa que hice sin mucha dificultad. A continuación debía diseñar una consulta SQL un pelín complejilla relacionada con esos datos, y yo... fallé estrepitosamente. Me quedé en blanco, así sin más. El entrevistador empezó dándome pistas y acabó escribiendo él toda la consulta.

Esta cuarta entrevista finalizó poco después, y en ese momento pensé que todo había terminado...




...pero resultó que no.

Para mi sorpresa, recibí un email en el que ¡se disculpaban! Parece ser que para ser un programador stackero realmente no se requiere un nivel de SQL tan elevado como el que era necesario para pasar esa entrevista (la persona que me entrevistó tenía un nivel algo superior a la media), así que decidieron hacer un "no hemos visto nada si tú no has visto nada" y repetir esa entrevista, esta vez cambiando radicalmente de tema. Y así es como llegué a...

  • ...la quinta entrevista, en la que se me pidió implementar (o más bien esbozar, claro, dado el tiempo disponible) una cierta característica que suele ser muy común en sitios web de todo tipo. Esto requería escribir un poco de HTML por aquí, un poco de JavaScript por allá, una pizca de código de servidor, y el diseño de un par de tablas de base de datos. Aquí lo que se pretendía era comprobar la parte "Full Stack", es decir, que realmente soy capaz de trabajar en cualquier parte del sistema.
  • En la sexta entrevista ya no tuve que programar, era de más "alto nivel". La hice con el Director of Product Management, nada menos, y el enunciado del problema a resolver era algo así como "Imagina que trabajas para la conocida empresa-web X y tienes que implementar la famosa característica Y. ¿Cómo lo harías? ¿Qué habría que tener en cuenta?" Aquí se trataba de comprobar que no soy simplemente un "picacódigo" que implementa ciegamente lo que le mandan, sino que también soy capaz de tener una visión global del producto, pensar cómo va a ser usado, razonar, dar ideas... vamos, todo lo que no es estrictamente programar pero hay que saber para poder programar.
  • Y por fin, la última entrevista, con -atención- el VP of Engineering, lo que en otros sitios se llama CTO o simplemente director/jefe de IT. Contrariamente a lo que pueda parecer, esta entrevista fue bastante más relajada que las anteriores; recuerdo que tuve que hablar de algún proyecto importante en el que he trabajado en el pasado, elegir a qué equipo de trabajo me uniría en caso de ser contratado (había un par de vacantes para elegir) y poco más.

A destacar que cuando digo que en las entrevistas debía "programar" me refiero a escribir código en un documento compartido de Google Docs. Por supuesto, no se esperaba que el código realmente estuviera completo y funcionara: lo importante era la línea de razonamiento que seguía hasta llegar al resultado final - buscan gente que piense, no robots capaces de dar con el código correcto y óptimo a la primera (para bien o para mal, eso aún no existe).

Bueno, el caso es que tras la última entrevista yo estaba hecho un flan en un terremoto, pensando si sería que sí o sería que no... pero no tuve que esperar mucho. Al día siguiente recibí el email de la muerte:




Yo, contratado en Stack Overflow. Yo - contratado - en - Stack - Overflow.

No paraba de repetírmelo a mí mismo, de leer ese email, y aún así no podía creérmelo. Me invadió una sensación como de "haber ganado la lotería" que a día de hoy, cinco meses después, aún perdura. Y estoy firmemente convencido de que no es para menos.

¿Y qué pasó después?

Eso os lo contaré en otra entrada bloguera, que esta se está alargando demasiado. Espero no tardar un año en publicarla. またね!