Como tornar-se um Hacker (resumo atualizado)

Texto atualizado em 17 de setembro de 2022

Esta página é um resumo (que pretende se manter) atualizado do texto “How To Become A Hacker” de Eric Steve Raymond (esr), publicado em https://www.catb.org/~esr/faqs/hacker-howto.html

A primeira revisão do texto foi publicada em outubro de 2007 e, desde então, foi atualizada algumas vezes. Este resumo se inicia na revisão 1.52 de 3 de janeiro de 2020.

É altamente recomendável que você leia primeiro a versão original, em inglês, via o link acima.

Decidi manter este resumo apenas como forma de estímulo à memória dos pontos que eu considerei principais. Para você, talvez, os pontos principais sejam outros — então, também é recomendável que você mantenha o seu próprio resumo.


O texto surgiu depois que o esr recebeu muitas solicitações sobre “como aprender a ser um hacker”.

Em resumo, as qualidades principais de um hacker são:

  • aptidão técnica;
  • prazer em resolver problemas; e
  • superar limites.

O termo “hacker” é tão antigo quanto a ARPAnet.

O termo surgiu junto com o UNIX e a world wide web, a Web.

Ser um hacker não significa trabalhar apenas computadores. Alguém pode ser um hacker e trabalhar com eletrônicos ou música, por exemplo.

Existem também os “crackers”, pessoas que se ocupam em destruir, enganar, roubar etc. Estão do lado da destruição e não da criação, da engenharia. Os verdadeiros hackers não têm afinidade com os “crackers”.

The basic difference is this: hackers build things, crackers break them.

esr

A Atitude Hacker

A capacidade de criação e de solução de problemas dos hackers se apoia em dois princípios básicos:

  • Liberdade
  • Colaboração

Um hacker de verdade acredita e se comporta de acordo com esses princípios.

Há também um conjunto de crenças importantes dentro da cultura hacker.

  • O mundo está cheio de problemas esperando soluções
    • Exige motivação
    • Exige dedicação
    • O prazer está na solução de problemas
    • O prazer está na aprendizagem
    • O prazer está na prática constante, no aprimoramento
  • Nenhum problema deve ser resolvido duas vezes
    • A “reinvenção da roda” deve ser evitada
    • Gasto desnecessário de energia e tempo
    • Buscar problemas ainda não resolvidos
    • Compartilhar recursos e soluções para poupar tempo de quem está tentando resolver outros problemas
  • O tédio é perigoso
    • Nunca se entedie com o trabalho
    • Evite trabalho repetitivo e de baixo valor agregado
    • Procure soluções para novos problemas
    • Automatize tudo o que for repetitivo e entediante para você e para outros hackers
  • A liberdade é ótima
    • Fuja das mentes autoritárias
    • Autoritarismo significa trabalhar em soluções para problemas nos quais você não tem interesse
    • Desenvolva uma repulsa natural a qualquer tentativa de controle, censura ou reserva de recursos
  • Atitudes não substituem a competência
    • Valer-se apenas de atitude não fará de você um hacker (nem uma estrela do rock, muito menos um atleta de alta performance)
    • Competência exige inteligência, dedicação, pesquisa e trabalho
    • Evite a tentação da atitude e concentre-se no desenvolvimento de competências
    • Competência em assuntos que poucos dominam é naturalmente valorizada
    • Competências que exigem inteligência, habilidade e concentração são constantemente valorizadas

Hackers won’t let posers waste their time

esr

Habilidades Básicas

Todo hacker precisa ter um “kit de ferramentas” (toolkit).

Esse kit sofre mudanças com o tempo. Algumas ferramentas tornam-se obsoletas, outras, aparecem e se tornam necessárias.

Aprenda a programar

Esta é uma habilidade fundamental.

Se você não sabe programar e quer começar a aprender, a linguagem recomendada é Python.

Nem sempre a linguagem ideal para se desenvolver uma determinada solução é igualmente boa para se aprender a programar.

Python permite que você aprenda rápido e possa avançar depois para outras linguagens como Go e C.

Outro aspecto importante é a produtividade. Algumas linguagens permitem que você avance rápido no desenvolvimento da solução. Outras linguagens exigirão preocupações com estabilidade e escalabilidade, essas têm o desenvolvimento mais lento.

Outras linguagens importantes são Perl e LISP.

A partir delas, será muito mais fácil aprender outras linguagens e atacar problemas com a linguagem mais adequada.

Quantidade e diversidade de linguagens não é tão importante quanto aprender a pensar em como resolver problemas “programaticamente”, independentemente da linguagem.

Livros e cursos não são suficientes para a boa aprendizagem. A maioria dos hackers são autodidatas e se valem da prática para aprender de verdade.

A prática em programação se resume a:

  • ler código; e
  • escrever código.

Portanto, é um processo semelhante ao aprimoramento da escrita em linguagem natural (a “redação”). Para melhorar sua escrita você deve ler muitos textos de boa qualidade escritos pelos autores que são os mestres no assunto, depois tentar escrever como eles; repita essa fórmula até perceber bons resultados.

Ers menciona Peter Norvig e seu artigo “Teach Yourself Programming in Ten Years” como uma referência sobre o processo de aprendizagem em programação.

Aprenda a usar um sistema baseado em UNIX que seja open-source

Uma das melhores coisas que você pode fazer para se tornar um hacker é baixar uma versão do Linux, instalá-la num computador e usá-lo.

Não é possível aprender muito com o Windows porque ele se apresenta em código binário. Com o Linux você pode olhar o código fonte e aprender com ele.

A Internet está intrinsecamente ligada ao UNIX.

É possível usar a Internet sem conhecer UNIX. Não é possível desenvolver soluções para a Internet sem conhecer UNIX.

Portanto, instale e rode uma máquina com Linux. Ubuntu é a distribuição mais amigável para iniciantes.

Depois aprenda Python, Go, C, LISP e Perl.

Aprenda a usar a World Wide Web e HTML

HTML é o primeiro passo para quem quer trabalhar com a Web.

Se você não sabe programar, aprender HTML pode ajudar a desenvolver alguns hábitos mentais.

Crie um site.

Existem milhões de sites na Web. Você precisa se destacar entre eles, e a melhor forma de conseguir isso é produzindo conteúdo de qualidade.

Se você não sabe falar inglês, aprenda já

O inglês é o idioma da Internet, das linguagens de programação e da comunidade hacker.

A única forma de se comunicar com produtividade, colaborando dentro da comunidade hacker é falando inglês.

O criador do Linux, o finlandês Linus Torvalds, sempre documentou o código em inglês e se comunicou dentro da comunidade global de desenvolvedores em inglês. É um grande exemplo de sucesso derivado da fluência no idioma.

Se a sua capacidade de se comunicar de maneira escrita é ruim em qualquer idioma, inclusive no Português, será mais difícil avançar no mundo hacker. Texto ruim ou impreciso consome muito tempo da comunidade, então, ele será possivelmente ignorado.

Melhore sua escrita em geral. Melhore sua escrita em inglês.

Status na Cultura Hacker

A cultura hacker valoriza a boa reputação dos seus integrantes.

Você perceberá que se tornou um hacker quando outros hackers o chamarem assim.

Hackers mais experientes serão aqueles que irão avaliar o mérito do seu trabalho, o que você sabe fazer e os problemas que quer resolver.

A cultura valoriza muito a doação pessoal de:

  • tempo;
  • criatividade;
  • resultados do seu trabalho. (o que você criou)

Há cinco coisas que você pode fazer para construir boa reputação na cultura hacker.

1. Escrever código open-source

Nada supera o ato de criar um programa interessante que a comunidade queira ver como funciona e aprender com ele.

Programas open-source permitem essa interação.

2. Ajudar a testar e debugar código open-source

Tão importante quanto criar programas é aprimorá-los.

Beta testers têm a habilidade de usar programas, identificar problemas ou oportunidades de melhorias e implementá-las. Isso é extremamente bem visto.

Iniciantes devem buscar programas de interesse/afinidade para praticar suas habilidades de beta testers e aprimoramento de código.

3. Compartilhar informações úteis

Participe de fóruns. Atualize documentos, FAQs.

4. Manter a infraestrutura funcionando

O voluntariado tem espaço dedicado dentro da cultura hacker.

Administre listas de distribuição de email. Modere mensagens em fóruns. Faça manutenção de repositórios etc.

Esse tipo de trabalho consome tempo e não é tão interessante quanto escrever código. Quem se dedica a isso é sempre bem visto e valorizado como alguém interessado em ver a comunidade evoluir.

5. Colaborar com a cultura hacker

Escreva sobre o assunto, principalmente depois de conseguir gerar resultados nos 4 pontos anteriores.

A cultura hacker não tem líderes, mas heróis e lendas que passaram suas histórias adiante.

Estilo

Para ser um hacker você precisa pensar como um hacker.

Há coisas que você pode fazer quando está longe do computador e que ajudam na construção dessa forma de pensar.

  • Aprimore sua escrita
  • Leia ficção científica
  • Faça parte de um grupo hacker
  • Pratique alguma arte marcial: Tae Kwon Do, Karate, Kung Fu, Aikido, Jiu Jitsu etc. (favorecem a disciplina mental e autocontrole)
  • Estude meditação, preferencialmente Zen
  • Aprecie música. Aprenda a tocar algum instrumento ou a cantar.
  • Aprenda a contar piadas ou fazer charadas.

Essas atividades ajudam a despertar o hacker interno que vive dentro de nós e, ao mesmo tempo, permite a alternância entre atividades mentais e corporais na busca por equilíbrio.

Work as intensely as you play and play as intensely as you work. For true hackers, the boundaries between “play”, “work”, “science” and “art” all tend to disappear, or to merge into a high-level creative playfulness.

ers

Finalmente, o que não fazer dentro da cultura hacker.

  • Não use nomes de usuário pedantes
  • Não participe de bate-bocas na Internet ou fora dela
  • Não se auto intitule “cyberpunk”
  • Não perca tempo
  • Não faça os outros perderem tempo com você
  • Não envie mensagens com erros gramaticais ou de digitação

A comunidade hacker tem boa memória. Use isso a seu favor.

Não se esconda atrás de um pseudônimo. Use seu nome real e construa uma boa reputação com ele. Orgulhe-se do seu nome e de quem você é.

Foto de capa por Hello I’m Nik via Unsplash