javisantana.com

Hiring En Un Startup

Hace unos meses escribía sobre cómo era la experiencia de hacer crecer un equipo en una startup y hablaba un poco sobre el tema del hiring. Si estás leyendo esto seguramente habrás escuchado en más de una ocasión “es imposible encontrar buenos técnicos”, “los buenos están todos pillados”, “hay una burbuja y todo el mundo quiere cobrar demasiado” o “tardo meses en contratar a alguien”.

Ok, es verdad, el mercado está mal, por varias razones:

Dicho esto, contratar no es imposible, símplemente es difícil, como vender tu producto, pero mientras la mayoría de startups tienen un proceso de venta o desarrollo definido (bueno, ejem) no lo tienen para el hiring. Es curioso, el asset más importante de una empresa es la gente, y por tópico que suene, es una realidad como la catedral de Burgos.

Dejadme que lo repita de nuevo, la gente en una empresa es lo más importante, así que si tienes 200 mil millones de buenas prácticas en el código, 5 herramientas de lead generation antes que alguien de recursos humanos cuidando a tu gente (y cuidar a la gente no es solo que les llegue la nómina) es que lo estás haciendo lo siguiente a mal.

Ahora déjame decirte algunas cosas que he visto durante estos últimos 6 años en CARTO relacionados con el hiring.

El qué

Primero, no estás apuntando a gente dentro de la zona central de la campana de Gauss, estás buscando en los laterales. Y para contratar a esa gente no valen cuestionarios típicos, preguntas manidas o procesos normales. No eres el empresote que contrata a miles de desarrolladores y que te permite jugar con la estadística y en donde una persona significa una mejora en un equipo pero realmente tiene poco impacto global. Quieres contratar a gente muy buena, con chispa, que impacte en tu empresa.

Como cuando vendes un producto quieres que todo sea inbound (esto es, que vengan a comprarte) o por referal (que te recomienden). Y esto se consigue muy fácil, teniendo un buen producto. Dicho de otra forma, tienes que tener una empresa que guste y funcione bien. Esto atrae a gente buena y la gente buena quiere trabajar con gente mejor aún. En CARTO la mayoría de hiring inicial se hizo tirando de contactos, de gente con la que queríamos trabajar.

El cómo

No sólo se vende teniendo un buen producto, tienes que saber ponerte donde toca para que te vean y además diferenciarte. Necesitas tener una estrategia para posicionar el hiring.

Tener una estrategia no es poner 200 tweets o 15 mensajes en linkedin con “BUSCAMOS NODEJS DEVELOPER”. No. Es algo que se construye con los años, es buscar los sitios donde están las personas con las que tienes feeling, es tener un mensaje consistente durante los años, construir una red de gente alrededor de tu empresa, etc. Y ojo, lo del feeling parece algo secundario en el mundo técnico, pero en mi experiencia los equipos que funcionan mejor son en los que hay “feeling”. Te dirás, este gilipollas me dice “feeling” y se queda tan ancho, qué tal si lo describes. No puedo, seguramente me falte experiencia para materializar eso, pero google se hizo la misma pregunta y sacaron algunos resultados

En CARTO la estrategia siempre ha sido un bastante agresiva, nada de gilipolleces de frameworks del momento, nada de recetitas. Nosotros hacemos tecnología y queremos a gente que quiera hacer tecnología y no perder el tiempo siendo el mago de la tecnología del momento o que sepas responder a las preguntas de entrevista de google como el mejor del mundo.

Cuando tu gente vaya a dar charlas tiene que tener claro como orientar el mensaje, cuando se pongan ofertas tienen que seguir la misma linea, las entrevistas, a qué eventos vas, qué patrocinas, qué tuiteas, todo. Y esto no se hace con una documento interno llamado “hiring guidelines” (que no estaría de más)

Pero llega un momento que no vale con tener inbound, tienes que salir a buscar a la gente, bien porque necesites mucha gente o porque tus contactos se te han acabado. Y aquí tienes que tener un recruiter. Sabemos que el mercado de los recruiters está mal, pero está mal porque hay gente que no son profesionales, así que contrata gente profesional, que sepa establecer la conversación con un desarrollador (no un puto correo automático que va a hacer lo contrario a lo que esperas). En CARTO hubo un salto de un orden de magnitud en la calidad del proceso gracias a la llegada de Justyna, y no solo hablo de la calidad de la gente, hablo de la rapidez del proceso, salarios, seguimiento, etc… que da para otros cuantos posts y que en parte están resumidos en este blog post de Félix López sobre el proceso de hiring

El outbound es cosa de todos, de nuevo, si la gente no está preocupada con quién va a trabajar es que tienes un problema. Personalmente entrevisto a todas las personas que llegan a CARTO, pero la decisión no es mía, es del equipo que va a trabajar con él y son ellos los que tienen que sentir ese feeling.

Además de todo esto, tienes que ser un poco diferente, algunas de las cosas que yo considero importantes (que tampoco son novedosas, pero funcionan)

Y sobre todo, contrata buena gente por encima de gente técnicamente buena.

Escalar El Equipo Tecnico En Una Startup

Hacer crecer un equipo técnico parece fácil a priori, hay unos 200 millones de blogpost sobre el tema y en general los desarrolladores tenemos tendencia a ser optimistas, en esto también. Estoy seguro que comparado con hacer crecer un equipo de ventas o de marketing es coser y cantar.

Sin embargo, a pesar de haber leído esos blogposts, libros y demás, hay algunas cosas que hemos aprendido en CARTO que puede que te sean útiles si piensas hacer crecer un equipo de 4 adolescentes a un equipo que funciona como un tiro.

Un equipo es algo así como una persona, pasa por la fase de crío, pasa a ser un adolescente, después a tener pareja e hijos, posiblemente pase por una etapa de madurez, jubilación y muera. En CARTO se podría decir que acabamos de tener hijos.

Aquí os dejo cada una de las fases por las que hemos ido pasando, con algunos consejos en forma de retales.

Cuando sois 4 fulanos dándole a la tecla sin control (recien nacido)

Aprender inglés cuando eres un niño es coser y cantar, cuando tienes 40 es un infierno, ya no estás para gilipolleces y tienes un montón de cosas que la sociedad te dice que tienes que hacer. Así que más vale que lo fundamental quede claro cuando sois 4, con 40 personas en un equipo no va a ser tan fácil. Estas son las cosas que yo haría si empezase desde cero:

En esta etapa el ser un pequeño dictador es posible que sea la mejor opción. Si juntas a 4 desarrolladores en una habitación se van a poner a discutir sobre espacios versus tabs (no importa lo senior que sean, hay gente que no se da cuenta que usar tabuladores es de otro siglo). Alguien que tome las directrices, buenas o malas es mejor siempre tener una directriz a no tenerla. Y más te vale tener directrices en todos los temas importantes.

Una de esas directrices es la gestión de proyectos. Usa kanban, waterfall, agile o lo que te salga de las narices, pero usa una cosa clara y que todo el mundo sepa cómo lo haces.

Si eres ese pequeño dictador, machaca todo el rato con las cosas importantes (entre otras cosas porque así te ayuda a aclarar las cosas importantes) hasta que la gente lo tenga interiorizado. Ese es el germen de la cultura que se diluirá poco a poco cuando vayas creciendo pero que servirá como base.

Recuerda, ahora es cuando casi todo cuesta casi nada, hazlo aunque parezca una gilipollez que no necesitas.

Cuando ya sois un equipo de fútbol con suplentes

Las cosas van como un tiro, sois los putos amos y decides hacer crecer el equipo unas 10-15 personas. Todo es felicidad, estás en la adolescencia, qué esperas?

Cosas que van a pasar:

Además la empresa ha crecido un poco, hay ya alguien vendiendo, parece que hay una persona escribiendo blogposts y el fundador ahora ya firma como CEO y no como “developer and coffee addict” en twitter. CARTO es un poco especial, fuimos galardonados con el premio de “la empresa más disfuncional en ventas que nunca habían visto”

   - Hay cosas que, símplemente, no se pueden hacer porque no hay tiempo. Los programadores piensan (pensamos?) que se puede hacer todo lo importante. Esto duele mucho.

Cuando eres más de los que puedes contar (etapa de maduritos)

Este cambio pasa cuando eres más de 20, una sola persona no puede gestionar todo el equipo técnico (ni a nivel de gestión de proyectos ni al técnico) así que la cosa se complica: hay que hacer equipos y poner “jefes”. Lo camuflarás con títulos gilipollescos tipo “whatever lead”, “blabla manager” pero cuando alguien decide el sueldo de otro se acabaron las tonterías.

Ahora es el momento de contratar a los que vienen por dinero (y por el proyecto, claro), gente que sabe lo que hace, que no se anda con pijadas, que tienen hijos que mantener, que si eres gilipollas te lo plantan en la cara sin que te des cuenta. Esa gente es la que te hace crecer.

Aquí tendrás que elegir entre, generalmente, dos tipos de estructura: vertical u horizontal, esto es, por área (frontend, backend) o por unidad de trabajo o producto. Spotify tiene unos videos bastante famosos. Yo me descojono cuando los veo porque es como las películas, las partes aburridas de las vidas de los protagonistas nunca salen, son una mentira, igual que esos videos, pero para hacerte una idea vale.

En este punto los problemas técnicos principales son básicamente no técnicos:

Los problemas técnicos principales son:

La gente que se va es como los accidentes de tráfico: nunca te pasa a ti. Hasta que te pasa. Así que igual que te pones el cinturón de seguridad, compras coches seguros (esto es, no italianos) tienes que prepararte para cuando alguien se vaya. La estrategia perfecta sería tener 1 persona extra por equipo pero nunca funciona, más tienes, más haces y más tienes que mantener, así que mantén siempre a la gente con la que te gustaría trabajar cerca. Hay muchas formas de hacer esto, pero estas ya para otro post.

El punto crítico aquí es tener el músculo de la práctica bien fuerte, de esta forma las cosas, aunque parezca un caos, siempre irán razonablemente bien (teniendo en cuenta la velocidad de estas cosas). Ese músculo se empieza a trabajar cuando eres 3 pericos metidos en una habitación con mesas de ikea.

Seguro que me dejo en el tintero 200 mil cosas, lo único que puedo decir es: si estás pasando por un proceso así, ánimo.

Onpremise

When you start a SaaS company you think every single client will be happy to not have to manage their data, they just forget about servers, backups, maintenance… all those things that you don’t want to deal with.

And that’s actually the reality, you leave those tasks to some people that are experts on that matter and know how to do things far better than you. You only have to pay some amount of money (that of course is less than the one you’d pay if those services were managed within your company) and trust the people behind the service (the hardest part)

At some point in your company you will realize those amazing ideas are not that good when talking about data privacy and security among other things like enterprise authentication methods, custom hardware, redbooth private cloud landing sums up all the reasons quite well.

So yeah, you were using a dozen of amazon services that you can’t use in a private cloud, you will need to face the active directory reality, the high availability, the updates… outside your confy amazon cloud setup, managed by people don’t know anything about your service.

And the problem, there is a little information out there, so you will face a lot of problems, like:

There are some well know companies that have different approaches to the problem:

Do you know more companies doing onpremise/enterprise versions? I’ve created a slack channel so you can join and share them or talk about your experience with the enterprise world problems, feel free to join.

Enterprise Software

Eres un pinpin y te pones a desarrollar software (no necesariamente en este orden), la cosa parece que mola, que no hay que doblar mucho el lomo y es fácil hacer dinero. Te gusta un sector, echas un ojo al software que trata de solucionar la vida de la gente y, como buen ignorante que eres, las primeras frases que salen de tu boca son “JAJAJAJA parece software de los 90”, “esto lo han hecho 4 becarios”, “no tienen ni idea, son unos aficionados”, “esto lo hacemos nosotros mejor con una mano atada a la espalda”. Nota importante: yo he sido el primero en estar en esa situación, así empecé agroguía, de hecho debes estar ahí en algún momento, tienes que ser un veinteañero.

Así que manos a la obra, creas tu proyecto en node.js, TDD, deployment automático, últimas técnicas de desarrollo, el recopón y toda la corporación bendita, después de 2 meses tu software está más o menos listo, ahora solo hay que captar usuarios para tu proyecto B2C.

Pasa 1 año, aprendes que no tenías ni puta idea pero vas malvendiendo, malcaptando clientes/usuarios, te sacan en los periódicos (dándote la falsa sensación de que lo estás haciendo bien) y ganas algún premio de esos que montan por que sobra presupuesto en algún departamente de alguna empresa.

Un día alguien se te acerca, un tío que tiene una empresa cargada de millones, que sabe lo que se hace, joder, que es el puto amo, ve tu software y te plantea: “yo te pagaría XXXX€ por esto si tuviese estas pequeñas modificaciones”. Ese XXXX es 100X de lo que estás cobrando al mes a tus usuarios del SaaS. Llamas a tus socios, lo celebras y sin saberlo estás dentro del mundo llamado “enterprise”, pero aún no eres consciente.

Te comes toda la mierda que el cliente quiere meter en tu producto, llegan otros clientes como ese y rápidamente te das cuenta (bueno, seguramente te lleve meses) que puedes cobrar 100X por lo mismo con mucho menos esfuerzo si empiezas a vender a empresas. Ahora sí, ya sabes que estás en el mundo enterprise, pero aún no sabes cuanta vaselina vas a tener que comprar.

Y aquí es cuando empieza la cosa a ponerse seria, empiezas a hablar con empresas gordas gordas, que tienen gallina de verdad y les dices que tu software es “best in class”. Entonces pasas por diferentes encorbatados y llegas al momento en el que de verdad están interesados. Te mandan la lista de requisitos, la abres pensando que eres el puto amo y entonces es cuando abres el tarro de vaselina.

Y es que además de añadir frases como “big data”, “enterprise ready” y otras perlas que no dicen absolutamente nada pero que debes tener para que los que manejan la gallina sepan posicionarte (sí, eres programador y sabes que todo eso es bullshit, pero no pasa nada, es solo un trámite) debes tener una lista de requisitos en tu software de los que no teías ni idea. Te dejo algunos de ellos.

En resumen, la aplicación de node que parecía simple y ágil ahora tiene una serie de limitaciones, añadidos de clientes, vaya, se ha hecho mayor y ahora miras a esas empresillas que empiezan con una sonrisa (pero por si acaso no dejas de mirarlas), con más pasta en el bolsillo y con suerte habrás dejado de ir a la oficina en bicicleta e irás en un coche como debe ser. Es posible que seas también menos feliz, pero no sabrás si es la edad o tu software enterprise.

como debe ser

Resumen 2015

Este año, igual que el anterior, seré breve. De hecho no tenía pensado escribir este post pero leer los resúmenes tras unos meses (o años) pone las cosas en perspectiva.

A nivel profesional ha sido un año increíble, todo el mundo conoce CartoDB, la gente cree que eres el puto amo, me han conocido en aviones, trenes y bares, he dado charlas, etc, etc. La otra parte, la de trabajar duro, ha sido y está siendo jodida, todo pasa tan rápido que no te da tiempo saborear nada.

A nivel personal ha sido lamentable. Este año que viene será mejor seguro, de hecho empiezo el año mudándome a Madrid después de 4 años y medio con medio pie allí y medio aquí. Por poner una nota positiva, he podido tachar uno de mis TODO vitales, conducir en Nürburgring:

nurg