Loading...

GRANDES HACKERS

Original

Julho de 2004

(Este ensaio é derivado de uma palestra no Oscon 2004.)

Há alguns meses, terminei um novo livro, e nas resenhas, continuo percebendo palavras como "provocativo" e "controverso". Para não mencionar "idiota".

Eu não pretendia tornar o livro controverso. Eu estava tentando torná-lo eficiente. Eu não queria perder o tempo das pessoas dizendo a elas coisas que elas já sabiam. É mais eficiente apenas dar a elas as diferenças. Mas eu suponho que isso é obrigado a produzir um livro alarmante.

Edisons

Não há controvérsia sobre qual ideia é a mais controversa: a sugestão de que a variação na riqueza pode não ser tão grande quanto um problema como pensamos.

Eu não disse no livro que a variação na riqueza era em si mesma uma coisa boa. Eu disse que em algumas situações pode ser um sinal de coisas boas. Uma dor de cabeça latejante não é uma coisa boa, mas pode ser um sinal de uma coisa boa - por exemplo, que você está recuperando a consciência depois de ser atingido na cabeça.

A variação na riqueza pode ser um sinal de variação na produtividade. (Em uma sociedade de um, elas são idênticas.) E isso é quase certamente uma coisa boa: se sua sociedade não tem variação na produtividade, provavelmente não é porque todos são Thomas Edison. É provavelmente porque você não tem Thomas Edisons.

Em uma sociedade de baixa tecnologia, você não vê muita variação na produtividade. Se você tem uma tribo de nômades coletando gravetos para uma fogueira, como o melhor coletor de gravetos será mais produtivo do que o pior? Um fator de dois? Enquanto quando você dá às pessoas uma ferramenta complexa como um computador, a variação no que elas podem fazer com ele é enorme.

Essa não é uma ideia nova. Fred Brooks escreveu sobre isso em 1974, e o estudo que ele citou foi publicado em 1968. Mas eu acho que ele subestimou a variação entre os programadores. Ele escreveu sobre produtividade em linhas de código: os melhores programadores podem resolver um determinado problema em um décimo do tempo. Mas e se o problema não for dado? Na programação, como em muitos campos, a parte difícil não é resolver problemas, mas decidir quais problemas resolver. A imaginação é difícil de medir, mas na prática, domina o tipo de produtividade que é medida em linhas de código.

A produtividade varia em qualquer campo, mas existem poucos em que ela varia tanto. A variação entre os programadores é tão grande que se torna uma diferença de tipo. Eu não acho que isso seja algo intrínseco à programação, no entanto. Em todos os campos, a tecnologia amplifica as diferenças na produtividade. Acho que o que está acontecendo na programação é apenas que temos muita alavancagem tecnológica. Mas em todos os campos, a alavanca está ficando mais longa, então a variação que vemos é algo que mais e mais campos verão com o tempo. E o sucesso das empresas e dos países dependerá cada vez mais de como eles lidam com isso.

Se a variação na produtividade aumenta com a tecnologia, então a contribuição dos indivíduos mais produtivos não será apenas desproporcionalmente grande, mas também crescerá com o tempo. Quando você chega ao ponto em que 90% da produção de um grupo é criada por 1% de seus membros, você perde muito se algo (sejam invasões vikings, ou planejamento central) reduz sua produtividade para a média.

Se quisermos tirar o máximo proveito deles, precisamos entender esses pessoas especialmente produtivas. O que os motiva? O que eles precisam para fazer seus trabalhos? Como você os reconhece? Como você faz com que eles venham trabalhar para você? E então, é claro, há a questão, como você se torna um?

Mais do que dinheiro

Conheço um punhado de super-hackers, então me sentei e pensei sobre o que eles têm em comum. Sua qualidade definidora é provavelmente que eles realmente amam programar. Programadores comuns escrevem código para pagar as contas. Grandes hackers pensam nisso como algo que eles fazem por diversão, e que eles ficam encantados em descobrir que as pessoas vão pagar por isso.

Grandes programadores às vezes são considerados indiferentes ao dinheiro. Isso não é bem verdade. É verdade que tudo o que eles realmente se importam é fazer um trabalho interessante. Mas se você ganhar dinheiro suficiente, você pode trabalhar no que quiser, e por essa razão, os hackers são atraídos pela ideia de ganhar quantias realmente grandes de dinheiro. Mas enquanto eles ainda tiverem que ir trabalhar todos os dias, eles se importam mais com o que fazem lá do que com o quanto recebem por isso.

Economicamente, este é um fato da maior importância, porque significa que você não precisa pagar aos grandes hackers nada parecido com o que eles valem. Um grande programador pode ser dez ou cem vezes mais produtivo que um comum, mas ele se considerará sortudo em receber três vezes mais. Como explicarei mais tarde, isso é em parte porque os grandes hackers não sabem o quão bons eles são. Mas também porque o dinheiro não é a coisa principal que eles querem.

O que os hackers querem? Como todos os artesãos, os hackers gostam de boas ferramentas. Na verdade, isso é um eufemismo. Bons hackers acham insuportável usar ferramentas ruins. Eles simplesmente se recusarão a trabalhar em projetos com a infraestrutura errada.

Em uma startup onde trabalhei, uma das coisas afixadas em nosso quadro de avisos era um anúncio da IBM. Era uma foto de um AS400, e o título dizia, acho, "hackers desprezam isso." [1]

Quando você decide qual infraestrutura usar para um projeto, você está não apenas tomando uma decisão técnica. Você também está tomando uma decisão social decisão, e esta pode ser a mais importante das duas. Para exemplo, se sua empresa deseja escrever algum software, pode parecer uma escolha prudente escrevê-lo em Java. Mas quando você escolhe um linguagem, você também está escolhendo uma comunidade. Os programadores que você será capaz de contratar para trabalhar em um projeto Java não serão tão inteligentes como os que você poderia conseguir para trabalhar em um projeto escrito em Python. E a qualidade de seus hackers provavelmente importa mais do que o linguagem que você escolhe. Embora, francamente, o fato de que bons hackers preferem Python a Java deve dizer algo sobre os méritos relativos dessas linguagens.

Os tipos de negócios preferem as linguagens mais populares porque as veem linguagens como padrões. Eles não querem apostar a empresa em Betamax. A coisa sobre linguagens, no entanto, é que elas não são apenas padrões. Se você tiver que mover bits por uma rede, por todos os meios use TCP/IP. Mas uma linguagem de programação não é apenas um formato. Uma linguagem de programação é um meio de expressão.

Li que Java acabou de superar Cobol como a linguagem mais popular. Como padrão, você não poderia desejar mais. Mas como um meio de expressão, você poderia fazer muito melhor. De todos os grandes programadores que me lembro, conheço apenas um que voluntariamente programaria em Java. E de todos os grandes programadores que me lembro que não trabalham para a Sun, em Java, conheço zero.

Grandes hackers também geralmente insistem em usar software de código aberto. Não apenas porque é melhor, mas porque lhes dá mais controle. Bons hackers insistem em controle. Isso faz parte do que os torna bons hackers: quando algo está quebrado, eles precisam consertá-lo. Você quer que eles se sintam assim com o software que estão escrevendo para você. Você não deve se surpreender quando eles se sentirem da mesma forma sobre o sistema operacional.

Há alguns anos, um amigo investidor de capital de risco me contou sobre um novo startup em que ele estava envolvido. Parecia promissor. Mas a próxima vez que conversei com ele, ele disse que eles haviam decidido construir seu software no Windows NT e acabaram de contratar um desenvolvedor NT muito experiente para ser seu diretor de tecnologia. Quando ouvi isso, pensei, esses caras estão condenados. Primeiro, o CTO não poderia ser um primeiro hacker, porque para se tornar um eminente desenvolvedor NT ele teria que usar NT voluntariamente, várias vezes, e eu não conseguia imaginar um grande hacker fazendo isso; e segundo, mesmo que ele fosse bom, ele teria dificuldade em contratar alguém bom para trabalhar para ele se o projeto tivesse que ser construído no NT. [2]

A fronteira final

Depois do software, a ferramenta mais importante para um hacker é provavelmente seu escritório. Grandes empresas pensam que a função do espaço de escritório é expressar classificação. Mas os hackers usam seus escritórios para mais do que isso: eles usam seu escritório como um lugar para pensar. E se você é uma tecnologia empresa, seus pensamentos são seu produto. Então fazer hackers trabalharem em um ambiente barulhento e perturbador é como ter uma fábrica de tinta onde o ar está cheio de fuligem.

A tira de quadrinhos Dilbert tem muito a dizer sobre cubículos, e com boa razão. Todos os hackers que conheço os desprezam. A mera perspectiva de ser interrompido é suficiente para impedir que os hackers trabalhem em problemas difíceis. Se você quiser fazer um trabalho real em um escritório com cubículos, você tem duas opções: trabalhar em casa ou chegar cedo ou tarde ou em um fim de semana, quando ninguém mais está lá. As empresas não percebem que isso é um sinal de que algo está quebrado? Um escritório o ambiente é suposto ser algo que ajuda você trabalha, não algo que você trabalha apesar de.

Empresas como a Cisco se orgulham de que todos lá têm um cubículo, até o CEO. Mas eles não são tão avançados quanto pensam; obviamente eles ainda veem o espaço de escritório como um distintivo de classificação. Observe também que a Cisco é famosa por fazer muito pouco desenvolvimento de produtos em casa. Eles obtêm novas tecnologias comprando as startups que as criaram - onde presumivelmente os hackers tinham um lugar tranquilo para trabalhar.

Uma grande empresa que entende o que os hackers precisam é a Microsoft. Eu vi uma vez um anúncio de recrutamento para a Microsoft com uma grande foto de um porta. Trabalhe para nós, a premissa era, e nós lhe daremos um lugar para trabalhar onde você realmente pode fazer o trabalho. E você sabe, a Microsoft é notável entre as grandes empresas por serem capazes de desenvolver software em casa. Não bem, talvez, mas bem o suficiente.

Se as empresas querem que os hackers sejam produtivos, elas devem olhar para o que eles fazem em casa. Em casa, os hackers podem organizar as coisas sozinhos para que possam fazer o máximo. E quando trabalham em casa, os hackers não trabalham em espaços abertos e barulhentos; eles trabalham em quartos com portas. Eles trabalham em lugares aconchegantes e vizinhos com pessoas por perto e em algum lugar para caminhar quando precisam ponderar algo, em vez de em vidro caixas instaladas em acres de estacionamentos. Eles têm um sofá que podem levar uma soneca quando se sentem cansados, em vez de ficarem em coma em sua mesa, fingindo trabalhar. Não há uma equipe de pessoas com aspiradores de pó que rugem todas as noites durante o horário nobre de hacking. Não há reuniões ou, Deus me livre, retiros corporativos ou exercícios de formação de equipes. E quando você olha para o que eles estão fazendo naquele computador, você descobrirá que isso reforça o que eu disse antes sobre ferramentas. Eles podem ter que usar Java e Windows no trabalho, mas em casa, onde podem escolher por si mesmos, você é mais provável de encontrá-los usando Perl e Linux.

De fato, essas estatísticas sobre Cobol ou Java sendo a linguagem mais popular podem ser enganosas. O que devemos observar, se quisermos saber quais ferramentas são melhores, é o que os hackers escolhem quando podem escolher livremente - ou seja, em projetos próprios. Quando você pergunta essa pergunta, você descobre que os sistemas operacionais de código aberto já têm uma participação de mercado dominante, e a linguagem número um é provavelmente Perl.

Interessante

Junto com boas ferramentas, os hackers querem projetos interessantes. O que torna um projeto interessante? Bem, obviamente, aplicativos abertamente atraentes como aviões furtivos ou software de efeitos especiais seriam interessantes de trabalhar. Mas qualquer aplicativo pode ser interessante se apresentar desafios técnicos novos. Então é difícil prever quais problemas os hackers vão gostar, porque alguns se tornam interessantes apenas quando as pessoas que trabalham neles descobrem um novo tipo de solução. Antes do ITA (que escreveu o software dentro do Orbitz), as pessoas que trabalhavam em pesquisas de tarifas aéreas provavelmente pensavam que era um dos aplicativos mais chatos imagináveis. Mas o ITA fez isso interessante por redefinir o problema de uma forma mais ambiciosa.

Acho que a mesma coisa aconteceu no Google. Quando o Google foi fundado, a sabedoria convencional entre os chamados portais era que a pesquisa era chata e sem importância. Mas os caras do Google não achavam que a pesquisa era chata, e é por isso que eles fazem tão bem.

Esta é uma área onde os gerentes podem fazer a diferença. Como um pai dizendo a uma criança, aposto que você não consegue limpar seu quarto inteiro em dez minutos, um bom gerente pode às vezes redefinir um problema como um mais interessante. Steve Jobs parece ser particularmente bom em isso, em parte simplesmente por ter padrões elevados. Havia muitos computadores pequenos e baratos antes do Mac. Ele redefiniu o problema como: faça um que seja bonito. E isso provavelmente impulsionou os desenvolvedores mais do que qualquer cenoura ou pau poderia.

Eles certamente entregaram. Quando o Mac apareceu pela primeira vez, você não precisava nem ligá-lo para saber que seria bom; você poderia dizer pela caixa. Há algumas semanas, eu estava andando pela rua em Cambridge, e no lixo de alguém eu vi o que parecia ser um Mac estojo de transporte. Olhei para dentro, e havia um Mac SE. Eu carreguei ele para casa e o liguei, e ele inicializou. O rosto feliz do Macintosh, e então o localizador. Meu Deus, era tão simples. Era só como ... Google.

Os hackers gostam de trabalhar para pessoas com padrões elevados. Mas não é suficiente apenas ser exigente. Você tem que insistir nas coisas certas. O que geralmente significa que você tem que ser um hacker você mesmo. Eu tenho visto artigos ocasionais sobre como gerenciar programadores. Realmente deveria haver dois artigos: um sobre o que fazer se você é você mesmo um programador, e outro sobre o que fazer se você não é. E o segundo provavelmente poderia ser condensado em duas palavras: desista.

O problema não é tanto o gerenciamento do dia a dia. Realmente bom os hackers são praticamente autogerenciados. O problema é, se você é não é um hacker, você não consegue dizer quem são os bons hackers. Um similar o problema explica por que os carros americanos são tão feios. Eu chamo isso de paradoxo do design. Você pode pensar que pode fazer seus produtos bonitos apenas contratando um grande designer para projetá-los. Mas se você mesmo não tem bom gosto, como você vai reconhecer um bom designer? Por definição, você não pode dizer pelo portfólio dele. E você não pode ir pelos prêmios que ele ganhou ou pelos empregos que teve, porque no design, como na maioria dos campos, esses tendem a ser impulsionados por moda e bajulação, com habilidade real em terceiro lugar. Não há como escapar: você não pode gerenciar um processo destinado a produzir coisas bonitas sem saber o que é bonito. Americano os carros são feios porque as montadoras americanas são administradas por pessoas com mau gosto.

Muitas pessoas neste país pensam em gosto como algo evasivo, ou mesmo frívolo. Não é nenhum dos dois. Para impulsionar o design, um gerente deve ser o usuário mais exigente dos produtos de uma empresa. E se você tem um gosto realmente bom, você pode, como Steve Jobs faz, tornar satisfatório você o tipo de problema que as pessoas boas gostam de trabalhar.

Problemas pequenos e desagradáveis

É bem fácil dizer quais tipos de problemas não são interessantes: aqueles em que, em vez de resolver alguns problemas grandes, claros e você tem que resolver muitos pequenos e desagradáveis. Um dos piores tipos de projetos é escrever uma interface para um software que está cheio de bugs. Outro é quando você tem que personalizar algo para as necessidades complexas e mal definidas de um cliente individual. Para os hackers, esses tipos de projetos são a morte de mil cortes.

A característica distintiva dos problemas pequenos e desagradáveis é que você não aprende nada com eles. Escrever um compilador é interessante porque te ensina o que é um compilador. Mas escrever uma interface para um software com bugs não te ensina nada, porque os bugs são aleatórios. [3] Então não é apenas a meticulosidade que faz com que os bons hackers evitem problemas pequenos e desagradáveis. É mais uma questão de auto-preservação. Trabalhar em problemas pequenos e desagradáveis te torna estúpido. Bons hackers evitam isso pelo mesmo motivo que os modelos evitam cheeseburgers.

Claro que alguns problemas inerentemente têm esse caráter. E porque de oferta e demanda, eles pagam especialmente bem. Então uma empresa que encontrou uma maneira de fazer com que grandes hackers trabalhassem em problemas tediosos seria muito bem-sucedido. Como você faria isso?

Um lugar onde isso acontece é em startups. Em nossa startup, nós tínhamos Robert Morris trabalhando como administrador de sistemas. Isso é como ter o Rolling Stones tocando em um bar mitzvah. Você não pode contratar esse tipo de talento. Mas as pessoas farão qualquer quantidade de trabalho árduo para empresas das quais são fundadores. [4]

Empresas maiores resolvem o problema particionando a empresa. Eles conseguem pessoas inteligentes para trabalhar para eles estabelecendo um separado departamento de P&D onde os funcionários não precisam trabalhar diretamente em os problemas pequenos e desagradáveis dos clientes. [5] Neste modelo, a pesquisa o departamento funciona como uma mina. Eles produzem novas ideias; talvez o resto da empresa será capaz de usá-las.

Você pode não ter que ir a esse extremo. Programação de baixo para cima sugere outra maneira de particionar a empresa: fazer com que as pessoas inteligentes trabalhem como fabricantes de ferramentas. Se sua empresa faz software para fazer x, tenha um grupo que constrói ferramentas para escrever software desse tipo, e outro que usa essas ferramentas para escrever os aplicativos. Desta forma você pode conseguir que pessoas inteligentes escrevam 99% do seu código, mas ainda mantê-los quase tão isolados dos usuários quanto eles seriam em um departamento de pesquisa tradicional. Os fabricantes de ferramentas teriam usuários, mas eles seriam apenas os próprios desenvolvedores da empresa. [6]

Se a Microsoft usasse essa abordagem, seu software não seria tão cheio de falhas de segurança, porque as pessoas menos inteligentes escrevendo o real os aplicativos não estariam fazendo coisas de baixo nível como alocar memória. Em vez de escrever o Word diretamente em C, eles estariam conectando grandes blocos de Lego da linguagem Word. (Duplo, acredito, é o termo técnico.)

Agrupamento

Junto com problemas interessantes, o que os bons hackers gostam é de outros bons hackers. Grandes hackers tendem a se agrupar - às vezes espetacularmente, como no Xerox Parc. Então você não vai atrair bons hackers em proporção linear à qualidade do ambiente que você cria para eles. A tendência de se agrupar significa que é mais como o quadrado do ambiente. Então é o vencedor leva tudo. Em qualquer momento, existem apenas cerca de dez ou vinte lugares onde os hackers mais querem trabalhar, e se você não for um deles, você não terá apenas menos grandes hackers, você terá zero.

Ter grandes hackers não é, por si só, suficiente para fazer uma empresa bem-sucedido. Funciona bem para o Google e o ITA, que são dois dos pontos quentes agora, mas não ajudou as Máquinas de Pensamento ou Xerox. A Sun teve uma boa corrida por um tempo, mas seu modelo de negócios é um elevador para baixo. Nessa situação, até os melhores hackers não podem salvá-lo.

Acho, no entanto, que, todas as outras coisas sendo iguais, uma empresa que pode atrair grandes hackers terá uma grande vantagem. Existem pessoas que discordariam disso. Quando estávamos fazendo as rodadas de empresas de capital de risco na década de 1990, várias nos disseram que o software as empresas não ganhavam escrevendo um ótimo software, mas por meio da marca, e dominando canais e fazendo os negócios certos.

Eles realmente pareciam acreditar nisso, e acho que sei porquê. Eu acho que o que muitos VCs estão procurando, pelo menos inconscientemente, é a próxima Microsoft. E, claro, se a Microsoft é seu modelo, você não deve estar procurando empresas que esperam ganhar escrevendo um ótimo software. Mas os VCs estão enganados em procurar a próxima Microsoft, porque nenhuma startup pode ser a próxima Microsoft a menos que outra empresa esteja preparada para se curvar no momento certo e ser a próxima IBM.

É um erro usar a Microsoft como modelo, porque toda a sua cultura deriva dessa única sorte. A Microsoft é um mau dado ponto. Se você os descartar, descobrirá que bons produtos tendem a ganhar no mercado. O que os VCs devem estar procurando é o próximo Apple, ou o próximo Google.

Acho que Bill Gates sabe disso. O que o preocupa com o Google é não o poder de sua marca, mas o fato de que eles têm melhores hackers. [7]

Reconhecimento

Então, quem são os grandes hackers? Como você sabe quando encontra um? Isso acaba sendo muito difícil. Até os hackers não conseguem dizer. Eu sou bem certo agora que meu amigo Trevor Blackwell é um grande hacker. Você pode ter lido no Slashdot como ele fez o seu próprio Segway. O coisa notável sobre este projeto foi que ele escreveu todo o software em um dia (em Python, aliás).

Para Trevor, isso é normal. Mas quando o conheci pela primeira vez, achei que ele era um completo idiota. Ele estava em pé no escritório de Robert Morris, falando sem parar para ele sobre algo ou outro, e me lembro de ficar atrás dele fazendo gestos frenéticos para Robert expulsar esse doido de seu escritório para que pudéssemos ir almoçar. Robert diz que ele julgou mal Trevor no início também. Aparentemente, quando Robert o conheceu pela primeira vez, Trevor tinha acabado de começar um novo esquema que envolvia escrever tudo sobre cada aspecto de sua vida em um monte de fichas, que ele carregava com ele para todos os lugares. Ele também tinha acabado de chegar do Canadá, e tinha um forte sotaque canadense e um topete.

O problema é agravado pelo fato de que os hackers, apesar de sua reputação por desatenção social, às vezes se esforçam muito para parecer inteligentes. Quando eu estava na pós-graduação, eu costumava ficar por perto do MIT AI Lab ocasionalmente. Era meio intimidador no início. Todos lá falavam muito rápido. Mas depois de um tempo eu aprendi o truque de falar rápido. Você não precisa pensar nenhum mais rápido; basta usar o dobro de palavras para dizer tudo.

Com essa quantidade de ruído no sinal, é difícil dizer bons hackers quando você os encontra. Eu não consigo dizer, nem agora. Você também não pode dizer pelos currículos deles. Parece que a única maneira de julgar um hacker é trabalhar com ele em algo.

E esta é a razão pela qual as áreas de alta tecnologia acontecem apenas perto de universidades. O ingrediente ativo aqui não são tanto os professores quanto os alunos. Startups crescem perto de universidades porque as universidades reúnem jovens promissores pessoas e faz com que elas trabalhem nos mesmos projetos. O os inteligentes aprendem quem são os outros inteligentes, e juntos eles inventam novos projetos próprios.

Como você não consegue dizer um grande hacker, exceto trabalhando com ele, os próprios hackers não conseguem dizer o quão bons eles são. Isso é verdade para um grau em a maioria dos campos. Descobri que as pessoas que são ótimas em algo não são tão convencidas de sua própria grandeza como perplexas com o motivo pelo qual todos os outros parecem tão incompetentes.

Mas é particularmente difícil para os hackers saberem o quão bons eles são, porque é difícil comparar seu trabalho. Isso é mais fácil na maioria dos outros campos. Nos cem metros, você sabe em 10 segundos quem é o mais rápido. Até na matemática, parece haver um consenso geral sobre quais problemas são difíceis de resolver e o que constitui uma boa solução. Mas o hacking é como escrever. Quem pode dizer qual de duas novelas é melhor? Certamente não os autores.

Com os hackers, pelo menos, outros hackers podem dizer. Isso porque, ao contrário dos romancistas, os hackers colaboram em projetos. Quando você chega a enfrentar alguns problemas difíceis na rede com alguém, você aprende bem rápido o quão duro eles os enfrentam de volta. Mas os hackers não podem se observar trabalhando. Então, se você perguntar a um grande hacker o quão bom ele é, ele quase certamente responderá: não sei. Ele não está apenas sendo modesto. Ele realmente não sabe.

E nenhum de nós sabe, exceto sobre as pessoas com quem realmente trabalhamos com. O que nos coloca em uma situação estranha: não sabemos quem são nossos heróis devem ser. Os hackers que ficam famosos tendem a ficar famosos por acidentes aleatórios de relações públicas. Ocasionalmente, preciso dar um exemplo de um grande hacker, e nunca sei quem usar. O primeiro nomes que vêm à mente sempre tendem a ser pessoas que conheço pessoalmente, mas parece fraco usá-los. Então, acho, talvez eu deva dizer Richard Stallman, ou Linus Torvalds, ou Alan Kay, ou alguém famoso como esse. Mas não faço ideia se esses caras são grandes hackers. Eu nunca trabalhei com eles em nada.

Se existe um Michael Jordan do hacking, ninguém sabe, incluindo ele.

Cultivo

Finalmente, a pergunta que todos os hackers têm se perguntado: como você se torna um grande hacker? Não sei se é possível se tornar um. Mas certamente é possível fazer coisas que te tornam estúpido, e se você pode se tornar estúpido, você provavelmente pode se tornar inteligente também.

A chave para ser um bom hacker pode ser trabalhar no que você gosta. Quando penso nos grandes hackers que conheço, uma coisa que eles têm em comum é a extrema dificuldade de fazê-los trabalhar em qualquer coisa que eles não querem. Não sei se isso é causa ou efeito; pode ser ambos.

Para fazer algo bem, você tem que amar isso. Então, na medida em que você pode preservar o hacking como algo que você ama, você provavelmente fará isso bem. Tente manter o senso de maravilha que você tinha sobre programação em idade de 14 anos. Se você está preocupado que seu trabalho atual está apodrecendo seu cérebro, provavelmente está.

Os melhores hackers tendem a ser inteligentes, é claro, mas isso é verdade em muitos campos. Existe alguma qualidade que é única para os hackers? Perguntei a alguns amigos, e a coisa número um que eles mencionaram foi curiosidade. Eu sempre supus que todas as pessoas inteligentes eram curiosas - que a curiosidade era simplesmente a primeira derivada do conhecimento. Mas aparentemente os hackers são particularmente curiosos, especialmente sobre como as coisas funcionam. Isso faz sentido, porque os programas são, na verdade, descrições gigantes de como as coisas funcionam.

Vários amigos mencionaram a capacidade dos hackers de se concentrar - sua capacidade, como um deles disse, de "desligar tudo fora de suas próprias cabeças". Eu certamente notei isso. E ouvi vários hackers dizerem que depois de beber até mesmo meia cerveja, eles não conseguem programar em tudo. Então, talvez o hacking realmente exija alguma habilidade especial para focar. Talvez os grandes hackers consigam carregar uma grande quantidade de contexto em suas cabeça, para que quando eles olhem para uma linha de código, eles vejam não apenas aquela linha, mas todo o programa ao redor. John McPhee escreveu que o sucesso de Bill Bradley como jogador de basquete se devia em parte à sua extraordinária visão periférica. "Perfeito" visão significa cerca de 47 graus de visão periférica vertical. Bill Bradley tinha 70; ele conseguia ver a cesta quando estava olhando para o chão. Talvez os grandes hackers tenham alguma habilidade inata semelhante. (Eu trapaceio por usando uma linguagem muito densa, que encolhe a quadra.)

Isso poderia explicar a desconexão sobre cubículos. Talvez as pessoas responsáveis pelas instalações, não tendo nenhuma concentração para quebrar, não têm ideia de que trabalhar em um cubículo parece para um hacker como ter seu cérebro em um liquidificador. (Enquanto Bill, se os rumores de autismo forem verdadeiros, sabe muito bem.)

Uma diferença que notei entre grandes hackers e pessoas inteligentes em geral é que os hackers são mais politicamente incorretos. Para o ponto em que existe um aperto de mão secreto entre bons hackers, é quando eles se conhecem bem o suficiente para expressar opiniões que fariam com que eles fossem apedrejados até a morte pelo público em geral. E posso ver porquê a incorreção política seria uma qualidade útil na programação. Os programas são muito complexos e, pelo menos nas mãos de bons programadores, muito fluidos. Nessas situações, é útil ter um hábito de questionar suposições.

Você pode cultivar essas qualidades? Eu não sei. Mas você pode pelo menos não reprimi-los. Então aqui está minha melhor tentativa de uma receita. Se é possível se tornar um grande hacker, a maneira de fazer isso pode ser fazer o seguinte acordo consigo mesmo: você nunca precisa trabalhar em projetos chatos (a menos que sua família vá passar fome caso contrário), e em troca, você nunca se permitirá fazer um trabalho pela metade. Todos os grandes hackers que conheço parecem ter feito esse acordo, embora talvez nenhum deles tenha tido escolha.

Notas

[1] Para ser justo, tenho que dizer que a IBM fabrica hardware decente. Eu escrevi isso em um laptop IBM.

[2] Eles acabaram sendo condenados. Eles fecharam alguns meses depois.

[3] Acho que é isso que as pessoas querem dizer quando falam sobre o "significado da vida". À primeira vista, isso parece um ideia estranha. A vida não é uma expressão; como poderia ter significado? Mas pode ter uma qualidade que se parece muito com o significado. Em um projeto como um compilador, você tem que resolver muitos problemas, mas os problemas todos caem em um padrão, como em um sinal. Enquanto quando os problemas que você tem que resolver são aleatórios, eles parecem ruído.

[4] Einstein em um ponto trabalhou projetando geladeiras. (Ele tinha ações.)

[5] É difícil dizer exatamente o que constitui pesquisa no mundo da computação, mas como uma primeira aproximação, é software que não tem usuários.

Não acho que seja a publicação que faz com que os melhores hackers queiram trabalhar em departamentos de pesquisa. Acho que é principalmente não ter que ter um reunião de três horas com um gerente de produto sobre problemas de integração a versão coreana do Word 13.27 com o clipe de papel falante.

[6] Algo semelhante vem acontecendo há muito tempo no indústria da construção. Quando você tinha uma casa construída há alguns séculos atrás, os construtores locais construíam tudo nela. Mas cada vez mais o que os construtores fazem é montar componentes projetados e fabricados por outra pessoa. Isso tem, como a chegada da editoração eletrônica, dado às pessoas a liberdade de experimentar de maneiras desastrosas, mas é certamente mais eficiente.

[7] O Google é muito mais perigoso para a Microsoft do que o Netscape foi. Provavelmente mais perigoso do que qualquer outra empresa já foi. Não menos porque eles estão determinados a lutar. Em sua página de listagem de empregos, eles dizem que um de seus "valores essenciais" é "Não ser mau". De uma empresa que vende óleo de soja ou equipamentos de mineração, tal declaração seria apenas excêntrica. Mas acho que todos nós no mundo da computação reconhecemos quem é uma declaração de guerra.

Obrigado a Jessica Livingston, Robert Morris e Sarah Harlin por ler versões anteriores desta palestra.