Arreglando el layout del teclado después de actualizar a Lubuntu 14.04 LTS

Si es que no aprendo. No es la primera vez que me pasa, las actualizaciones de Lubuntu siempre me crujen un par de configuraciones. Esta vez he tenido que arreglar el layout del teclado porque se me había cambiado al inglés y claro no hay Ñ ni acentos.

Para arreglar el teclado uno tiene que ir al menú principal, luego a preferencias y allí escoger “métodos de entrada de teclado” (keyboard input methods).

En la ventana que se nos abre seleccionaremos la pestaña “método de entrada” (input method). En la nueva pestaña seleccionaremos para “seleccionar un nuevo método de entrada” (select an input method ) y allí “mostraremos todos los métodos de entrada” (show all input methos).

En mi caso escogí el catalán y le daremos a añadir. Finalmente marcaremos el check box de “personalizar los métodos de entrada” (tick costumized input methods) y reiniciaremos para que los cambios tengan efecto.

Como ejecutar una tarea periódicamente en Ubuntu (Linux)

Esta programación periódica de tareas no sirve solamente para el uso en el ordenador personal, si no que también nos puede ser útil en el servidor. Estas tareas consisten en trabajos que el ordenador tiene que realizar cada determinado periodo de tiempo sin interferir con la UI.

Para conseguir tal objetivo todas las distribuciones Linux (incluyendo Ubuntu), y otros sistemas operativos basados en Unix, nos brindan la posibilidad de usar “Crontab”. El nombre proviene del antiguo dios griego Chronos encargado del tiempo.

Para ver las tareas que tenemos ejecutándose de forma periódica en nuestro sistema podremos usar el comando:

crontab -l

Si queremos modificar el fichero y añadir nuevos cronjobs deberemos usar el comando:

crontab -e

Este comando nos abrirá nuestro editor por defecto (en mi caso vi). Una vez dentro deberemos escribir una linea parecida a:

* * * * * /ruta/al/script.sh

 y si guardamos tal script será ejecutado regularmente en el margen de tiempo indicado. Cada asterisco representa una unidad de tiempo distinta. Ordenada en:

  • minutos ( de 00 a 59)
  • horas (de 0 a 23)
  • día del mes (de 1 a 31)
  • mes (de 1 a 12)
  • día de la semana( de 0 a 6) { Se empieza en domingo = 0 }

Los asteriscos tienen el significado de “todos”. Por lo que en este ejemplo significa que el script se ejecutará todos los minutos de todas las horas, de todos los días, de todos los meses, de todos los días de las semanas.

Para ejecutarlo el viernes a la 1 de la mañana:

0 1 * * 5 /ruta/al/script.sh

Si sólo queremos que se ejecute de lunes a viernes (el guión “-” nos permite indicar intervalos de tiempo):

0 1 * * 1-5 /ruta/al/script.sh

Para ejecutarlo cada diez minutos (las comas concatenan tiempos):

0,10,20,30,40,50 * * * * /ruta/al/script.sh

 pero también:

 */10 * * * * /ruta/al/script.sh

Dónde podemos apreciar porciones, evitándonos el uso de comas.

Los asteriscos, o indicaciones de tiempo, se pueden substituir por palabras protegidas.

@reboot Se ejecuta una vez al arranque
@yearly Se ejecuta una vez al año “0 0 1 1 *”
@annually (lo mismo que @yearly)
@monthly Se ejecuta una vez al mes “0 0 1 * *”
@weekly Se ejecuta una vez a la semana “0 0 * * 0″
@daily Se ejecuta una vez al dia “0 0 * * *”
@midnight (lo mismo que @daily)
@hourly Se ejecuta una vez cada hora “0 * * * *”

 

*/10 * * * * /ruta/al/script.sh >> /var/log/script_output.log 2>&1

 Empezando por el final, “2>&1” significa que tipo de información deseamos guardar. El “1” hace referencia al “standard output” y el “2” referencia a los “standard errors”. En el medio vemos “>>” que con solo una flecha significa que el fichero se sobre escribiría pero como lo que queremos es ir guardándolo todo, deberemos poner las dos flechas para que vaya añadiendo las nuevas lineas al final del documento. Tened en cuenta que si el cronjob lo ejecutas a menudo este fichero puede crecer con bastante velocidad causando problemas. Por lo que si queréis desechar lo que salga del script podéis usar

*/10 * * * * /bin/execute/this/script.sh > /dev/null 2>&1

Dónde “/dev/null” es un agujero negro que descarta toda la información que le llega.

Finalmente si queréis hacer limpieza podéis usar el siguiente comando:

crontab -r

Espero que os haya gustado y os haya servido! :)

Moving averages crossovers

Pues si, me ha dado un poquito por el trading. Pero esto des de hace ya algo de tiempo. Leyendo me gustó este “método” (si se le puede llamar así). Sirve para identificar cada vez que hay un cambio de tendencias. La identificación de estas tendencias es usada por los traders para entrar o salir con sus inversiones (aunque supongo que por los traders simplistas).

main-qimg-97e49d176bd84437847ee2bbf5909646

Como se puede ver en el gráfico se indican los puntos de entrada (compra) y salida (venta) teóricos, cuando las lineas se cruzan. Se pueden dar más propiedades a estas “lineas”. Por ejemplo de puede usar el Exponential Moving Average (EMA) que consiste en darle más peso a los datos recientes que a los pasados. Cuanto más atrás en el pasado estén menos afectarán a las proyecciones del momento. La EMA puede adecuarse a un día y a un año. Cuando la de a largo plazo (inferior) se cruce con la de corto plazo (superior) tocaría comprar. Y al revés, cuando se vuelvan a cruzar tocaría vender.

Siempre para desarrollar teorías de trading tienes que marcarte un límite en el que estás dispuesto a perder. Si mantienes acciones por el mero hecho de que ya has perdido bastante tiene toda la pinta que vas a seguir perdiendo mucho más. Por lo que he visto la mayoría de traders recomiendan algún valor entre 3% y 7 % según el apetito de riesgo que quieras correr.

Cabe tener en cuenta que para repentinas bajadas de precios o cambios continuos puede ocasionar “problemas”.

Vocabulario (en):

Idea (y gráfico):

Disclaimer: No se nada del otro mundo y aun no vivo en las Bahamas.

PD: Recordad que pase lo que pase, aproximadamente se acierta la mitad de las veces (sube/baja).

Instalar MongoDB en Ubuntu

Uno de los propósitos de año nuevo, como ya visteis, ya me he puesto manos a la obra en aprender MongoDB. Para esto necesito tenerlo instalado en el ordenador (con SO Ubuntu) para poder trastear. Así que al turrón!

Primero de todo MongoDB nos recomienda importar la “public key” usada por el gestor de paquetes.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Luego crearemos una lista en un fichero para MongoDB

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

Seguidamente actualizaremos la base local de paquetes con:

sudo apt-get update

Finalmente instalaremos la última versión estable de MongoDB

sudo apt-get install -y mongodb-org

Y así se instala MongoDB en nuestro ordenador local con Ubuntu! :)

Para iniciar MongoDB tendremos que ejecutar en la consola “mongod”. Pero para acceder a la consola y poder ejecutar queries en la base de datos tendremos que usar el comando “mongo”.

Bonus: Para los curiosos, la versión de 32bits permite un límite teórico de 4,3GB de datos (2^32). Teniendo en cuenta padding, espacios vacíos y otras ineficiencias la empresa estima que el espacio disponible para datos es de entre 2GB y 4GB.

Revisión de los propósitos del 2014

Como cada año, toca la revisión de los objetivos que me puse a principios de año. El post que hice el año pasado lo podéis encontrar aquí. Para los que queráis saber mis objetivos para el año que viene tendréis que esperar algunos días aun :P

Profesional (y formación):

  1. Sacarme el nivel B2 de alemán => No conseguido :( A pesar de que asistí a clases de alemán del B2 ciertamente fue algo meramente recreativo y no considero que tenga el nivel tampoco.
  2. Sacarme el C1 de inglés en exámenes oficiales => La suerte ya está echada, hice el examen y estoy a la expectativa de la nota.
  3. Terminar la carrera. Todas las asignaturas y el PFC (Proyecto Final de Carrera) => Conseguido! Hacerlo lo he hecho todo, aunque por estrategia no doy la carrera por terminada y así poder hacer otro Erasmus (aumentando mis probabilidades de entrar en la universidad que quiero para el máster).
  4. Asistir a un mínimo de 12 eventos en Múnich => No conseguido. Ciertamente lo miré un par de veces pero al ser en alemán me frena bastante.
  5. Desarrollar alguna de mis ideas multimillonarias => No conseguido, simplemente ni se me pasó por la cabeza.
  6. Empezar a trabajar, encontrar un trabajo más o menos serio y remunerado. A ser posible en una startup => Conseguido! Empecé a trabajar en una startup de Wayra. El ambiente es muy relajado, los compañeros de trabajo muy amables y los horarios muy flexibles (todo en uno! :D).

Personal:

  1. Conocer a 12 personas alemanas de Múnich => Ni de coña, finalmente solo se ha quedado en una. La verdad es que no le puse mucho empeño y no conocí demasiadas personas solas.
  2. Escribir un post cada semana en este blog => Ni de coña. Durante el PFC terminé bastante quemado y dejé de escribir una temporada.
  3. Tirarme en paracaídas => Nope, sinceramente más allá de la idea no puse los medios para conseguirla. Me pilla bastante lejos e ir para no poder saltar da como un poco de palete.
  4. Leer 12 libros => Si! de forma más o menos regular pero si que los he leído. Aunque  no todos merecen reviews en este blog.
  5. Visitar Suiza y Liechtenstein => Nope, casi ni pensamiento de eso.
  6. Correr una Maratón sub 3.30h => No, cuando tuve la oportunidad me lesioné y perdí el físico sin llegar a estar funcional para el esperado día.

Propósitos extras:

  1. Aprender a hacer surf => No conseguido :( Me surgió la oportunidad pero no el tiempo. El PFC se me comió literalmente todo el verano.
  2. Sacarme algún título de escalada o practicarla de forma más o menos regular => Ni si quiera se me pasó por la cabeza.
  3. Esquiar en los Alpes => Conseguido! :) Fui a esquiar a Garmisch-Partenkirchen, a pesar de que el tiempo y la nieve no fueron idóneos me lo pasé  muy bien. Luego fui a Wipptal dónde el tiempo y la nieve fueron mejores.
  4. Ir al carnaval de Köln (Colonia) => No conseguido, esto tiene que ver con la esquiada. Tuve que escoger y me quedé con ir a esquiar por proximidad.
  5. Conseguir monetizar de algún modo el proyecto mencionado en el apartado profesional. => Lo dicho no hice nada.
  6. Ir por St. Patrick (17 marzo) a Irlanda y beber cerveza y de paso aprovechar para visitar Irlanda => No conseguido, supongo que ya lo sabía desde el momento que lo puse en esta lista. Pero lo celebré en Múnich viendo la cabalgata con su posterior concierto y su cerveza verde :P
  7. Meditar de forma regular => Conseguido! He meditado un rato cada día antes de ir a dormir y algunas veces durante el día. Y la verdad es que estoy contento con los resultados, ha sido como pretendía.

Lo que no me he propuesto pero he conseguido:

  1. Fui a una flashmob. Concretamente a la no “pants subway ride” en Múnich. Pensaba que me daría vergüenza o pasaría frío (fue en enero) pero ninguna de las dos cosas. Al ser estaciones subterráneas no se pasa frío, y al no ser el único te sientes como más acompañado. Para los que queráis, hay un vídeo en el que por cierto salgo dos veces.
  2. Publiqué un artículo en la revista de la universidadl’Oasi. Esto es algo que quiero hacer desde hace tiempo. Un amigo mio está en la revista (y era el presidente) por lo que aproveché mi Erasmus para escribir dos páginas.
  3. Ayudé con la organización de TEDxTUM. La verdad es que no fue premeditado. Lo vi y decidí apuntarme para ver como funciona des de dentro la organización de este tipo de eventos. La verdad es que nos quedó muy bien, más de lo que cabía esperar.
  4. Fui a una “spartan race (creo que un equivalente es el “Tough Guy Competition” del Gran Bretaña). En este caso consistía en 13km de carrera con 21 obstáculos. Posiblemente uno de los momentos mas duros del año. El reto en si no era correr los 13km, sino los obstáculos que te agotan mucho más físicamente y mentalmente que simplemente correr. Realmente paso mucho tiempo en mi cabeza la posibilidad de abandonar, porqué lo pasé bastante mal. Pero ahora sabiendo que no es santo de mi devoción y estando en la saca, no volveré a participar en nada parecido por lo menos a corto plazo.
  5. He aprendido a bailar salsa, con la tontería al final he hecho un combo de cursos que me ha llevado del nivel principiante al nivel avanzado II. La verdad es que tenia en mente aprender a bailar, se me presentó la oportunidad y la cogí sin dudar y no me arrepiento. Aunque he aprendido que mejor con pareja o alguien con quien ir regularmente.
  6. Conocí Dinamarca en un viaje de cinco días en la capital, Copenhagen.

Sinceramente creo que hay mucho rojo pero creo que las circunstáncialas me han llevado a esto y he conseguido otras metas que ni me había planteado.

Feliz navidad y próspero año nuevo!

Propósitos para el 2015

Dicen que los propósitos de año nuevo sirven para hacer durante el nuevo año lo que no estabas preparado para hacer el año anterior. En cierto modo creo que es cierto, uno empieza de 0 y tiene que avanzar, por lo que es año nuevo se tienen que coger los conocimientos del pasado y mejorarlos. Vivir es seguir mejorando, ya hace algunos años que hago públicos mis objetivos de año nuevo. Para los curiosos aquí encontrareis los objetivos del año pasado.

Este año toca nuevos propósitos y objetivos. Como cada año, los propósitos tienen algunas características, como que sean concretos, medibles y relevantes. Pero esta vez voy a poner la forma que voy a seguir para conseguirlos. Sin más dilaciones aquí os dejo la lista de los propósitos del 2015:

Profesional (y formación):

  1. Esta vez si que va a la vencida, sacarme el B2 de alemán. Para esto voy a apuntarme a una academia e asistir a clase regularmente y además hacer el examen del Goethe nivel b2 o el test DaF entre septiembre y diciembre de este año.

  2. Asistir a un mínimo de 12 eventos en Múnich. Para hacer contactos sobre el terreno, conocer el ecosistema de startups y practicar un poco mi alemán. En los que constarán los eventos que organice Wayra Alemania y algunos de MongoDB.

  3. Desarrollar una idea multimillonaria. Por lo menos todos los domingos por la tarde que esté en casa me sentaré a programarla y a final de año estará online.

  4. Trabajar más en el marketing del blog. Para esto los domingos por la mañana escribiré el post juntamente con 3 comentarios a otros blogs con referencia a distintos artículos.

  5. Entrar en el máster de informática de la TUM (Technische Universität München) en octubre.

  6. Aprender MongoDB. Para esto ya me he registrado para la introducción con python en de Enero hasta febrero, luego haré el curso intermedio que está en Udacity. En vacaciones de verano haré el tercer curso, el avanzado, y finalmente entre septiembre-diciembre me apuntaré para el examen.

Personal:

  1. Salir de mi circulo de amistades habitual y volver a asistir solo a eventos para conocer gente. Priorizando los de habla germana. Los eventos serán una vez al mes de couchsurfing, otra vez de Munich International Friends, otra de Munich network y cuando se pueda y surja hablar con un desconocido.

  2. Correr una Maratón sub 3.30h aunque me gustaría poner sub 3h me decantado por algo más moderado. Este será el objetivo para la maratón de Múnich en Octubre. Para conseguirlo entrenaré desde junio siguiendo un plan de entrenamiento.

  3. Seguir con mi “tradición” de doce libros al año.

  4. Tirarme en paracaídas. Ya fui una vez y no pudo ser debido al mal tiempo (mucho viento). Esta vez si que si, en semana santa cuando no tenga compromisos familiares llamaré para ver si se puede y si no en vacaciones de verano cada día hasta que lo consiga.

  5. Visitar Suiza y Liechtenstein, que quedó pendiente el año pasado y esta vez no lo voy a desaprovechar. No sé cuanto tiempo permaneceré tan cerca. Para visitarlos voy a aprovechar en verano unos días antes de ir hacia Barcelona o a la vuelta para ir a ver estos países.

  6. Empezar a cocinar más decentemente, variado, equilibrado, sano y con menor cantidad de carne y gluten (sin comprar alimentos gluten-free). Esto incluye hacerme tuppers si es necesario. (Como consecuencia lateral empezar un blog de alimentación?)

Propósitos extras:

  1. Mejorar los artículos ya escritos de este blog. Cuando haya tiempo y ganas me gustaría reescribir algunos artículos que se hayan quedado desfasados, ampliarlos o simplemente mejorar el estilo visual.

  2. Ir al carnaval de Köln (Colonia). Ya lo tenía pendiente el año pasado y no pudo ser, se intentará este año.

  3. La intención es que a parte de construir un proyecto monetizarlo antes de fin de año. Aunque solo sirva para cubrir gastos.

  4. Mejorar mis habilidades de escritura en inglés asistiendo a algún curso en la universidad.

  5. Leer cada día por lo menos 15min antes de ir a la cama.

  6. Escribir un research paper y publicarlo. Con el mero propósito de ganar puntos para entrar en el máster de la TUM.

Y para variar como cada año, ante la duda decir “si”, ser feliz, sobrevivir otro año más y conquistar el mundo!

Feliz navidad y próspero año nuevo! :D

Git Merging con Ubuntu (Linux)

Como muchos programadores de Linux ya os habréis dado cuenta, no hay una aplicación nativa de GitHub para Linux (a diferencia de Windows y Mac). Sinceramente me parece algo ilógico ya que los programadores tenemos una tendencia a gravitar hacia Linux. Pero a grandes males grandes remedios, no? Cuando en un repositorio tenemos conflictos (merge conflict) y hay que solventarlos, una herramienta de merge nos va a ser bastante útil más que resolver el conflicto a mano o usando la consola. Una GUI, aunque no lo parezca, es bastante útil en algunos casos.

He probado kdiff3 y meld. A mi parecer no tienen punto de comparación, claramente la mejor herramienta es meld por algunas simples razones.

Kdiff3:

Captura de pantalla de la GUI de kdiff3

  • Me parece que usa una GUI obsoleta y poco intuitiva.
  • No encontré la opción para cambiar el idioma (la instalé des de Alemania y estaba en alemán).

Meld

Captura de pantalla de la GUI de meld

  • Por el contrario su GUI es más intuitiva y algo más moderna.
  • Estaba en inglés des del principio.
  • No me gustó que creara dos ficheros, para el archivo remoto y otro para el local (además del que se sube a la rama).

Para usar estos merge tools usaremos esta linea en la consola (cambiando meld por kdiff3 si te gusta más este):

 git mergetool -t meld

Puede ser que no los tengas instalados, usando el siguiente comando lo instalaremos (o kdiff3 en vez de meld):

sudo apt-get install meld

Finalmente una vez convencido de la herramienta podremos usar la siguiente linea para guardar la herramienta deseada e iniciar el programa que más nos haya gustado cada vez que surja un merge conflict.

git config --global merge.tool meld

Si conoces una herramienta mejor no puedes en dejarlo en los comentarios. Me encantará conocerla! :)

Fuente e imágenes

Git avanzado: Etiquetas, logs y el botón del pánico

Una vez inicializado git, conocidos los primeros comandos y aprendido a hacer ramas con git ahora toca aprender un poco sobre etiquetas (tags), logs y que hacer cuando la lías parda.

Las etiquetas sirven básicamente para etiquetar commits. ¿Y para que quiere uno etiquetar commits? Bien, pues para indicar en que momento se definió una versión de la aplicación. Para crear una etiqueta usaremos:

 git tag NumeroVersion idCommit

El id del Commit son los primeros 10 caracteres del commit al que queremos etiquetar. Te preguntarás, ¿y como se esos 10 caracteres? Pues fácil te vas al log, y para ver el log usarás el comando:

 git log

Si quieres algo más sofisticado y con menos ruido puedes filtrar por autor:

 git log --author=NombreUsuario

Sólo que archivos fueron cambiados:

 git log –name-status

O si aun así quieres ver todo el árbol con todas las ramas y etiquetas puedes usar el comando:

 git log --graph --oneline --decorate --all

En cualquier caso si quieres indagar más profundamente échale una ojeada a:

 git log --help

En el hipotético caso de que la hayas liado parda y no sepas como solucionar el problema eliminando todos los cambios locales y commits hechos trayendo la versión de la rama master más reciente. Ten en cuenta que sobre-escribirás todos tus ficheros, pero si aun así lo deseas deberás usar los siguientes comandos:

 git fetch origin
 git reset --hard origin/master

Para los que hayáis llegado tan lejos decir que git tiene incorporado algo parecido a una interfaz gráfica. Recordar que no hay para linux una GUI que permita hacer push y toda la mandanga, solo está en Mac y WIndows. Pero para acceder a su sucedáneo se puede acceder escribiendo en la consola:

gitk

Pero si aun así preferís seguir usando la linea de comandos quizás os interese colorear un poco el output con el comando

git config color.ui true

o en los logs simplemente mostrar sólo una linea por commit con:

 git config format.pretty oneline

Como crear ramas (branches) con git

Ahora que ya tenemos git inicializado  y hemos aprendido unos primeros pasos tocará empezar con unos conceptos un poco más avanzados. En este post aprenderemos a crear ramas. Normalmente los proyectos usan ramas para mantener la rama master “más limpia”, evitar commits a medias y evitar conflictos.

Para que nos entendamos la rama master es la rama principal y en las otras ramas es dónde hacemos los cambios. Para crear una rama empezaremos con:

 git checkout -b NombreRama

Como ya vimos después de aplicar los cambios en nuestra rama tocará subir los cambios al directorio remoto haciendo un:

 git push

Una vez terminados todos los cambios y dar la rama por acabada realizaremos el merge. Que básicamente es mezclar nuestros cambios con la rama master. Para esto usaremos el comando:

git merge nombreRama

Algunas veces esto ocasionará conflictos que deberemos solventar. Para ver los conflictos podemos usar:

 git diff <source_branch> <target_branch>

Y si hemos intentado hacer un “merge” que ha sido fallido debido a los conflictos deberemos volver a hacer un:

git add nombreArchivo

Una vez terminado del todo lo que podemos hacer es volver a la rama master con:

git checkout master

Y finalmente borrar la rama con el comando:

git branch -d feature_x

Cabe mencionar que la rama “no está disponible para terceros” a menos que se haga un push al repositorio remoto. Esto se puede hacer con el comando:

git push origin

Para los que les haya interesado este post sobre como crear ramas (branches) en git quizás les interese indagar un poco más en este [EN] modelo de creación de ramas con git. Haciendo un resumen rápido, tienen la rama principal, luego la rama developer y a partir de aquí crean ramas de features.

La retribución para empleados en startups

Por mucho que uno quiera montar una empresa siendo solamente una persona es muy complicado. A pesar de ser más de un fundador, tarde o temprano siempre tocará fichar a empleados (a menos que la empresa se vaya a pique). Cuando uno va a fichar empleados ya sabe que no va a poder pagar salarios de rockstar developer, pero esto no es excusa para que la oferta de trabajo sea menos competitiva.

Por trabajar en una startup no necesariamente tienes que tener un salario más bajo. Aunque ante el hipotético caso de que la startup esté en fase semilla (seed founding) probablemente si que vayas a tener un salario inferior al nivel de mercado. En caso de ser así, en teoría, esto se tiene que compensar con más acciones. Además como bien se indica en este artículo es recomendable pactar que salario vas a tener cuando se consiga la financiación de series A.

Para los que somos de números un ejemplo para explicar la compensación en acciones vale más que mil palabras (o eso dicen). Suponiendo que en cualquier otra empresa te iban a pagar 50.000€/año pero por el hecho de ser una startup te pagarán 40.000€/año. La diferencia entre ambos valores es lo que pierdes (o dejas de ganar) son 10.000€ al año. El periodo de consolidación es estimado por el CEO de la startup es de 4 años. Por lo que “perderás” 10.000€ cada año durante 4 años, en total 40.000€. Por lo que te tienen que pagar 40.000€ en opciones. El precio real de estas opciones es lo que valen menos lo que tengas que pagar por ellas. A la cantidad de acciones que quieras tienes que añadirle el riesgo, el coste de oportunidad y otros factores que consideres importantes. Si quieres una idea sobre que multiplicadores para tener una mejor estimación de cuantas debes pedir puedes consultar [EN].

Si consideráis que hay muchas variables al aire y queréis algo más tangible en Quora han hecho un rango de que cantidad de shares que recibe normalmente un nuevo empleado en una empresa [EN].

  • Empresas de 1 a 10 personas, 0.5% – 2.0%
  • Empresas de 11 a 50 personas, 0.1% – 1.0%
  • Empresas de 51 a 200 personas, 0.01% – 0.2%
  • Empresas de 201 a 500 personas, hasta un máximo de 0.05% (en la respuesta se comenta que solo había una empresa que lo hacía).

Teniendo en cuenta que como menos personas haya más cercana al número más grande deberá ser la retribución, viéndose el rango como lineal y no escalado. El primer empleado tenderá a obtener un 2% – 3%, el segundo entre 1% – 2% y siguiendo así. A medida que se va creciendo la proporción va disminuyendo de forma continua hasta llegar a no dar opciones de compra de acciones. Como muy bien es indicado en este post [EN] la función debe de ser más o menos continua. El enlace anterior también ofrece otras estimaciones y datos sobre el porcentaje de acciones relacionado con el tipo de trabajo que es desempeñado por cada persona.

Pero no te dejes engañar por las acciones. Deberás considerar que la mayoría de startups no llegan a durar más que unos años. Además, en la mayoría de exits, los que se ganan la mayor parte del dinero son los fundadores y los inversores, que son al mismo tiempo los que tomaron un mayor riesgo y mayor porcentaje de accionariado ostentan. Pero esto no es todo, si haces números verás que hacerse rico con este método es bastante complicado.

Por ejemplo, asumamos que te van a dar el 1% de la empresa a cambio de permanecer con ellos 4 años (asumiendo también que no se va a diluir tu parte). Cuando llega el esperado día, la empresa se va a comprar por 50 millones. Pues bien, a ti te tocarán 500.000. No está mal eh! Pero tienes que pensar que son a repartir en 4 años que has estado. Deberás asumir que la empresa se puede comprar por bastante menos o que durante esos cuatro años la startup se fuera al garete o que realmente no lograra despegar del todo. Por lo que has tardado 4 años en tener éxito de la noche al día. No nos engañemos tampoco, este dinero te va a ayudar a tapar agujeros (pagar muchos impuestos) y comprarte una casita mona pero no te va a solucionar la vida. Si quieres indagar un poquito más en la trampa de las acciones [EN].