Hackers vs. Space Cowboys

Gravity Clooney BullockEn este post explico porqué deberias contratar un Space Cowboy y no un Hacker. La justificación es un poco difusa y narrativa, espero que no aburra en exceso a nadie. Además, antes de sacar la antorcha y despacharme a gusto porque en un blog uno puede escribir lo que le dé la gana, debo decir que conozco al menos un par de grupos en Madrid en los cuales buscar a un joven programador “hacker” con talento. Uno es ßetabeers de Miquel Camps y otro Ironhack de Gonzalo Manrique y Ariel Quiñones. Los cuales serían los sitios donde yo empezaría a buscar desarrolladores junior si estuviese pensando en montar algo ahora mismo en España.

Si hay una palabra que se ha ido pervirtiendo a lo largo de la historia de la informática esa es “hacker”. Desde su nacimiento en los años sesenta en el MIT esa gente apasionada del Software Libre y la WWW pasó a ser identificada primero con los piratas informáticos y, recientemente, con los jóvenes fanáticos de la tecnología.

Cuando tenía 13 años “descubrí” el algoritmo de ordenación por burbuja y lo programé en LISP. Durante un breve tiempo me sentí muy orgulloso de mi mismo, pero poco después me llevé una gran decepción al comprobar que se me había ocurrido, de hecho, uno de los algoritmos más ineficientes que se conocen para ordenar una lista. Lo que realmente descubrí ese día es que no soy una persona extraordinariamente inteligente y que haría mejor en sacar el mejor partido de mis capacidades intelectuales antes que intentar explotarlas directamente por fuerza bruta. Ahora, 28 años después de aquello, me encuentro semanalmente a gente a gente haciendo hallazgos como el mio con el bubble sort, sólo que no se dan cuenta de lo que han descubierto…

En la vida se necesitan un mínimo de 10 años para dominar cualquier disciplina. Da igual que quieras ser violinista, karateka o programador, da igual. Es posible leerse la teoría en menos tiempo, pero ningún matemático es realmente bueno hasta haber hecho todos los ejercicios, tarea que requiere bastante tiempo.

Hackers

El perfil típico del autollamado hacker es alguien que se ha topado con alguna herramienta y le parece la rebomba. Pasa mucho con los frameworks de JavaScript. No voy a mencionar ninguno concreto porque podría ser tiroteado por algún zelote, pero si te bajas la versión no comprimida de los fuentes y tratas de averiguar lo que está haciendo algún framework entre bastidores podrían entrarte ganas de cortarte las venas, lo cual me lleva a la primera razón por la que no deberías contratar a un hacker.

Los hackers tienen tendencia a incluir librerías de moda y novedosas en el diseño. Les gusta, sobre todo, la novedad, y les dan subidones cuando creen que han descubierto la próxima píldora mágica de la productividad. Es innegable que hemos avanzado mucho en la infraestructura software ¡Dios! En los 90 teníamos que escribir hasta las estructuras de datos más básicas (gracias Joshua Bloch). Pero hay que saber sobre las librerías que son como los huevos de Alien: los metes en tu nave espacial y, al principio, no sucede nada, hasta que de repente empiezan a salir arañas con sangre ácida que se comen a toda la tripulación. El caso más notable de “librería Alien” (de los que yo conozco) es probablemente Hibernate y las otras implementaciones de JPA pero hay muchísimos ejemplos de librerías que se han popularizado sin benchmarks ni evaluaciones previas lo suficientemente exhaustivas.

Hacker VisualBASIC

La siguiente desventaja de los hackers modernos es su inexperiencia en el mantenimiento de sistemas en producción. Desarrollar un software es sólo una parte de su ciclo de vida. Luego hay que mantenerlo y el mantenimiento es un arte en sí mismo que los hackers suelen odiar porque la regla básica es justo lo contrario de lo que a ellos les gusta hacer: “si funciona ¡no lo toques!”.

Muchos presuntos hackers sufren una carencia de conocimientos fundamentales suficientemente sólidos. Los que van un poco mejor pueden explicar, por ejemplo, los entresijos del garbage collector de Java, pero pregúntale a alguno de ellos quién es Donald Knuth y mira la cara de haba que se le pone, o escríbele esto en una pizarra DTIME(ƒ(n)) ⊊ DTIME(ƒ(n) · log²(ƒ(n))) y pídele que te explique qué significa.

Si el hacker te dice que va a diseñar un sistema escalable, pídele un modelo sobre como cambiarán los tiempos de latencia en función del número de usuarios o un cálculo de cómo influirá el tiempo medio entre fallos de los discos duros en la disponibilidad del sistema.

Los hackers, en general, no hablan mucho. O mejor dicho no hablan mucho sobre lo que deberían hablar en las empresas. Es por eso que siguen haciendo falta esos mandos intermedios de las tiras de Dilbert que van a reuniones y mueven información de un lado para otro que se podría mover de forma más eficiente si los programadores estuviesen realmente por la labor de ello.

Por último, pregúntale al hacker cuántos centenares de miles de líneas de código ha escrito. Programar se parece en cierto sentido a pilotar. Durante la mayoría de las horas de vuelo no pasa realmente gran cosa, hasta que un dia te pilla un temporal huracanado con viento cruzado y entonces se comprueba qué tan bueno eres haciendo crabbing.

Space Cowboys

Entonces ¿cómo se identifica a un genuino experto en programación a quien confiarle tu sistema crítico? Lo sabrás por lo siguiente:

• Te dirá que el problema nuevo que afrontais en realidad no es tan nuevo y que se parece a otro que él ya resolvió largo tiempo atrás.
• Te hablará de la experiencia de usuario y no de trucos milagrosos con la implementación.
• El Space Cowboy no te prometerá milagros, sabe que muchos remedios funcionan, pero la píldora mágica para programar es igual de falsa que la píldora mágica para adelgazar.
• Discutirá contigo sobre las implicaciones a largo plazo de cada decisión técnica en vez de sugerirte como podríais lanzar una beta el mes que viene.
• Ante una caída del sistema te enumerará una lista de causas posibles, con la probabilidad de cada una y estimando de tiempo de resolución para cada caso.
• No oirás al Space Cowboy aburriéndote con una chapa sobre cómo hace su trabajo, eso son detalles técnicos que a ti no te importan, lo único que quieres oir (aunque todavía no lo sepas) es como vas a aumentar el ROI de tu negocio.

Tampoco todos los Space Cowboys son buenos, por supuesto. Algunos viven anclados en tecnologías del pasado. Capaces son de decirte que no vale la pena programar nada que no sea en VisualBASIC 6. Otros vienen con una mochila a cuestas y tratan de colarte por todos los medios unas librerías que llevan años escribiendo por su cuenta. Algunos dejaron de aprender por el camino y no pocos se quemaron tanto en el ejercicio de la profesión que ya les da todo igual. La innovación la generan habitualmente los becarios y no los mamuts pues estos últimos están más interesados en hablar de lo que ya construyeron antes que en construir nada nuevo.

En resumen, concluiré con una referencia a la película Gravity: deberías contratar un Space Cowboy y no un Hacker por dos razones: 1ª) porque sabe que el mismo motor que sirve para aterrizar sirve para despegar, y 2ª) porque sabe dónde tienen los rusos escondido el vodka.

Post relacionado: ¿Porqué la gente odia a los programadores?.

Actualización: El buen desarrollador (Asier Marqués)

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Esta entrada fue publicada en Organizando la Comunidad. Modelos de Desarrollo. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *