GRANDES HACKERS
OriginalJuly 2004
(Este ensayo está basado en una charla en Oscon 2004.)
Hace unos meses terminé un nuevo libro, y en las reseñas sigo viendo palabras como "provocativo" y "controvertido". Por no mencionar "idiota".
No tenía la intención de hacer el libro controvertido. Estaba tratando de hacerlo eficiente. No quería perder el tiempo de la gente diciéndoles cosas que ya sabían. Es más eficiente solo darles las diferencias. Pero supongo que eso debe dar lugar a un libro alarmante.
Edisons
No hay controversia sobre qué idea es la más controvertida: la sugerencia de que la variación en la riqueza podría no ser tan grande problema como creemos.
No dije en el libro que la variación en la riqueza era en sí misma una cosa buena. Dije que en algunas situaciones podría ser una señal de buena cosas. Un dolor de cabeza palpitante no es algo bueno, pero puede ser una señal de algo bueno, por ejemplo, que estás recuperando la conciencia después de ser golpeado en la cabeza.
La variación en la riqueza puede ser una señal de variación en la productividad. (En una sociedad de uno, son idénticos.) Y eso es casi seguro que es algo bueno: si tu sociedad no tiene variación en la productividad, probablemente no sea porque todos son Thomas Edison. Probablemente es porque no tienes ningún Thomas Edison.
En una sociedad de baja tecnología no se ve mucha variación en la productividad. Si tienes una tribu de nómadas que recolectan palos para un fuego, cómo ¿más productivo va a ser el mejor recolector de palos 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 es enorme.
Esa no es una idea nueva. Fred Brooks escribió sobre ella en 1974, y el estudio que citó se publicó en 1968. Pero creo que él subestimó la variación entre los programadores. Escribió sobre productividad en líneas de código: los mejores programadores pueden resolver un problema dado en una décima parte del tiempo. Pero ¿qué pasa si el problema no está dado? En la programación, como en muchos campos, la parte difícil no es resolver problemas, sino decidir qué problemas 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 tipo. No creo que esto sea algo intrínseco a la programación, sin embargo. En cada campo, la tecnología magnifica las diferencias en productividad. Creo que lo que está pasando en la programación es solo que tenemos una gran cantidad de tecnología apalancamiento. Pero en todos los campos la palanca se está volviendo más larga, por lo que la variación que vemos es algo que más y más campos verán a medida que pase el tiempo. Y el éxito de las empresas y los países, dependerá cada vez más de cómo lo enfrenten.
Si la variación en la productividad aumenta con la tecnología, entonces la contribución de los individuos más productivos no solo será desproporcionadamente grande, sino que en realidad crecerá con el tiempo. Cuando llegas al punto en el que el 90% de la producción de un grupo está creada por el 1% de sus miembros, pierdes mucho si algo (ya sean incursiones vikingas, o la planificación central) reduce su productividad al promedio.
Si queremos obtener lo mejor de ellos, necesitamos comprender estos personas especialmente productivas. ¿Qué los motiva? ¿Qué necesitan para hacer sus trabajos? ¿Cómo los reconoces? ¿Cómo lo haces ¿que vengan a trabajar para ti? Y luego, por supuesto, está la pregunta, ¿cómo te conviertes en uno?
Más que dinero
Conozco un puñado de súper hackers, así que me senté y pensé en lo que tienen en común. Su cualidad definitoria es probablemente esa realmente les encanta programar. Los programadores ordinarios escriben código para pagar las cuentas. Los grandes hackers lo ven como algo que hacen por diversión, y para lo cual están encantados de encontrar gente que les pague por ello.
A veces se dice que los grandes programadores son indiferentes al dinero. Esto no es del todo cierto. Es cierto que todo lo que realmente les importa es hacer un trabajo interesante. Pero si ganas suficiente dinero, obtienes trabajar en lo que quieras, y por esa razón los hackers están atraídos por la idea de ganar cantidades realmente grandes de dinero. Pero mientras todavía tengan que presentarse a trabajar todos los días, ellos se preocupan más por lo que hacen allí que por cuánto les pagan por eso.
Económicamente, este es un hecho de la mayor importancia, porque significa que no tienes que pagarles a los grandes hackers nada parecido a lo que valen. Un gran programador puede ser diez o cien veces más productivo que uno ordinario, pero se considerará afortunado de que le paguen el triple. Como explicaré más adelante, esto es en parte porque los grandes hackers no saben lo buenos que son. Pero también es porque el dinero no es lo principal que quieren.
¿Qué quieren los hackers? Como todos los artesanos, a los hackers les gustan las buenas herramientas. De hecho, eso es una subestimación. Los buenos hackers encuentran insoportable usar herramientas malas. Simplemente se negarán a trabajar en proyectos con la infraestructura incorrecta.
En una startup donde una vez trabajé, una de las cosas que estaba pegada en nuestra tablón de anuncios era un anuncio de IBM. Era una foto de un AS400, y el titular decía, creo, "los hackers lo desprecian eso." [1]
Cuando decides qué infraestructura usar para un proyecto, eres no solo tomar una decisión técnica. También estás tomando una social decisión, y esta puede ser la más importante de las dos. Para por ejemplo, si tu empresa quiere escribir algún software, podría parecer una elección prudente escribirlo en Java. Pero cuando eliges un lenguaje, también estás eligiendo una comunidad. Los programadores que tú puedes contratar para trabajar en un proyecto de Java no serán tan inteligentes como los los que podrías conseguir para trabajar en un proyecto escrito en Python. Y la calidad de tus hackers probablemente importa más que la idioma que elijas. Aunque, francamente, el hecho de que los buenos hackers prefieran Python a Java debería decirte algo sobre el relativo méritos de esos lenguajes.
A los tipos de negocios les gustan los lenguajes más populares porque los ven lenguajes como estándares. No quieren apostar la empresa a Betamax. El problema con los lenguajes, sin embargo, es que no son solo estándares. Si tiene que mover bits por una red, por todos los medios usa TCP/IP. Pero un lenguaje de programación no es solo un formato. Un lenguaje de programación es un medio de expresión.
He leído que Java acaba de superar a Cobol como el más popular idioma. Como estándar, no se podía desear más. Pero como un medio de expresión, podrías hacerlo mucho mejor. De todos los grandes programadores que se me ocurren, conozco solo a uno que lo haría voluntariamente programa en Java. Y de todos los grandes programadores que se me ocurren que no trabajan para Sun, en Java, no conozco a ninguno.
Los grandes hackers también suelen insistir en usar software de código abierto. No solo 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 está roto, necesitan arreglarlo. Tú quieres que se sientan así con el software que están escribiendo para tú. No deberías sorprenderte cuando se sientan igual con respecto a el sistema operativo.
Hace un par de años, un amigo capitalista de riesgo me contó sobre un nuevo startup en la que estaba involucrado. Sonaba prometedor. Pero el siguiente vez que hablé con él, dijo que habían decidido construir su software en Windows NT, y acababan de contratar a un desarrollador de NT muy experimentado para ser su director técnico. Cuando escuché esto, pensé, estos tipos están condenados. Uno, el CTO no podía ser de primera clase hacker, porque para convertirse en un destacado desarrollador de NT él tendría que haber usado NT voluntariamente, varias veces, y no podía imaginar un gran hacker haciendo eso; y dos, incluso si fuera bueno, él tendría difícil contratar a alguien bueno para que trabaje para él si el proyecto tuviera que construirse sobre NT. [2]
La frontera final
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 usan sus oficinas para más que eso: ellos usan su oficina como un lugar para pensar en. Y si eres un compañía de tecnología, sus pensamientos son tu producto. Así que hacer que los hackers trabajen en un ambiente ruidoso y molesto es como tener una fábrica de pintura donde el aire está lleno de hollín.
La tira cómica Dilbert tiene mucho que decir sobre los cubículos, y con buena razón. A todos los hackers que conozco los desprecian. La mera perspectiva de ser interrumpido es suficiente para evitar que los hackers trabajen en problemas difíciles. Si quieres hacer un trabajo real en una oficina con cubículos, tienes dos opciones: trabaja desde casa, o ven temprano o tarde o en un fin de semana, cuando no haya nadie más. ¿No se dan cuenta las empresas que esto es una señal de que algo está roto? Una oficina el entorno se supone que es algo que te ayuda trabajar, no algo que trabajas a pesar de ello.
A empresas como Cisco les enorgullece que todos allí tengan un cubículo, incluso el CEO. Pero no son tan avanzados como creen; obviamente todavía ven el espacio de la oficina como una insignia de rango. Tenga en cuenta también que Cisco es famosa por hacer muy poco desarrollo de productos interno. Obtienen nueva tecnología comprando las startups que la crearon, donde presumiblemente los hackers sí tenían un lugar tranquilo para trabajar.
Una gran empresa que entiende lo que necesitan los hackers es Microsoft. Una vez vi un anuncio de reclutamiento para Microsoft con una gran imagen de un puerta. Trabaja para nosotros, la premisa era, y te daremos un lugar para trabajar donde realmente puedas hacer tu trabajo. Y ya sabes, Microsoft es notable entre las grandes empresas en el sentido de que son capaces de desarrollar software internamente. No bien, quizás, pero lo suficientemente bien.
Si las empresas quieren que los hackers sean productivos, deberían mirar lo que hacen en casa. En casa, los hackers pueden organizar las cosas ellos mismos para que puedan hacer más. Y cuando trabajan en casa, los hackers no trabajan en espacios abiertos y ruidosos; trabajan en habitaciones con puertas. Ellos trabajan en lugares acogedores y cercanos con gente alrededor y en algún lugar para caminar cuando necesitan reflexionar sobre algo, en lugar de en vidrio cajas en acres de estacionamientos. Tienen un sofá donde pueden tomar una siesta cuando se sienten cansados, en lugar de sentarse en coma en su escritorio, pretendiendo trabajar. No hay un equipo de personas con aspiradoras que rujan todas las noches durante el horario estelar horas de hacking. No hay reuniones ni, Dios no lo quiera, corporativo retiros o ejercicios de creación de equipos. Y cuando miras lo que están haciendo en esa computadora, encontrarás que refuerza lo que yo dijo antes sobre las herramientas. Puede que tengan que usar Java y Windows en el trabajo, pero en casa, donde pueden elegir por sí mismos, tú es más probable que los encuentres usando Perl y Linux.
De hecho, estas estadísticas sobre Cobol o Java como el lenguaje más popular pueden ser engañosos. Lo que deberíamos mirar, si queremos saber qué herramientas son las mejores, es lo que los hackers eligen cuando pueden elegir libremente, es decir, en proyectos propios. Cuando preguntas esa pregunta, encuentras que los sistemas operativos de código abierto ya tienen una cuota de mercado dominante, y el lenguaje número uno es probablemente Perl.
Interesante
Además de las buenas herramientas, los hackers quieren proyectos interesantes. Qué ¿hace que un proyecto sea interesante? Bueno, obviamente abiertamente sexy aplicaciones como aviones furtivos o software de efectos especiales serían interesante trabajar. Pero cualquier aplicación puede ser interesante si presenta desafíos técnicos novedosos. Por eso es difícil predecir qué problemas les gustarán a los hackers, porque algunos se vuelven interesante solo cuando las personas que trabajan en ellos descubren una nueva tipo de solución. Antes de ITA (quien escribió el software dentro de Orbitz), la gente que trabajaba en búsquedas de tarifas aéreas probablemente pensó que era una de las aplicaciones más aburridas imaginables. Pero ITA hizo interesante por redefinición el problema de una manera más ambiciosa.
Creo que lo mismo pasó en Google. Cuando se fundó Google, la sabiduría convencional entre los llamados portales era que la búsqueda era aburrido y sin importancia. Pero los chicos de Google no pensaron la búsqueda era aburrida, y por eso la hacen tan bien.
Esta es un área donde los gerentes pueden marcar la diferencia. Como un padre diciendo a un niño, apuesto a que no puedes limpiar tu habitación completa en diez minutos, un buen gerente puede a veces redefinir un problema como un uno más interesante. Steve Jobs parece ser particularmente bueno en esto, en parte simplemente por tener altos estándares. Había un montón de computadoras pequeñas y baratas antes de la Mac. Él redefinió el problema como: hacer uno que sea hermoso. Y eso probablemente condujo a los desarrolladores más que cualquier zanahoria o palo podría.
Ciertamente entregaron. Cuando la Mac apareció por primera vez, no ni siquiera tienes que encenderla para saber que será buena; puedes decirlo por la caja. Hace unas semanas iba caminando por la calle en Cambridge, y en la basura de alguien vi lo que parecía ser una Mac estuche de transporte. Miré dentro, y había una Mac SE. Yo la llevé a casa y la conecté, y arrancó. La feliz cara de Macintosh cara, y luego el buscador. Dios mío, era tan simple. Era justo como ... Google.
A los hackers les gusta trabajar para gente con altos estándares. Pero no es suficiente solo con ser exigente. Tienes que insistir en lo correcto. Lo que normalmente significa que tienes que ser tú mismo un hacker. Yo've visto artículos ocasionales sobre cómo gestionar programadores. Realmente 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 el segundo probablemente podría condensarse en dos palabras: renuncia.
El problema no es tanto la gestión diaria. Realmente bueno los hackers se autogestionan prácticamente. El problema es que si tú're no es un hacker, no puedes saber quiénes son los buenos hackers. Un similar problema explica por qué los autos estadounidenses son tan feos. Yo llamo eso el paradoja del diseño. Podrías pensar que podrías hacer tus productos hermoso solo contratando a un gran diseñador para que los diseñe. Pero si tú mismo no tienes buena gusto, ¿cómo vas a reconocer un buen diseñador? Por definición no puedes saberlo de su portafolio. Y no puedes ir por los premios que ganó o los trabajos que tuvo, porque en el diseño, como en la mayoría de los campos, esos tienden a ser impulsados por la moda y el chisme, con la habilidad real en tercer lugar. No hay forma de evitarlo: no se puede gestionar un proceso destinado a producir cosas hermosas sin saber qué es lo bello. Americano los coches son feos porque las empresas automovilísticas americanas están dirigidas por personas con mal gusto.
Muchas personas en este país piensan en el gusto como algo escurridizo, o incluso frívolo. No lo es. Para impulsar el diseño, un gerente debe ser el usuario más exigente de los productos de una empresa. Y si tú tienes muy buen gusto, puedes, como Steve Jobs hace, hacer satisfactorio tú el tipo de problema en el que a la gente buena le gusta trabajar.
Problemas pequeños y desagradables
Es bastante fácil decir qué tipo de problemas no son interesantes: aquellos en los que en lugar de resolver algunos grandes, claros, problemas, tienes resolver muchos pequeños y desagradables. Uno de los peores tipos de los proyectos están escribiendo una interfaz para un software que es lleno de errores. Otro es cuando tienes que personalizar algo para las necesidades complejas e indefinidas de un cliente individual. Para los hackers, este tipo de proyectos son la muerte por mil cortes.
La característica distintiva de los problemas pequeños y desagradables es que tú no aprendes nada de ellos. Escribir un compilador es interesante porque te enseña qué es un compilador. Pero escribir una interfaz para un software con errores no te enseña nada, porque el los errores son aleatorios. [3] Así que no es solo la escrupulosidad lo que hace que los buenos los hackers evitan los problemas pequeños y desagradables. Es más una cuestión de autoconservación. Trabajar en problemas pequeños y desagradables te hace estúpido. Los buenos hackers lo evitan por la misma razón que los modelos evitan hamburguesas con queso.
Por supuesto, algunos problemas tienen inherentemente este carácter. Y porque de la oferta y la demanda, pagan especialmente bien. Así que una empresa que encontró una manera de hacer que los grandes hackers trabajaran en problemas tediosos lo haría ser muy exitoso. ¿Cómo lo harías?
Un lugar donde esto sucede es en las startups. En nuestra startup teníamos Robert Morris trabajando como administrador de sistemas. Eso es como tener el Rolling Stones tocan en un bar mitzvah. No puedes contratar ese tipo de talento. Pero la gente hará cualquier cantidad de trabajos pesados para las empresas de las que son los fundadores. [4]
Las empresas más grandes resuelven el problema dividiendo la empresa. Consiguen gente inteligente para que trabaje para ellos estableciendo una separación departamento de I+D donde los empleados no tienen que trabajar directamente en los pequeños y desagradables problemas de los clientes. [5] En este modelo, la investigación departamento funciona como una mina. Producen nuevas ideas; tal vez el resto de la empresa podrá utilizarlas.
Es posible que no tenga que llegar a este extremo. Programación de abajo hacia arriba sugiere otra forma de dividir la empresa: hacer que los inteligentes trabajar como fabricantes de herramientas. Si tu empresa crea software para hacer x, ten un grupo que construye herramientas para escribir software de ese tipo, y otro que usa estas herramientas para escribir las aplicaciones. De esta manera es posible que puedas conseguir gente inteligente para que escriba el 99% de tu código, pero aún así mantenlos casi tan aislados de los usuarios como lo serían en un departamento de investigación tradicional. Los fabricantes de herramientas tendrían usuarios, pero solo serían los propios desarrolladores de la empresa. [6]
Si Microsoft utilizara este enfoque, su software no sería tan completo de agujeros de seguridad, porque la gente menos inteligente que escribe el actual las aplicaciones no estarían haciendo cosas de bajo nivel como la asignación de memoria. En lugar de escribir Word directamente en C, estarían enchufando juntos grandes bloques de Lego de Word-lenguaje. (Duplo, creo, es el término técnico.)
Agrupación
Además de los problemas interesantes, lo que les gusta a los buenos hackers es otro buenos hackers. Los grandes hackers tienden a agruparse, a veces espectacularmente así, como en Xerox Parc. Por lo que no atraerás a buenos hackers en proporción lineal a la calidad del ambiente que crees para ellos. La tendencia a agruparse significa que es más como el cuadrado del ambiente. Por lo que es el ganador se lleva todo. En un momento dado, solo hay alrededor de diez o veinte lugares donde los hackers más quieren trabajar, y si no eres uno de ellos, no solo tendrás menos grandes hackers, tendrás cero.
Tener grandes hackers no es, por sí solo, suficiente para hacer que una empresa exitoso. Funciona bien para Google e ITA, que son dos de los puntos calientes en este momento, pero no ayudó a Thinking Machines o Xerox. Sun tuvo una buena racha durante un tiempo, pero su modelo de negocio es un ascensor hacia abajo. En esa situación, incluso los mejores hackers no pueden salvarte.
Sin embargo, creo que, en igualdad de condiciones, una empresa que puede atraer a grandes hackers tendrá una gran ventaja. Hay gente que estaría en desacuerdo con esto. Cuando hacíamos las rondas de empresas de capital riesgo en la década de 1990, varias nos dijeron que el software las empresas no ganaban escribiendo un gran software, sino a través de la marca, y dominando los canales, y haciendo las mejores ofertas.
Realmente parecían creer esto, y creo que sé por qué. Yo creo que lo que muchos capitalistas de riesgo buscan, al menos inconscientemente, es el siguiente Microsoft. Y, por supuesto, si Microsoft es tu modelo, no deberías buscar empresas que esperen ganar escribiendo un gran software. Pero los capitalistas de riesgo se equivocan al buscar el próximo Microsoft, porque ninguna startup puede ser el próximo Microsoft a menos que alguna otra la empresa está preparada para inclinarse en el momento adecuado y ser el siguiente IBM.
Es un error usar a Microsoft como modelo, porque toda su cultura deriva de esa única oportunidad. Microsoft es un mal dato punto. Si los dejas fuera, descubres que los buenos productos sí tienden 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 sabe esto. Lo que le preocupa de Google es no 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 conoces a uno? Eso resulta ser muy difícil. Ni siquiera los hackers pueden decirlo. Yo'm bastante seguro ahora de que mi amigo Trevor Blackwell es un gran hacker. Puede que hayas leído en Slashdot cómo hizo su propio Segway. El Lo notable de este proyecto fue que escribió todo el software en un día (en Python, por cierto).
Para Trevor, eso es a la par. Pero cuando lo conocí por primera vez, pensé que era un completo idiota. Estaba parado en la oficina de Robert Morris hablando sin parar con él sobre algo u otro, y recuerdo haber estado parado detrás él haciendo gestos frenéticos a Robert para que echara a este loco de su oficina para que pudiéramos ir a almorzar. Robert dice que también malinterpretó a Trevor al principio. Al parecer, cuando Robert lo conoció por primera vez, Trevor tenía acaba de empezar un nuevo plan que involucraba escribir todo sobre cada aspecto de su vida en una pila de fichas, que llevaba con él a todas partes. También acababa de llegar de Canadá, y tenía un fuerte acento canadiense y un corte de pelo mullet.
El problema se ve agravado por el hecho de que los hackers, a pesar de su reputación por indiferencia social, a veces hacen un buen trato de esfuerzo por parecer inteligentes. Cuando estaba en la escuela de posgrado, solía pasar el rato en el MIT AI Lab de vez en cuando. Era un poco intimidante al principio. Todos allí hablaban muy rápido. Pero después de un tiempo yo aprendió el truco de hablar rápido. No tienes que pensar ninguno más rápido; solo usa el doble de palabras para decirlo todo.
Con esta cantidad de ruido en la señal, es difícil decir qué bueno hackers cuando los conoces. No puedo decirlo, ni siquiera ahora. Tú también no puedes saberlo por sus currículums. Parece que la única forma de juzgar un hacker es trabajar con él en algo.
Y esta es la razón por la que las áreas de alta tecnología solo suceden alrededor de las universidades. El ingrediente activo aquí no son tanto los profesores como los alumnos. Las startups crecen alrededor de las universidades porque las universidades reúnen jóvenes prometedores gente y hacerlos trabajar en los mismos proyectos. El los inteligentes aprenden quiénes son los otros inteligentes, y juntos se les ocurre nuevos proyectos propios.
Debido a que no puedes distinguir a un gran hacker excepto trabajando con él, los propios hackers no pueden saber lo buenos que son. Esto es cierto hasta cierto punto en la mayoría de los campos. He descubierto que la gente que es genial en algo no está tan convencida de su propia grandeza como misteriosos sobre por qué todos los demás parecen tan incompetentes.
Pero es particularmente difícil para los hackers saber lo buenos que son, porque es difícil comparar su trabajo. Esto es más fácil en la mayoría otros campos. En los cien metros, sabes en 10 segundos quién es el más rápido. Incluso en matemáticas parece haber un consenso general sobre qué problemas son difíciles de resolver, y qué constituye una buena solución. Pero la piratería es como la escritura. ¿Quién puede decir cuál de dos novelas es mejor? Ciertamente no los autores.
Con los hackers, al menos, otros hackers pueden saberlo. Eso es porque, a diferencia de los novelistas, los hackers colaboran en proyectos. Cuando llegas golpear algunos problemas difíciles a través de la red con alguien, aprendes bastante rápido qué tan fuerte los golpea de vuelta. Pero los hackers no pueden mírate a ti mismo trabajando. Entonces, si le preguntas a un gran hacker qué tan bueno él es, él casi seguro que responderá, no lo sé. No solo lo es ser modesto. Realmente no lo sabe.
Y ninguno de nosotros lo sabe, excepto acerca de las personas con las que realmente hemos trabajado con. Lo que nos pone en una situación extraña: no sabemos quiénes son nuestros los héroes deberían ser. Los hackers que se hacen famosos tienden a hacerse famosos por accidentes aleatorios de RR.PP. De vez en cuando necesito dar un ejemplo de un gran hacker, y nunca sé a quién usar. El primero los nombres que se me ocurren siempre tienden a ser personas que conozco personalmente, pero parece cojo usarlos. Entonces, creo, quizás debería decir Richard Stallman, o Linus Torvalds, o Alan Kay, o alguien famoso como ese. Pero no tengo idea si estos tipos son grandes hackers. Nunca he trabajado con ellos en nada.
Si hay un Michael Jordan de la piratería, nadie lo sabe, incluso él.
Cultivo
Finalmente, la pregunta que todos los hackers se han estado preguntando: ¿cómo te conviertes en un gran hacker? No sé si es posible convertirse en uno. Pero ciertamente es posible hacer cosas que te hacen estúpido, y si puedes hacerte estúpido, tú probablemente también puedas hacerte inteligente.
La clave para ser un buen hacker puede ser trabajar en lo que te gusta. Cuando pienso en los grandes hackers que conozco, una cosa que tienen en común es el extremo dificultad de hacerlos trabajar en cualquier cosa que no quieran. No sé si esto es causa o efecto; puede ser ambos.
Para hacer algo bien tienes que amor eso. Así que en la medida en que tú puedes preservar la piratería como algo que amas, es probable que la hagas bien. Intenta mantener la sensación de asombro que tenías sobre la programación en edad 14. Si te preocupa que tu trabajo actual esté pudriendo tu cerebro, probablemente lo esté.
Los mejores hackers tienden a ser inteligentes, por supuesto, pero eso es cierto en muchos campos. ¿Hay alguna cualidad que sea exclusiva de los hackers? Les pregunté a algunos amigos, y la cosa número uno que mencionaron fue la curiosidad. Siempre supuse que todas las personas inteligentes eran curiosas, que la curiosidad era simplemente la primera derivada del conocimiento. Pero aparentemente los hackers son particularmente curiosos, especialmente sobre cómo las cosas funcionan. Eso tiene sentido, porque los programas son en efecto gigantescas descripciones de cómo funcionan las cosas.
Varios amigos mencionaron la capacidad de concentración de los hackers, su capacidad, como dijo uno, para "desconectar todo lo que está fuera de sus propios cabezas." Ciertamente he notado esto. Y he oído a varios hackers dicen que después de beber incluso media cerveza no pueden programar en absoluto. Entonces, tal vez la piratería sí requiera alguna capacidad especial para enfocarse. Tal vez los grandes hackers pueden cargar una gran cantidad de contexto en sus cabeza, para que cuando vean una línea de código, vean no solo esa línea, sino todo el programa que la rodea. John McPhee escribió que el éxito de Bill Bradley como jugador de baloncesto se debía en parte a su extraordinaria visión periférica. "Perfecto" la vista significa aproximadamente 47 grados de visión periférica vertical. Bill Bradley tenía 70; podía ver la canasta cuando estaba mirando el piso. Tal vez los grandes hackers tienen alguna habilidad innata similar. (Hago trampa por utilizando un muy denso lenguaje, que reduce la cancha.)
Esto podría explicar la desconexión sobre los cubículos. Tal vez la gente encargados de las instalaciones, sin concentración que romper, no tienen ni idea de que trabajar en un cubículo se siente para un hacker como tener su cerebro en una licuadora. (Mientras que Bill, si los rumores de autismo son ciertos, 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 incorrecto. Para en la medida en que haya un apretón de manos secreto entre los buenos hackers, es cuando ellos se conocen lo suficientemente bien como para expresar opiniones que obtendrían apedreados 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, al menos en manos de buenos programadores, muy fluido. En tales situaciones es útil tener la costumbre de cuestionar las suposiciones.
¿Puedes cultivar estas cualidades? No lo sé. Pero puedes al menos no reprimirlos. Así que aquí está mi mejor intento de una receta. Si es posible convertirse en un gran hacker, la forma de hacerlo puede ser hacer el siguiente trato contigo mismo: nunca tienes que trabajar en proyectos aburridos (a menos que tu familia se muera de hambre), y a cambio, nunca te permitirás hacer un trabajo a medias. Todos los grandes hackers que conozco parecen haber hecho ese trato, aunque quizás ninguno de ellos tuvo opción en el asunto.
Notas
[1] Para ser justos, tengo que decir que IBM fabrica un hardware decente. Yo escribí esto en una laptop IBM.
[2] Resultaron estar condenados. Cerraron unos meses después.
[3] Creo que esto es lo que la gente quiere decir cuando habla sobre el "sentido de la vida". En la superficie, esto parece un idea extraña. La vida no es una expresión; ¿cómo podría tener sentido? Pero puede tener una calidad que se siente muy similar al sentido. En un proyecto como un compilador, tienes que resolver muchos problemas, pero los problemas todos entran en un patrón, como en una señal. Mientras que cuando los problemas que tienes que resolver son aleatorios, parecen ruido.
[4] Einstein en un momento trabajó diseñando refrigeradores. (Tenía acciones.)
[5] Es difícil decir exactamente qué constituye la investigación en la mundo informático, pero como 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 principalmente no tener que tener un reunión de tres horas con un gerente de producto sobre problemas de integración la versión coreana de Word 13.27 con el clip de papel parlante.
[6] Algo similar ha estado sucediendo durante mucho tiempo en la industria de la construcción. Cuando te construían una casa hace un par de cientos años, los constructores locales construían todo lo que había en ella. Pero cada vez más lo que hacen los constructores es ensamblar componentes diseñados y fabricados por otra persona. Esto ha, como la llegada de la edición de escritorio, les ha dado a la gente la libertad de experimentar de formas desastrosas, pero es ciertamente más eficiente.
[7] Google es mucho más peligroso para Microsoft de lo que lo fue Netscape. Probablemente más peligroso de lo que cualquier otra empresa haya sido. No menos porque están decididos a luchar. En su página de listado de trabajos, dicen que uno de sus "valores fundamentales" es "No seas malvado". De una empresa que vende aceite de soja o equipos mineros, tal declaración sería simplemente excéntrica. Pero creo que todos nosotros en el mundo de la informática reconocemos de quién es esa declaración de guerra.
Gracias a Jessica Livingston, Robert Morris y Sarah Harlin por leer versiones anteriores de esta charla.