Update (6/3/2014):

Visto que este post ha creado un poco de polémica  en la mencionada lista matizo unas cosas de cosas:

  1. No crítico la lista, sino a los trolls que la pululan.
  2. Mucha gente me ha dicho que simplemente ignore a estos personajes. Prefiero intentar cambiar las cosas y decir lo que no veo bien.
  3. “Deberías quitar el post”. Prefiero pensar que vivimos en un mundo donde podemos opinar libremente.
  4. Me llama la atención que cuando empezó el trolleo a la oferta, nadie de los que ahora se rasgan las vestiduras dijera nada de nada.

Y ahora el texto de la polémica:

Hoy publicábamos una oferta para Junior , decidimos publicarla en la lista de correo de python porque aunque no requerimos experiencia, la gente que provenga de esta lista puede que ya este familiarizada con el lenguaje. Un camino menos que recorrer.

Publicamos la  oferta más honesta que pudimos, intentando dejar claro qué hacemos, qué ofrecemos, qué esperamos del candidato y todas las condiciones que damos. Sinceramente creo que la oferta es muy muy buena, ya me hubiera gustado tener una oferta así cuando empecé.

Hemos recibido bastantes candidatos y de mucho nivel, de hecho algunos tienen demasiado :D Pero me quedé con muy mal sabor de boca, la primera respuesta que recibimos en la lista de python fue una crítica absurda, intentando desmontar nuestra integración con Gmail, con el argumento simple e infantil de yo no lo veo. La verdad es que me lo pensé tres y cuatro veces antes de publicar la oferta porque de todos es sabido que este tipo de personajes pululan por las listas.

No paro de darle vueltas a lo absurdo de la situación, a lo absurda que se está volviendo la comunidad.  De verdad es necesario estar intentando todo el día dejar a otros compañeros mal, estar todo el día intentando demostrar lo inteligente que eres, lo hipster, hacker o lo que sea? en serio? No hay nada mejor, nada que puedas aportar? Ni tan siquiera tomarte una birra? llamar a un amigo?

Por desgracia mi tiempo lo tengo muy limitado y será por eso que lo valoro tanto, antes de meterme en una lista a atizar a otros, prefiero leer un artículo, tocar la guitarra, bueno destrozarla :D, leer, tomarme una birra, un té, un café, hasta leche joder!

La verdad es que cansa mucho que siempre haya gente dispuesta a dar lecciones con cada sentencia que sale de su boca, yo ya ni lucho, me agotan demasiado estas luchas sin sentido.

Esto también viene a colación con dos podcast (uno y otro) que escuchaba hace poco sobre si estamos haciendo algo como Developers para mejorar la sociedad.
Sinceramente, no somos tan importante como pensáis algunos, no estamos cambiando la vida de nadie. El software en conjunto si lo es, pero los developers de forma individual NO, un médico hace mucho más que nosotros por la sociedad, es mucho más importante. Un activista de una ONG hace mucho más, se involucra en hacer cambios mucho más. Seguro que habrá algunos que sí, pero estoy seguro que no son los del ego gordo. Conozco muy poca gente que haga software que sirva para algo que realmente mejore la sociedad. Y por el contrario después de muchos años currando en esto, conozco a mucha mucha gente con un ego enorme.

Algunos os habéis aferrado a la etiqueta developer y habéis perdido por el camino las etiquetas más valiosas: empatía, compañerismo, humildad….

Equipos 4×4

noviembre 22, 2013

Recientemente en la empresa ha surgido el debate de si en un equipo (Scrum) todos los componentes deben saber hacer todas las tareas que surjan. Nuestros equipo está formado por 6 personas pero por distintos productos o partes de productos. Hay frontend, varios backends, dentro de los backends hay muchas matices, tenemos un plataforma que su punto fuerte es que es distribuida, otros que son meramente endpoints que integran servicios, etc. hay mucho de devops, etc. En tecnologías tenemos ruby, python, java, Spring Integration, Django, RabbitMQ, redis, couchdb, mysql y seguro que me dejo alguna.

De primeras para mi esto no es un equipo 100% scrum, sino que debería haber equipos separados por producto, proyecto, pero siendo tan pocos acabaríamos teniendo reuniones con nosotros mismos :D

Veo muy complicado que un equipo pueda ser productivo en todo, llevo más de 11 años trabajando en esto y todas las veces que lo he intentado ha fallado. Para mi, el problema es que una persona puede adquirir conceptos e ideas de otros proyectos y tecnologías pero si son demasiadas cosas, básicamente lo que se consigue es tener a una persona que no es productiva y que esta frustrada, más si pensamos que a una persona no le guste o no se encuentre cómoda en una tecnología o producto. 

Los que defienden este enfoque suelen decir que con el tiempo la gente ganará soltura y podrá ayudar y que haciendo pairing eso se consigue. Pero yo veo muy complejo que alguien llegue a ser tan productivo en algo como otro que lleva tiempo en eso y que le gusta, además de las aptitudes de cada uno. Me parece mucho presuponer pensar que alguien pueda ser igual de productivo que otro sin más. En mi opinión se corre el riesgo de acabar siendo aprendiz de todo y maestro de nada. 

Para mi es raro, por ejemplo imagina que tienes a Guido (http://www.python.org/~guido/) y le tienes haciendo frontend, si le gusta y quiere ir hacia ese camino perfecto, pero sino… estás desaprovechando demasiado lo que tienes en el equipo.

Además el tema del pairing, para mi ya se parece a las curas milagro,  es otra cosa que hecho en todas las empresas, y creo que funciona pero no es nada mágico ni nada para hacer a todas horas. Muchas de las veces que estoy haciendo pairing sé que los dos que estamos haciendo pairing podríamos avanzar más y mejor por separado y luego hacer pairing al final, para mergear o implementar las partes que se tocan.

La idea del post es básicamente conocer otras experiencias para intentar cambiar un poco mi forma de verlo, cambiar mi experiencia negativa para construir algo más productivo, así que ¿Cual es vuestra experiencia?

Cuántas veces has presenciado o protagonizado una escena como esta?:

  •   Sujeto A. Sabes, Pepe ha conseguido/aprobado/abierto/montado/organizado/etc X la semana  pasada?.
  •   Sujeto B. Bueno pero es que eso es fácil, tú o yo también podríamos hacerlo. O claro es que él/ella lo tiene más fácil porque X……

Incluso si lo que se ha conseguido es una partida de trivial, valga la palabra trivial doble aquí :D. Ha conseguido bastante más que tú, ha aportado más que tú y sobre todo no ha sido negativo ni destructivo como tú.

De primeras, mientras tú estás poniendo peros a las acciones de los demás, los demás están haciendo cosas importantes o no (eso depende de ellos por cierto). Es decir, mientras tú destruyes otros construyen.

Y ese comportamiento en mi opinión va de la mano del “a ver si hacen algo con la crisis porque todo está fatal”, es decir, que me resuelvan los problemas los demás, si me viene bien aplaudo y sino critico.

Learning Machine Learning

febrero 17, 2013

Llevo un tiempo intentando meterme en el mundo de Machine Learning, el año pasado hice un máster en el que se tocaba el tema de soslayo y me quede bastante intrigado sobre que algoritmos habría detrás. Así que una vez acabado el máster me puse a leer sobre el tema. Lo primero que hice fue comprarme un libro http://www.manning.com/pharrington/ pensando, iluso de mi, que sería capaz de tener una visión bastante consistente del tema, como lo había hecho con otros temas (no pondré ninguno para no herir sensibilidades, pero puedes coger 4 al azar de http://pragprog.com/).

Lo cierto es que no es un campo que puedas aprender leyendo un libro, tengo comprados varios sobre machine learning, no sabría decir lo que tardo en leer un libro de estos porque creo que no he acabado ninguno. Me suele pasar que empiezo a leer un libro, los primeros capítulos siempre son de cosas más o menos básicas a modo de resumen sobre lo que es machine learning, después empiezan los contenidos de verdad y en estos es donde me “pierdo”, no en el sentido literal de no saber donde estoy sino que las ganas de profundizar en ese tema me llevan a un montón de artículos, a otros libros, a hacer pruebas (flopezluis.github.com/MachineLearning o https://github.com/flopezluis/MachineLearning) y al final me encuentro que estoy leyendo el mismo tema en 4 libros diferentes y que llevo 4 meses con ello. No sé si es que los libros técnicos que leía hasta hace bien poco eran muy sencillos o si estos son demasiado complejos.  Tener tantos libros empezados me genera mal rollo, como si necesitará leerlos ya todos, como si tuviera prisa por leemos xD .

Después de 6 meses empapándome sobre Machine Learning todavía tengo la sensación de que no sé prácticamente nada :). Pero bueno algunas conclusiones si que puedo sacar después de este tiempo.

- No es un tema que puedas dominar rápidamente (o al menos yo), es una carrera de fondo.

- Se constante.

- Necesitas matemáticas y estadístcia, pero no te dejes acojonar por lo que se ve en las reviews de muchos libros, no son tan tan complejas. El problema está en que la mayoría de libros dan por hecho que deberías saberlas.

- Machine Learning es muy muy muy grande, céntrate en un tema primero, a ser posible simple, por ejemplo kNN y luego pasa el siguiente más simple.

- Si lo necesitas aplicar algún algoritmo para un caso concreto no necesitas profundizar en casi nada, hay un montón de software que te permite hacer todo sin pensar mucho en que estás haciendo. Hay libros que tocan bastante métodos de una forma muy general que te pueden ayudar, por ejemplo Machine Learning in action.

Por si alguien tiene curiosidad estos son los libros que tengo sobre el tema:

- Machine Learning in Action http://www.manning.com/pharrington/

- Learning from Data http://www.amazon.com/Learning-From-Data-Yaser-Abu-Mostafa/dp/1600490069

- Machine Learning  http://www.amazon.com/Machine-Learning-Tom-M-Mitchell/dp/0070428077/ref=sr_1_1?s=books&ie=UTF8&qid=1361100724&sr=1-1&keywords=Machine+Learning

- Data mining http://www.amazon.com/Data-Mining-Concepts-Methods-Algorithms/dp/0470890452

- Introduction to the Math of Neural Networks http://www.heatonresearch.com/book/introduction-neural-network-math.html

- Statistics in plain English http://www.amazon.com/Statistics-Plain-English-Third-Timothy/dp/041587291X/ref=sr_1_1?s=books&ie=UTF8&qid=1361100845&sr=1-1&keywords=statistics+in+plain+english

Hay alguno más que he usado a modo de consulta alguna vez, pero no los “tengo”.

BTW: No es que lleve 6 meses a piñón con esto, el trabajo me absorbe el 99% de mi tiempo libre, así que hay semanas enteras que no puedo ni leer una página. Que veo que se desanima la gente :D

Como he tenido bastantes problemas en poner en marcha BigCouch en funcionamiento dentro de amazon, pongo aquí los pasos que seguido para que le pueda servir a otro:

Abre los siguientes puertos en tus instancias:

  • 4369

  • 5984

  • 5986

  • Abre un rango de puertos para que los nodos (erlang) puedan comunicarse entre ellos, por ejemplo: 10000-11000

Instala bigCouch (http://bigcouch.cloudant.com/use). En ubuntu:

Configura cada nodo (http://bigcouch.cloudant.com/use):

  • En /opt/bigcouch/etc/vm.args:
    • Añade el nombre del nodo (ojo porque aquí está uno de los problemas). Tienes que añadir el internal hostname.
      -name bigcouch@i000.us-west-2.compute.internal
    • Establece la cookie, tiene que ser la misma en todos los nodos:
      -setcookie xxxxxxxxxxxxxxxxxx
    • Establece el rango de puertos que pueda usar erlang:

      -kernel inet_dist_listen_min 10000
      -kernel inet_dist_listen_max 11000

  • En  /opt/bigcouch/etc/default.ini:
    • Busca [httpd] y cambia bid_address para que pueda ser accesible desde fuera:

      port = 5986
      bind_address = 0.0.0.0

  • Para y arranca de nuevo bigcouch:
    • sudo sv stop bigcouch
    • sudo sv start bigcouch

Estos pasos los haces en todos tus nodos y ahora ya puedes añadir nodos:

  •  curl -X PUT http://000.us-west-2.compute.amazonaws.com:5986/nodes/bigcouch@001.us-west-2.compute.internal -d {}

Para comprobar que realmente se han añadido bien:

  • curl http://000.us-west-2.compute.amazonaws.com:5984/_membership

Aquí deberías ver cada nodo que añadas dentro de all_nodes.

Si quieres borrar un nodo, recuerda que cada nodo está dentro de una base de datos, así que lo borras como un documento normal:

curl -X DELETE http://000.us-west-2.compute.amazonaws.com:5986/nodes/bigcouch@ 001.us-west-2.compute.internal/?rev=revision

 

Compromiso

diciembre 24, 2012

La marcha de un amigo de una empresa en la que trabajé con él, me ha hecho pensar en los motivos por los que he salido de las empresas en las que he trabajado. 

Creo que en casi todas el motivo ha sido el mismo, la falta de compromiso por mi parte, o mejor dicho la perdida del mismo, así como dejar de creer en el proyecto.

Echando la vista atrás, veo los mismos errores en casi todas las empresas. No saben gestionar/aprovechar el compromiso del equipo. Tener personas comprometidas es, en mi opinión, una de las piezas más importantes en una empresa de producto, sobre todo si está empezando. Es curioso como he visto una y otra vez el mismo error, muchos acaban confundiendo compromiso con exigencia y empiezan a tomar como una obligación lo que hasta entonces eran gestos voluntarios o de compromiso. He visto casos bastante sangrantes, como “pedir” a una persona que trabajará el día del bautizo de su hijo. Suele empezar con pequeños detalles, llamadas a las 22:00, reuniones en días festivos, en vacaciones, etc.. y en esos casos ocurre un cambio muy interesante, lo que en principio era compromiso se convierte en hastío y se pierde completamente la ilusión y la fe en el proyecto, hasta el punto que al menos en mi caso es irrecuperable. 

Creo que el problema está en que a menudo se pierde la medida y el significado del compromiso. Seamos sinceros los unos con los otros, por mucho que te guste un proyecto, nadie puede estar igual de comprometido que el que se lleva la mejor parte, por qué existe el equity? porque se intenta mantener a la gente comprometida en base a expectativas futuras, pero se debe mantener un equilibrio, agradecer y fomentar el que la gente esté comprometida, pero no abusar del compromiso.

Querer es empezar

agosto 21, 2012

Suelo ser muy pesado con esta frase,  solo hay una pequeña diferencia con la frase “Querer es poder” pero tiene un trasfondo muy diferente. Querer es el primer paso para poder hacer algo, pero solo es eso un comienzo, después viene el esfuerzo, la dedicación, la constancia, etc, pero en otras ocasiones hay otros condicionantes determinantes sobre los que tenemos poco control, por poner un ejemplo tonto, por mucho que todo el mundo se esfuerce, no todos serán astronautas. Uno de estos factores  es lo que me ha inspirado a escribir este post. El lugar donde nacemos y las oportunidades que éste nos da, es por desgracia,  a menudo, el factor más determinante. Éste es tristemente el caso de Samia Yusuf Omar  http://www.elmundo.es/elmundodeporte/2012/08/20/masdeporte/1345448676.html.

Image

 Quien me conoce bien, sabe que no suelo quejarme mucho de la vida, intento aprovechar todas las oportunidades y tomarme todos los problemas con cierta relatividad, la mayoría de problemas “del primer mundo” da hasta vergüenza comentarlos cuando vemos la realidad del mundo.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.