GRANDES HACKERS


Julio 2004

(Este ensayo se deriva de una charla en la OSCON 2004.)

Hace unos meses terminé un nuevo libro, y en las reseñas noté palabras como "provocativo'' y "controversial.”  Por no mencionar "idiota''.

No tenía intención de hacer que el libro fuera polémico. Estaba tratando de hacerlo eficiente. No quería desperdiciar el tiempo de las personas diciéndoles cosas que ya supieran. Es más eficiente darles únicamente las diferencias. Pero supongo que está destinado a convertirse en un libro alarmante.

Edisons


No hay discrepancia sobre cual es la idea más controversial: la sugerencia de que la variación en la riqueza pudiera no ser un problema tan grande como pensamos.

No he dicho en el libro que la variación en la riqueza fuera en sí una cosa buena. He dicho que en algunas situaciones puede ser una señal de cosas buenas. Un punzante dolor de cabeza no es una cosa buena, pero puede ser un signo de algo bueno: por ejemplo, que estás recuperando la conciencia después de haber sido golpeado en la cabeza.

La variación en la riqueza puede ser un signo de la variación en la productividad. (En una sociedad de uno, son idénticos.) Y eso es, casi seguro, algo bueno: si tu sociedad no tiene variación en la productividad, no se debe probablemente a que todo el mundo sea Thomas Edison. Con más seguridad es porque no tienes Thomas Edisons.

En una sociedad de baja tecnología no ves mucha variación en la productividad. Si tienes una tribu de nómadas recogiendo leña para el fuego, ¿cuánto más productivo será el mejor recolector que el peor? ¿Un factor de dos? Mientras que cuando le das a la gente una herramienta compleja como una computadora, la variación en lo que pueden hacer con ella es enorme.

Esta no es una idea nueva. Fred Brooks escribió acerca de ella en 1974, y el estudio que citaba fue publicado en 1968. Pero creo que subestimó la variación entre los programadores. Él escribió acerca de la productividad en líneas de código: los mejores programadores pueden resolver un problema determinado en una décima parte del tiempo. Pero ¿y si el problema no se da? En programación, como en muchos otros campos, la parte más difícil no es solucionar los problemas, sino decidir cuáles son los problemas a resolver. La imaginación es difícil de medir, pero en la práctica domina el tipo de productividad que se mide en líneas de código.

La productividad varía en cualquier campo, pero hay pocos en los que varía tanto. La variación entre programadores es tan grande que se convierte en una diferencia de especie. Sin embargo, no creo que esto sea algo intrínseco a la programación. En todos los campos la tecnología aumenta las diferencias de productividad. Creo que lo que está sucediendo en la programación es sólo que tenemos una gran cantidad de influencia tecnológica. Pero en todos los ámbitos la influencia es cada vez más amplia, por lo que la variación que vemos es algo que cada vez más campos verán al pasar el tiempo. Y el éxito de empresas y países dependerá cada vez más en cómo lidian con ella.

Si la variación en productividad aumenta con la tecnología, entonces la contribución de los individuos más productivos no sólo será  desproporcionadamente grande, sino que crecerá con el tiempo. Cuando llegas al punto en que el 90% de la producción de un grupo es creado por un 1% de sus miembros, pierdes en grande si algo (ya sea incursiones vikingas, o la planificación central) arrastra su productividad hasta la media.

Si queremos sacar el máximo partido de ellos, necesitamos comprender a estas personas especialmente productivas. ¿Qué los motiva? ¿Qué necesitan para hacer su trabajo? ¿Cómo reconocerlos? ¿Cómo conseguir que vengan a trabajar para ti? Y luego, por supuesto, esta la pregunta, ¿cómo llegas a ser uno de ellos?

Más que Dinero


Conozco a un puñado de súper-hackers [a], así que me senté y pensé en lo que tienen en común. Su característica distintiva es, probablemente, que realmente aman programar. Los programadores ordinarios escriben código para pagar las cuentas. Los grandes hackers piensan en ello como algo que hacen por diversión, y están encantados de encontrar gente que les paga por ello.

Se dice que los grandes programadores a veces son indiferentes al dinero. Esto no es del todo cierto. Es verdad que lo único que realmente les importa es hacer trabajo interesante. Pero si haces el dinero suficiente puedes trabajar en lo que quieras, y por esa razón los hackers se sienten atraídos por la idea de hacer cantidades muy grandes de dinero. Pero en tanto tengan que seguir presentandose a trabajar todos los días, se preocupan más por lo que hacen allí que por lo mucho que les paguen por ello.

Económicamente, este es un hecho de la mayor importancia, porque significa que no tienes que pagarles a los grandes hackers lo que realmente valen. Un gran programador puede ser diez o cien veces más productivo que uno ordinario, pero se considerara a sí mismo afortunado de cobrar tres veces más. Como explicaré más adelante, esto es en parte porque los grandes hackers no saben lo buenos que son. Pero también porque el dinero no es lo principal que ellos quieren.

¿Qué quieren los hackers? Al igual que todos los artesanos, los hackers quieren buenas herramientas. De hecho, esto se sobreentiende. A los buenos hackers les resulta insoportable utilizar malas herramientas. Simplemente se negarán a trabajar en proyectos con una mala infraestructura.

En una startup [b] para la que alguna vez trabajé, una de las cosas que colgaban en nuestro tablero de avisos era un anuncio de IBM. Era la foto de una AS400, y el titular decía, creo, "los hackers la desprecian.” [1]

Cuando decides que infraestructura utilizar para un proyecto, no estás simplemente tomando una decisión técnica. También estás tomando una decisión social, y esta puede ser la más importante de las dos. Por ejemplo, si tu empresa quiere escribir algún software, puede parecer una elección prudente escribirlo en Java. Pero cuando se elige un lenguaje, también se está eligiendo una comunidad. Los programadores que podrás contratar para trabajar en un proyecto Java no serán tan inteligentes como los que podrían trabajar en un proyecto escrito en Python. Y la calidad de tus hackers, es probablemente más importante que el lenguaje que elijas. Aunque, francamente, el hecho de que los buenos hackers prefieran Python a Java debe decirte algo acerca de los méritos relativos de esos lenguajes.

La gente de negocios prefiere lenguajes más populares porque los ven como normas. No quieren apostar la compañía en Betamax. La cuestión con los lenguajes, sin embargo, es que no son sólo normas. Si tienes que mover bits en una red, por todos los medios usa TCP/IP. Sin embargo, un lenguaje de programación no es sólo un formato. Un lenguaje de programación es un medio de expresión.

He leído que Java ha superado a Cobol como el lenguaje más popular. Como norma, no se podría desear más. Pero como medio de expresión, se podría hacer mucho mejor. De todos los grandes programadores que se me ocurren, sólo conozco uno que voluntariamente programaría en Java. Y de todos los grandes programadores que se me ocurren que no trabajan para Sun, con Java, no conozco ninguno.

Los grandes hackers también suelen insistir en el uso de software de código abierto. No sólo porque es mejor, sino porque les da más control. Los buenos hackers insisten en el control. Esto es parte de lo que los hace buenos hackers: cuando algo no funciona, tienen que arreglarlo. Quieres que se sientan de esta manera acerca del software que están escribiendo para ti. No debería sorprenderte cuando se sienten de la misma manera acerca del sistema operativo.

Hace un par de años un capitalista de riesgo amigo mío me platico acerca de una startup en la que estaba involucrado. Sonaba prometedora. Pero la próxima vez que hablé con él, dijo que habían decidido construir su software en Windows NT, y acababan de contratar a un desarrollador NT muy experimentado para ser su Oficial Técnico en Jefe. Cuando escuché esto, pensé, estos tipos están condenados. En primer lugar, el Oficial Técnico en Jefe no podía ser un hacker de primera, ya que para convertirse en un eminente desarrollador NT habría tenido que utilizar NT voluntariamente, múltiples veces, y no podía imaginar a un gran hacker haciendo eso, y en segundo lugar, aunque fuera bueno, tendría dificultades para contratar a alguien bueno para trabajar con él si el proyecto tenía que construirse en NT. [2]

La Última Frontera


Después del software, la herramienta más importante para un hacker es probablemente su oficina. Las grandes empresas piensan que la función del espacio de oficinas es expresar rango. Pero los hackers utilizan sus oficinas para algo más que eso: utilizan su oficina como un lugar para pensar. Y si eres una empresa de tecnología, sus pensamientos son tu producto. Por lo tanto hacer que los hackers trabajen en un entorno ruidoso y lleno de distracciones es como tener una fábrica de pinturas donde el aire está lleno de hollín.

La tira cómica de Dilbert tiene mucho que decir acerca de los cubículos, y con razón. Todos los hackers que conozco los detestan. La mera perspectiva de ser interrumpido es suficiente para evitar que los hackers trabajen en problemas difíciles. Si deseas conseguir que realmente se trabaje en una oficina con cubículos, tienes dos opciones: trabajar en casa, o llegar temprano o tarde o en fin de semana, cuando no hay nadie más ahí. ¿Acaso no se dan cuenta las empresas de que esto es una señal de que algo está mal? Se supone que un entorno de oficina es algo que te ayuda a trabajar, no algo con lo que a pesar de todo trabajas.

Compañías como Cisco se enorgullecen de que todo el mundo tiene un cubículo, incluso el director general. Pero no están tan avanzados como ellos piensan, obviamente todavía ven el espacio de oficina como un símbolo de rango. Obsérvese también que Cisco es famoso por hacer muy poco desarrollo de productos en casa. Consiguen nuevas tecnologías comprando las startups que las crearon, donde presumiblemente los hackers tenían un lugar tranquilo para trabajar.

Una gran compañía que entiende lo que los hackers necesitan es Microsoft. Una vez vi un anuncio de reclutamiento de Microsoft con una gran imagen de una puerta. Trabaja para nosotros, era la premisa, y te daremos un lugar para trabajar donde de hecho se puede trabajar. ¿Y sabes? Microsoft es notable entre las grandes compañías en que son capaces de desarrollar software en casa. No bien, tal vez, pero lo suficientemente bien.

Si las empresas quieren que los hackers sean productivos, deberían ver lo que hacen en sus casas. En casa, los hackers acomodan las cosas a su manera para conseguir hacer el máximo. Y cuando trabajan en casa, no lo hacen en espacios ruidosos, abiertos; trabajan en habitaciones con puertas. Trabajan en lugares acogedores, vecindarios con gente alrededor y un lugar para caminar cuando tienen que reflexionar sobre algo, en lugar de en cajas de vidrio situadas en acres de estacionamientos. Tienen un sofá en el que pueden tomar una siesta cuando se sienten cansados, en lugar de sentarse en estado de coma en su escritorio, simulando trabajar. No hay un equipo de personas con aspiradoras rugiendo todas las tardes durante las principales horas de hackeo. No hay juntas o, Dios no lo quiera, retiros empresariales o ejercicios de formación de equipos. Y cuando observas lo que están haciendo en esa computadora, encontrarás que refuerza lo que dije antes acerca de las herramientas. Puede ser que en el trabajo tengan que utilizar Java y Windows, pero en casa, donde pueden elegir por sí mismos, es más probable encontrarlos usando Perl y Linux.

De hecho, las estadísticas acerca de Cobol o Java como los lenguajes más populares pueden ser engañosas. Lo que debemos ver, si queremos saber qué herramientas son las mejores, es lo que los hackers eligen cuando pueden elegir libremente, es decir, en sus propios proyectos. Cuando haces esa pregunta, encuentras que los sistemas operativos de código abierto tienen ya una cuota de mercado dominante, y probablemente el lenguaje número uno es Perl.

Interesante


Junto con buenas herramientas, los hackers quieren proyectos interesantes. ¿Qué hace a un proyecto interesante? Bueno, obviamente aplicaciones abiertamente sexys como aviones furtivos o software de efectos especiales, serán interesantes para trabajar. Sin embargo, cualquier aplicación puede ser interesante si plantea nuevos retos técnicos. Así que es difícil predecir qué problemas les gustaran a los hackers, porque algunos se vuelven interesantes sólo cuando las personas que trabajan en ellos descubren un nuevo tipo de solución. Antes de ITA (que escribió el software dentro de Orbitz), las personas que trabajaban en la búsqueda de tarifas aéreas probablemente pensaban que era una de las más aburridas aplicaciones imaginables [c]. Pero ITA lo hizo interesante, redefiniendo el problema de una manera más ambiciosa.

Creo que lo mismo ocurrió en Google. Cuando Google se fundó, la sabiduría convencional entre los llamados portales era que la búsqueda era aburrida y sin importancia. Pero los chicos de Google no pensaban que la búsqueda fuera aburrida, y por eso lo hacen tan bien.

Esta es un área donde los gerentes pueden hacer la diferencia. Al igual que un padre le dice a un niño: —Apuesto a que no puedes limpiar toda tu habitación en diez minutos; un buen gerente puede a veces redefinir un problema de forma más interesante. Steve Jobs parece ser particularmente bueno en esto, en parte, simplemente por tener altos estándares. Había muchas computadoras pequeñas y baratas antes que la Mac. Él redefinió el problema como: haz una que sea hermosa. Y eso probablemente impulsó más a los desarrolladores de lo que cualquier incentivo o señuelo hubiera podido.

Ciertamente cumplieron. Cuando la Mac apareció por vez primera, ni siquiera tenías que encenderla para saber que sería buena, podías saberlo por la caja. Hace unas semanas estaba caminando por la calle en Cambridge, y en la basura de alguien vi lo que parecía ser una caja para transportar Macs. Miré en el interior y había una Mac SE. Me la llevé a casa, la conecté y arrancó. La cara feliz de Macintosh y, a continuación, el buscador. ¡Dios mío, era tan simple! Era como… Google.

A los hackers les gusta trabajar para personas con altos estándares. Pero no basta con ser exigente. Tienes que insistir en las cosas correctas. Esto por lo general significa que tú mismo tienes que ser un hacker. He visto artículos ocasionales acerca de cómo administrar a los programadores. En realidad debería haber dos artículos: uno sobre qué hacer si tú mismo eres un programador, y uno sobre qué hacer si no lo eres. Y el segundo, probablemente se podría condensar en una palabra: renuncia.

El problema no es tanto la gestión diaria. En realidad los buenos hackers son prácticamente auto-administrados. El problema es que si no eres un hacker, no sabrás quiénes son los buenos hackers. Un problema similar explica por qué los coches americanos son tan feos. Lo llamo la paradoja del diseño. Podría pensarse que puedes hacer tus productos hermosos tan sólo contratando a un gran diseñador para crearlos. Pero si tú mismo no tienes buen gusto, ¿cómo lo reconoceras? Por definición no lo reconocerias por su cartera. Y no te puedes guiar por los premios que ha ganado o los puestos de trabajo que ha tenido, porque en el diseño, como en casi todos los campos, estos tienden a ser impulsados por la moda y las opiniones, con la capacidad real en un distante tercer lugar. No hay manera de evitarlo: no puedes dirigir un proceso destinado a producir cosas hermosas sin saber lo que es hermoso. Los coches americanos son feos porque las compañías de automóviles estadounidenses están a cargo de personas con mal gusto.

Muchas personas en este país piensan en el gusto como algo difícil de alcanzar, o incluso frívolo. No es ninguno de los dos. Para impulsar el diseño, un gerente debe ser el usuario más exigente de los productos de la empresa. Y si tienes realmente buen gusto, puedes, como Steve Jobs, hacer que el que te satisfagan sea el tipo de problema en el que le gusta trabajar a los buenos empleados.

Repugnantes Problemitas


Es muy fácil decir qué tipo de problemas no son interesantes: aquellos en los que en lugar de resolver algunos grandes problemas claros, tienes que resolver un montón de pequeños y desagradables. Uno de los peores tipos de proyectos es escribir una interfaz para una pieza de software que esta llena de errores. Otra es cuando tienes que personalizar algo para las complejas y mal definidas necesidades de un cliente individual. Para los hackers este tipo de proyectos equivalen a la muerte de mil heridas.

La característica distintiva de los problemitas repugnantes es que no aprendemos nada de ellos. Escribir un compilador es interesante porque te enseña lo que es un compilador. Pero escribir una interfaz para una pieza de software con errores no te enseña nada, porque los errores son aleatorios. [3] Por lo tanto, no es sólo el fastidio lo que hace que los buenos hackers eviten los pequeños problemas repugnantes. Es más una cuestión de auto-preservación. Trabajar en problemitas repugnantes te hace estúpido. Los buenos hackers los evitan por la misma razón por la que las modelos evitan las hamburguesas con queso.

Por supuesto, algunos problemas poseen inherentemente esta característica. Y debido a la oferta y la demanda, pagan especialmente bien. Así que una empresa que encuentre la manera de conseguir que los grandes hackers trabajen en problemas tediosos será un gran éxito. ¿Cómo lo consigues?

Un lugar donde esto sucede es en startups. En la nuestra teníamos a Robert Morris [d] trabajando como administrador del sistema. Eso es como tener a los Rolling Stones tocando en un Bar Mitzvah. No puedes contratar esa clase de talento. Pero la gente está dispuesta a hacer cualquier cantidad de trabajo pesado para las compañías de las cuales ellos son los fundadores. [4]

Las compañías más grandes solucionan el problema creando divisiones. Hacen que las personas inteligentes trabajen para ellos por separado estableciendo un departamento de Investigación y Desarrollo donde estos empleados no tienen que trabajar directamente en los desagradables problemitas de los clientes. [5]  En este modelo, el departamento de investigación funciona como una mina. Generan ideas nuevas; que tal vez el resto de la compañía será capaz de utilizar.

Puede que no tengas que llegar a este extremo. La programación de Abajo-Hacia Arriba sugiere otra forma de partición de la empresa: haz que la gente inteligente trabaje como fabricante de herramientas. Si tu empresa fabrica software para hacer x, ten un grupo que construya herramientas para escribir software de ese tipo, y otro que utilice estas herramientas para escribir las aplicaciones. De esta manera podrias hacer que la gente inteligente escriba el 99% de tu código, pero todavía los mantendrías casi tan aislados de los usuarios como lo estarían en un departamento de investigación tradicional. Los creadores de herramientas tendrían usuarios, pero estos usuarios serían sólo los propios desarrolladores de la compañía. [6]

Si Microsoft hubiera utilizado este enfoque, su software no estaría tan lleno de agujeros de seguridad, porque en tanto la gente inteligente menos se dedique a escribir las aplicaciones reales, menos estarán haciendo cosas de bajo nivel como asignación de memoria. En lugar de escribir Word directamente en C, estarían conectando juntos grandes bloques de Lego de lenguaje Word. (Duplo, creo, es el término técnico).

Aglutinación


Junto a problemas interesantes, lo que los buenos hackers quieren es otros buenos hackers. Los grandes hackers tienden a agruparse― a veces de manera espectacular, como en Xerox PARC [e]. Así que no atraerás buenos hackers en proporción lineal a lo bien que puedas crear un ambiente para ellos. La tendencia a agruparse revela que es más bien como la raíz cuadrada del entorno. Por lo tanto, el ganador se lleva todo. En un momento dado, sólo hay unos diez o veinte lugares en los que la mayoría de los hackers querrían trabajar, y si no eres uno de ellos, no sólo tendrás menos hackers grandiosos, no tendrás ninguno.

Tener hackers grandiosos no es, por sí solo, suficiente para hacer una empresa exitosa. Funciona bien para Google e ITA, que son dos de los puntos calientes en este momento, pero no ayuda a Máquinas Pensantes o a Xerox. Sun tuvo una buena carrera por un tiempo, pero su modelo de negocios es un elevador que va hacia abajo. En esa situación, incluso los mejores hackers no pueden salvarte.

Creo, sin embargo, que todas las cosas en igualdad de condiciones, una compañía que pueda atraer a grandes hackers tendrá una ventaja enorme. Algunas personas no estarán de acuerdo con esto. Cuando estábamos haciendo rondas a las empresas de capital de riesgo en la década de 1990, varias nos dijeron que las compañías de software no ganan escribiendo software grandioso, sino a través de la marca, dominando los canales y haciendo los tratos correctos.

Parecían realmente creer esto, y creo saber por qué. Creo que lo que una gran cantidad de compañías de capital de riesgo busca, al menos inconscientemente, es al siguiente Microsoft. Y, por supuesto, si Microsoft es su modelo, no debes buscar empresas que esperan ganar escribiendo un gran software. Sin embargo, los capitalistas de riesgo están equivocados buscando al próximo Microsoft, porque ninguna startup puede ser el próximo Microsoft a menos que alguna otra compañía esté dispuesta a inclinarse en el momento justo y ser el próximo IBM.

Es un error utilizar a Microsoft como modelo, porque toda su cultura se deriva de ese pequeño golpe de suerte. Microsoft es una mala referencia. Si los descartas, encontraras que los buenos productos tienden a ganar en el mercado. Lo que los capitalistas de riesgo deberían buscar es el próximo Apple, o el próximo Google.

Creo que Bill Gates lo sabe. Lo que le preocupa acerca de Google no es el poder de su marca, sino el hecho de que tienen mejores hackers. [7]

Reconocimiento


Entonces, ¿quiénes son los grandes hackers? ¿Cómo sabes cuándo te encuentras con uno? Eso, resulta ser muy difícil. Incluso los hackers no pueden saberlo. Estoy bastante seguro ahora de que mi amigo Trevor Blackwell es un gran hacker. Habrás leído en Slashdot cómo hizo su propio Segway. Lo destacable de este proyecto fue que escribió todo el software en un solo día (en Python, por cierto).

Para Trevor, eso equivale a sacar par en el campo de golf. Pero cuando lo conocí, pensé que era un completo idiota. Estaba de pie en la oficina de Robert Morris balbuceándole acerca de una y otra cosa, y recuerdo estar parado detrás de él haciendole gestos frenéticos a Robert para espantar a este loco de su oficina y que pudiéramos ir a almorzar. Robert dice que también lo juzgó mal al principio. Al parecer, cuando Robert lo conoció, Trevor acababa de empezar un nuevo plan que involucraba escribir todo acerca de cada aspecto de su vida en una pila de tarjetas que llevaba consigo a todas partes. Acababa de llegar de Canadá, y tenía un fuerte acento canadiense y un corte de cabello ridículo.

El problema se agrava por el hecho de que los hackers, a pesar de su reputación de desinterés social, en ocasiones ponen una buena cantidad de esfuerzo en parecer inteligentes. Cuando estaba en la escuela de posgrado solía pasar al Laboratorio de Inteligencia Artificial del MIT de vez en cuando. Al principio era un poco intimidante. Allí todo el mundo hablaba muy rápido. Pero después de un tiempo aprendí el truco de hablar rápido. No tienes que pensar más rápido, sólo tienes que utilizar el doble de palabras para decir todo.

Con esta cantidad de ruido en la señal, es difícil reconocer a los buenos hackers cuando te los encuentras. No puedo distinguirlos, incluso ahora. Tampoco lo puedes saber por sus currículos. Parece que la única manera de juzgar a un hacker es trabajar con él en algo.

Y esta es la razón por la cual las zonas de alta tecnología sólo se dan cerca de las universidades. Aquí, el ingrediente activo no son tanto los profesores como los estudiantes. Las startups crecen cerca de las universidades porque estas reúnen a jóvenes prometedores y los hacen trabajar en los mismos proyectos. Los inteligentes descubren quienes son los otros inteligentes, y juntos preparan nuevos proyectos propios.

Como no se puede reconocer a un gran hacker, excepto trabajando con él, los mismos hackers en sí no pueden decir que tan buenos son. Esto es verdad hasta cierto punto en la mayoría de los campos. He descubierto que las personas que son grandes en algo no están tan convencidos de su propia grandeza como desconcertados del por qué todo el mundo parece tan incompetente.

Pero es particularmente difícil para los hackers saber que tan buenos son, debido a que es difícil comparar su trabajo. En casi todos los otros campos esto es más fácil. En los cien metros sabes en 10 segundos quien es el más rápido. Incluso en las matemáticas parece haber un consenso general acerca de cuáles problemas son difíciles de resolver y lo que constituye una buena solución. Pero hackear es como escribir. ¿Quién puede decir cuál de las dos novelas es mejor? Desde luego, no los autores.

Con los hackers, al menos, otros hackers lo pueden decir. Eso es porque, a diferencia de los novelistas, los hackers colaboran en proyectos. Cuando le envías algunos problemas difíciles por la red a alguien, descubres muy pronto que tan rápido te regresa la solución. Pero los hackers no pueden verse a si mismos trabajar. Así que si le preguntas a un gran hacker que tan bueno es, es casi seguro que responderá: no lo sé. No es sólo que este siendo modesto. Realmente no lo sabe.

Y ninguno de nosotros sabe, excepto por la gente con la que en realidad hemos trabajado. Lo cual nos pone en una situación extraña: no sabemos quiénes deben ser nuestros héroes. Los hackers que se hacen famosos tienden a serlo por accidentes casuales de relaciones públicas. De vez en cuando tengo que dar un ejemplo de un gran hacker, y nunca sé a quién usar. Los primeros nombres que vienen a mi mente tienden a ser siempre gente que conozco personalmente, pero parecería poco convincente utilizarlos. Por lo tanto, creo que tal vez debería decir Richard Stallman o Linus Torvalds, o Alan Kay, o alguien famoso por el estilo. Pero no tengo idea si estos tipos son grandes hackers. Nunca he trabajado con ellos en nada.

Si hay un Michael Jordan del hacking, nadie lo sabe, incluyéndolo a él.

Cultivo


 Por último, la pregunta que los hackers se han estado haciendo: ¿cómo convertirse en un gran hacker? No sé si esto sea posible. Pero ciertamente es posible hacer cosas que te hacen estúpido, y si puedes hacerte estúpido, probablemente también puedas hacerte inteligente.

Puede que la clave para ser un buen hacker sea trabajar en lo que te gusta. Cuando pienso en los grandes hackers que conozco, una cosa que tienen en común es la extrema dificultad para hacerlos trabajar en cualquier cosa que no les guste. No sé si esto es causa o efecto, puede ser ambos.

Para hacer algo bien tienes que amarlo. Así que en la medida en que puedas preservar el hackear como algo que te gusta, es muy probable que lo hagas bien. Intenta conservar el sentido de maravilla que tenias acerca de la programación a los 14 años. Si te preocupa que tu trabajo actual esté pudriendo tu cerebro, probablemente lo está haciendo.

Los mejores hackers tienden a ser inteligentes, por supuesto, pero eso es cierto en muchos campos. ¿Hay alguna cualidad que sea única a los hackers? Le pregunté a algunos amigos, y la primera cosa que mencionaron fue la curiosidad. Siempre había supuesto que todas las personas inteligentes eran curiosas― que la curiosidad era simplemente la primera derivación del conocimiento. Pero al parecer los hackers son particularmente curiosos, sobre todo, acerca de cómo funcionan las cosas. Esto tiene sentido, porque los programas son en efecto descripciones gigantes de cómo funcionan las cosas.

Varios amigos mencionaron la capacidad de los hackers para concentrarse― su capacidad, como dijo uno de ellos, para "sintonizar sólo lo que está en sus propias cabezas.'' Ciertamente había notado esto y he escuchado a varios hackers decir que después de haber bebido solo la mitad de una cerveza ya ni siquiera pueden programar. Así que tal vez hackear requiera alguna habilidad especial para concentrarse. Tal vez los grandes hackers pueden cargar una gran cantidad de contexto en su cabeza, de modo que cuando ven una línea de código, no solo ven esa línea, sino todo el programa a su alrededor. John McPhee escribió que el éxito de Bill Bradley como jugador de baloncesto se debió en parte a su extraordinaria visión periférica. Una vista “perfecta” significa alrededor de 47 grados de visión periférica vertical. Bill Bradley tenía 70, podía ver la cesta cuando estaba mirando el suelo. Tal vez los grandes hackers tienen alguna habilidad innata similar. (Yo hago trampa utilizando un lenguaje muy denso, que contrae la cancha.)

Esto podría explicar la falta de conexión en los cubículos. Tal vez los responsables de las instalaciones, no teniendo nada de concentración para destruir, no tienen idea de que para un hacker trabajar en un cubículo es como tener el cerebro en una licuadora. (Mientras que Bill, si los rumores de autismo son verdaderos, lo sabe muy bien.)

 Una diferencia que he notado entre los grandes hackers y las personas inteligentes en general es que los hackers son más políticamente incorrectos. Al extremo en que hay un saludo secreto entre los buenos hackers, es cuando se conocen entre sí lo suficientemente bien para expresar opiniones que los harían ser apedreados a muerte por el público en general. Y puedo ver por qué la incorrección política sería una cualidad útil en la programación. Los programas son muy complejos y, por lo menos en manos de buenos programadores, muy fluidos. En tales situaciones, es útil tener un hábito de cuestionar los supuestos.

¿Es posible cultivar estas cualidades? No lo sé. Pero por lo menos puedes no reprimirlas. Así que aquí está mi mejor intento para una receta. Si es posible hacer de ti mismo un gran hacker, puede que la manera de hacerlo sea llevar a cabo el siguiente trato contigo mismo: Nunca trabajaras en proyectos aburridos (a menos que de no hacerlo tu familia muera de hambre), y, a cambio, nunca te permitirás hacer un trabajo a medias. Todos los grandes hackers que conozco parecen haber hecho este trato, aunque tal vez ninguno de ellos tenía otra opción.
 
 
 

 

Notas

 
[1] Para ser justos, debo decir que IBM hace equipo decente. Escribí esto en una portátil de IBM.

[2] Resultaron estar condenados. Cerraron pocos meses después.

[3] Creo que esto es lo que la gente quiere decir cuando se habla del "sentido de la vida." A primera vista, esto parece una idea extraña. La vida no es una expresión matemática, ¿cómo podría tener sentido? Pero puede tener una cualidad que sea muy parecida al significado. En un proyecto como un compilador, tienes que resolver muchos problemas, pero todos los problemas caen en un patrón, como en una señal. Mientras que cuando los problemas que tienes que resolver son aleatorios, son como el ruido.

[4] En un momento dado Einstein trabajó diseñando refrigeradores. (Tenía acciones.)

[5] Es difícil decir exactamente lo que constituye investigación en el mundo de la informática, pero como una primera aproximación, es software que no tiene usuarios.

No creo que sea la publicación lo que hace que los mejores hackers quieran trabajar en departamentos de investigación. Creo que es sobre todo no tener que asistir a una reunión de tres horas con un gerente de producto sobre los problemas de integración del clip parlante en la versión coreana 13.27 de Word.

[6] Algo similar ha estado ocurriendo durante mucho tiempo en la industria de la construcción. Cuando tienes una casa construida hace un par de cientos de años, los constructores locales habían construido todo en ella. Pero cada vez más lo que los constructores hacen es ensamblar componentes diseñados y fabricados por otras personas. Esto, como la llegada de la autoedición, ha dado a las personas la libertad para experimentar de manera desastrosa, pero sin duda es más eficiente.

[7] Google es mucho más peligroso para Microsoft de lo que Netscape lo fue. Probablemente más peligroso de lo que cualquier otra compañía lo ha sido. Entre otras cosas porque están decididos a luchar. En su página de empleos, dicen que uno de sus "valores fundamentales'' es " No seas malo.”  Para una empresa que vende aceite de soya o equipos de minería, tal declaración seria sólo una excentricidad. Pero creo que todos los que estamos en el mundo de la informática sabemos para quien es esa declaración de guerra.

Gracias a Jessica Livingston, Robert Morris, y Sarah Harlin por leer versiones anteriores de esta charla.



*Traducido del original Great Hackers por Paul Graham. Traducción: Armando Alvarez.


Notas del Traductor


[a] En La Palabra "Hacker" Paul Graham nos da una buena descripción del sentido en que hay que entender esta palabra: “Para la prensa popular, "hacker" significa alguien que irrumpe en las computadoras. Entre los programadores significa: un buen programador. Pero los dos sentidos están conectados. Para los programadores, "hacker" connota dominio en el sentido más literal: alguien que puede hacer que una computadora haga lo que él quiere—ya sea que la computadora quiera o no.”

[b] El termino startup define a una empresa de reciente creación orientada a la tecnología. El mismo Paul Graham la define a la perfección en Cómo Financiar una Startup: "Una empresa tiene que ser más que pequeña y de reciente creación para ser una startup. Hay millones de pequeñas empresas en Estados Unidos, pero sólo unas pocas miles son startups. Para ser una startup, una compañía tiene que ser un negocio de productos, no un negocio de servicios. Lo que no quiere decir que tiene que hacer algo físico, sino que tiene que tener una cosa que vende a mucha gente, en vez de hacer trabajos a medida para clientes individuales. El trabajo sobre encargo no es escalable. Para ser una startup tienes que ser la banda que vende un millón de copias de una canción, no el grupo que gana dinero tocando en bodas y Bar Mitzvahs individuales."*Debido a la cantidad de ocasiones que esta palabra aparece en el ensayo sólo se ha querido atraer la atención a ella en esta ocasión resaltandola en cursiva, en adelante aparecera con formato normal.

[c] ITA Software es una compañia de software de la industria de viajes establecida en Cambridge, Massachusetts. La compañía fue fundada por científicos de la computación del Laboratorio de Inteligencia Artificial del MIT en 1996. El 1 de Julio de 2010 ITA acordó ser adquirida por Google. El 8 de Abril de 2011, el Departamento de Justicia de Estados Unidos aprobó la compra. Como parte del acuerdo, Google debe licenciar el software de ITA a otros sitios web durante 5 años.

El primer producto de ITA fue un sistema de búsqueda de tarifas aéreas y fijación de precios llamado QPX. Este sistema es utilizado por agencias de viajes, como Orbitz, Bing Travel, Kayak.com, CheapTickets, y aerolíneas como American, United, US Airways, Virgin Atlantic, Alitalia, y ANA. ITA también cuenta con su propio sitio web basado en QPX, aunque no se puede comprar billetes en el mismo. [Fuente: Wikipedia en Inglés. Ver.]

[d] Robert Tappan Morris (tambien conocido como rtm) nació en 1965 y es profesor asociado en el Instituto Tecnológico de Massachussets en el departamento de Ingeniería Electrónica y Ciencias de la Computación. Es conocido por crear el Gusano Morris en 1988, considerado como el primer gusano de ordenador de la era de Internet. Es hijo de Robert Morris, ex jefe científico en el Centro Nacional de Seguridad Informática, una división de la agencia de Seguridad Nacional (NSA). [Fuente: Wikipedia. Ver]

[e] Xerox PARC (Palo Alto Research Center, “Centro de Investigación de Palo Alto”) era una división de investigación de Xerox Corporation, con sede en Palo Alto (California, EE.UU.). Fue fundado en 1970 y como consecuencia directa del fenomenal éxito de la empresa, incorporado en 2002 como una subsidiaria independiente pero de la que Xerox era el único dueño. Ahora PARC trabaja con otros socios comerciales (corporaciones importantes, empresas, concesionarios) y el gobierno. Tiene una reputación distinguida por sus contribuciones a los sistemas de tecnología de la información y de hardware, siendo el creador de algunos de los estándares actuales más comúnmente usados.

Fundado como una división de Xerox Corporation, PARC ha sido responsable de progresos bien conocidos e importantes tales como la impresión por láser, Ethernet, la moderna computadora personal, la interfaz gráfica de usuario (GUI), la computación ubicua, aplicaciones de silicio amorfo (a-Si), y avances en los semiconductores de muy alta escala de integración (VLSI). [Fuente: Wikipedia. Ver.]