Loading...

GRADUAÇÃO

Original

March 2005

(Partes deste ensaio começaram como respostas a alunos que me escreveram com perguntas.)

Recentemente, recebi vários e-mails de alunos de graduação em ciência da computação perguntando o que fazer na faculdade. Eu talvez não seja a melhor fonte de conselhos, porque eu era um graduando em filosofia. Mas eu fiz tantas aulas de ciência da computação que a maioria dos alunos de ciência da computação pensava que eu era um. Eu certamente era um hacker, pelo menos.

Hacking

O que você deve fazer na faculdade para se tornar um bom hacker? Existem duas coisas principais que você pode fazer: tornar-se muito bom em programação e aprender muito sobre problemas específicos e legais. Essas coisas acabam sendo equivalentes, porque cada uma impulsiona você a fazer a outra.

A maneira de ser bom em programação é trabalhar (a) muito (b) em problemas difíceis. E a maneira de fazer você mesmo trabalhar em problemas difíceis é trabalhar em algum projeto muito envolvente.

Provavelmente, esse projeto não será uma tarefa de aula. Meu amigo Robert aprendeu muito escrevendo software de rede quando era graduando. Um de seus projetos era conectar Harvard à Arpanet; ela havia sido um dos nós originais, mas em 1984 a conexão havia morrido. [1] Não apenas esse trabalho não era para uma aula, mas porque ele passou todo o seu tempo nisso e negligenciou seus estudos, ele foi expulso da escola por um ano. [2] Tudo se acertou no final, e agora ele é professor no MIT. Mas você provavelmente será mais feliz se não for a esse extremo; isso causou muita preocupação a ele na época.

Outra maneira de ser bom em programação é encontrar outras pessoas que são boas nisso e aprender o que elas sabem. Os programadores tendem a se organizar em tribos de acordo com o tipo de trabalho que fazem e as ferramentas que usam, e algumas tribos são mais inteligentes do que outras. Olhe ao seu redor e veja em que os inteligentes parecem estar trabalhando; geralmente há um motivo.

Alguns dos mais inteligentes ao seu redor são professores. Então, uma maneira de encontrar trabalho interessante é se voluntariar como assistente de pesquisa. Os professores estão especialmente interessados em pessoas que podem resolver tediosas problemas do tipo administração de sistemas para eles, então essa é uma maneira de colocar um pé na porta. O que eles temem são pessoas instáveis e que colocam coisas no currículo para parecerem melhores. É muito comum que um assistente resulte em um aumento líquido de trabalho. Então você tem que deixar claro que você significará uma diminuição líquida.

Não se deixe levar se eles disserem não. A rejeição é quase sempre menos pessoal do que o rejeitado imagina. Apenas siga em frente para o próximo. (Isso também se aplica ao namoro.)

Cuidado, porque embora a maioria dos professores seja inteligente, nem todos eles trabalham em coisas interessantes. Os professores têm que publicar resultados novos para progredir em suas carreiras, mas há mais competição em mais áreas interessantes de pesquisa. Então, o que os professores menos ambiciosos fazem é produzir uma série de artigos cujas conclusões são novas porque ninguém mais se importa com elas. Você está melhor evitando essas pessoas.

Eu nunca trabalhei como assistente de pesquisa, então me sinto um pouco desonesto recomendando essa rota. Eu aprendi a programar escrevendo coisas minhas, particularmente tentando fazer engenharia reversa do SHRDLU de Winograd. Eu era tão obcecado por aquele programa quanto uma mãe por um bebê recém-nascido.

Quaisquer que sejam as desvantagens de trabalhar sozinho, a vantagem é que o projeto é totalmente seu. Você nunca precisa comprometer ou pedir permissão a ninguém, e se tiver uma nova ideia, pode simplesmente sentar e começar a implementá-la.

Em seus próprios projetos, você não precisa se preocupar com a novidade (como os professores fazem) ou com a lucratividade (como as empresas fazem). Tudo o que importa é o quão difícil o projeto é tecnicamente, e isso não tem correlação com a natureza da aplicação. Aplicações "sérias" como bancos de dados são frequentemente triviais e chatas tecnicamente (se você alguma vez sofrer de insônia, tente ler a literatura técnica sobre bancos de dados) enquanto aplicações "frívolas" como jogos são frequentemente muito sofisticadas. Tenho certeza de que existem empresas de jogos por aí trabalhando em produtos com mais conteúdo intelectual do que a pesquisa na parte inferior de nove décimos dos departamentos de ciência da computação da universidade.

Se eu estivesse na faculdade agora, provavelmente trabalharia em gráficos: um jogo de rede, por exemplo, ou uma ferramenta para animação 3D. Quando eu era graduando, não havia ciclos suficientes por aí para tornar os gráficos interessantes, mas é difícil imaginar algo mais divertido para trabalhar agora.

Matemática

Quando eu estava na faculdade, muitos dos professores acreditavam (ou pelo menos desejavam) que ciência da computação era um ramo da matemática. Essa ideia era mais forte em Harvard, onde nem mesmo havia um curso de ciência da computação até a década de 1980; até então, era preciso se formar em matemática aplicada. Mas era quase tão ruim em Cornell. Quando eu disse ao temível Professor Conway que eu estava interessado em IA (um tópico quente na época), ele me disse que eu deveria me formar em matemática. Ainda não sei se ele achava que a IA exigia matemática, ou se ele achava que a IA era besteira e que se formar em algo rigoroso me curaria de tais ambições estúpidas.

Na verdade, a quantidade de matemática que você precisa como hacker é muito menor do que a maioria dos departamentos universitários gosta de admitir. Não acho que você precise de muito mais do que matemática do ensino médio mais alguns conceitos da teoria da computação. (Você tem que saber o que é um algoritmo n^2 se quiser evitar escrevê-los.) A menos que você esteja planejando escrever aplicativos matemáticos, é claro. Robótica, por exemplo, é tudo matemática.

Mas, embora você não precise literalmente de matemática para a maioria dos tipos de hacking, no sentido de conhecer 1001 truques para diferenciar fórmulas, a matemática vale muito a pena estudar por si só. É um valiosa fonte de metáforas para quase qualquer tipo de trabalho. [3] Eu gostaria de ter estudado mais matemática na faculdade por esse motivo.

Como muitas pessoas, fui abusado matematicamente quando criança. Eu aprendi a pensar na matemática como uma coleção de fórmulas que eram nem bonitas nem tinham relação com minha vida (apesar de tentativas de traduzi-las em "problemas de palavras"), mas que tinham que ser memorizadas para ir bem nos testes.

Uma das coisas mais valiosas que você poderia fazer na faculdade seria aprender o que a matemática realmente é. Isso pode não ser fácil, porque muitos bons matemáticos são maus professores. E embora existam muitos livros populares sobre matemática, poucos parecem bons. O melhor que me lembro são os de W. W. Sawyer. E, claro, Euclides. [4]

Tudo

Thomas Huxley disse "Tente aprender algo sobre tudo e tudo sobre algo". A maioria das universidades visa esse ideal.

Mas o que é tudo? Para mim, significa tudo o que as pessoas aprendem no decorrer do trabalho honesto em problemas difíceis. Todo esse trabalho tende a ser relacionado, no sentido de que ideias e técnicas de um campo podem muitas vezes ser transplantadas com sucesso para outros. Até mesmo outros que parecem bastante distantes. Por exemplo, eu escrevo ensaios da mesma forma que escrevo software: sento e escrevo uma versão 1 ruim o mais rápido que posso digitar, depois passo várias semanas reescrevendo-a.

Trabalhar em problemas difíceis não é, por si só, suficiente. Os alquimistas medievais estavam trabalhando em um problema difícil, mas sua abordagem era tão falsa que havia pouco a aprender estudando-a, exceto talvez sobre a capacidade das pessoas de se iludir. Infelizmente, o tipo de IA que eu estava tentando aprender na faculdade tinha a mesma falha: um problema muito difícil, abordado alegremente com técnicas incrivelmente inadequadas. Audacioso? Mais próximo de fraudulento.

As ciências sociais também são bastante falsas, porque são muito influenciadas por modas intelectuais. Se um físico encontrasse um colega de 100 anos atrás, ele poderia ensiná-lo algumas coisas novas; se um psicólogo encontrasse um colega de 100 anos atrás, eles simplesmente entrariam em um argumento ideológico. Sim, claro, você aprenderá algo fazendo uma aula de psicologia. O ponto é que você aprenderá mais fazendo uma aula em outro departamento.

Os departamentos que valem a pena, na minha opinião, são matemática, as ciências duras, engenharia, história (especialmente história econômica e social, e a história da ciência), arquitetura e os clássicos. Um curso de revisão de história da arte pode valer a pena. A literatura moderna é importante, mas a maneira de aprender sobre ela é simplesmente ler. Eu não sei o suficiente sobre música para dizer.

Você pode pular as ciências sociais, filosofia e os vários departamentos criados recentemente em resposta a pressões políticas. Muitos desses campos falam sobre problemas importantes, certamente. Mas a maneira como eles falam sobre eles é inútil. Por exemplo, a filosofia fala, entre outras coisas, sobre nossas obrigações uns com os outros; mas você pode aprender mais sobre isso com uma avó sábia ou E. B. White do que com um filósofo acadêmico.

Falo aqui por experiência própria. Provavelmente deveria ter ficado ofendido quando as pessoas riram de Clinton por dizer "Depende do que significa a palavra 'é'". Fiz cerca de cinco aulas na faculdade sobre o significado de "é".

Outra maneira de descobrir quais campos valem a pena estudar é criar o gráfico de desistência. Por exemplo, conheço muitas pessoas que mudaram de matemática para ciência da computação porque acharam a matemática muito difícil, e ninguém que fez o contrário. As pessoas não fazem coisas difíceis gratuitamente; ninguém trabalhará em um problema mais difícil a menos que seja proporcionalmente (ou pelo menos log(n)) mais gratificante. Então provavelmente a matemática vale mais a pena estudar do que a ciência da computação. Por comparações semelhantes, você pode fazer um gráfico de todos os departamentos em uma universidade. Na parte inferior, você encontrará os assuntos com menos conteúdo intelectual.

Se você usar esse método, obterá aproximadamente a mesma resposta que acabei de dar.

Os cursos de idiomas são uma anomalia. Acho que eles são melhor considerados como atividades extracurriculares, como aulas de cerâmica. Eles seriam muito mais úteis quando combinados com algum tempo vivendo em um país onde a língua é falada. Por capricho, estudei árabe no meu primeiro ano. Foi muito trabalho, e os únicos benefícios duradouros foram uma estranha capacidade de identificar raízes semíticas e algumas ideias sobre como as pessoas reconhecem palavras.

Os cursos de artes de estúdio e escrita criativa são curingas. Normalmente você não aprende muito: você simplesmente trabalha (ou não trabalha) no que quiser, e depois fica sentado oferecendo "críticas" das criações uns dos outros sob a vaga supervisão do professor. Mas escrever e arte são ambos problemas muito difíceis que (algumas) pessoas trabalham honestamente em, então vale a pena fazer, especialmente se você conseguir encontrar um bom professor.

Trabalhos

Claro que os alunos da faculdade têm que pensar em mais do que apenas aprender. Existem também dois problemas práticos a considerar: empregos e pós-graduação.

Em teoria, uma educação liberal não deve fornecer treinamento profissional. Mas todo mundo sabe que isso é um pouco de uma mentira. Hackers em todas as faculdades aprendem habilidades práticas, e não por acaso.

O que você deve aprender para conseguir um emprego depende do tipo que você quer. Se você quiser trabalhar em uma grande empresa, aprenda como hackear Blub no Windows. Se você quiser trabalhar em uma empresa pequena e legal ou em um laboratório de pesquisa, você fará melhor aprendendo Ruby no Linux. E se você quiser começar sua própria empresa, o que eu acho que será cada vez mais comum, domine as ferramentas mais poderosas que você puder encontrar, porque você estará em uma corrida contra seus concorrentes, e eles serão seu cavalo.

Não há uma correlação direta entre as habilidades que você deve aprender na faculdade e aquelas que você usará em um emprego. Você deve mirar um pouco mais alto na faculdade.

Nos treinos, um jogador de futebol pode fazer supino com 300 libras, mesmo que ele nunca precise exercer algo parecido com essa força no decorrer de um jogo. Da mesma forma, se seus professores tentarem fazer você aprender coisas que são mais avançadas do que você precisará em um emprego, pode não ser apenas porque eles são acadêmicos, descolados do mundo real. Eles podem estar tentando fazer você levantar pesos com seu cérebro.

Os programas que você escreve nas aulas diferem em três maneiras cruciais daqueles que você escreverá no mundo real: eles são pequenos; você pode começar do zero; e o problema geralmente é artificial e predeterminado. No mundo real, os programas são maiores, tendem a envolver código existente e muitas vezes exigem que você descubra o que o problema é antes de poder resolvê-lo.

Você não precisa esperar para sair (ou mesmo entrar) na faculdade para aprender essas habilidades. Se você quiser aprender como lidar com código existente, por exemplo, você pode contribuir para projetos de código aberto. O tipo de empregador que você deseja trabalhar será tão impressionado com isso quanto com boas notas em tarefas de aula.

Em projetos de código aberto existentes, você não tem muita prática em a terceira habilidade, decidir quais problemas resolver. Mas não há nada que o impeça de iniciar novos projetos próprios. E bons empregadores ficarão ainda mais impressionados com isso.

Que tipo de problema você deve tentar resolver? Uma maneira de responder a isso é perguntar o que você precisa como usuário. Por exemplo, eu tropecei em um bom algoritmo para filtragem de spam porque queria parar de receber spam. Agora, o que eu gostaria de ter era um leitor de e-mail que de alguma forma impedisse minha caixa de entrada de encher. Eu tendo a usar minha caixa de entrada como um lista de tarefas. Mas isso é como usar uma chave de fenda para abrir garrafas; o que se quer realmente é um abridor de garrafas.

Pós-Graduação

E a pós-graduação? Você deve ir? E como você entra em uma boa?

Em princípio, a pós-graduação é treinamento profissional em pesquisa, e você não deve ir a menos que queira fazer pesquisa como carreira. E ainda assim, metade das pessoas que obtêm doutorado em ciência da computação não entra na pesquisa. Eu não fui para a pós-graduação para me tornar professor. Eu fui porque queria aprender mais.

Então, se você está principalmente interessado em hacking e vai para a pós-graduação, você encontrará muitas outras pessoas que estão igualmente fora de seu elemento. E se metade das pessoas ao seu redor estiver fora de seu elemento da mesma forma que você está, você realmente está fora de seu elemento?

Há um problema fundamental na "ciência da computação", e ele surge em situações como esta. Ninguém tem certeza do que a "pesquisa" deve ser. Muito da pesquisa é hacking que teve que ser enfiado na forma de um artigo acadêmico para produzir mais um quantum de publicação.

Então, é um pouco enganoso perguntar se você se sentirá em casa na pós-graduação, porque muito poucas pessoas se sentem realmente em casa na ciência da computação. Todo o campo está desconfortável em sua própria pele. Então o fato de você estar principalmente interessado em hacking não deve impedi-lo de ir para a pós-graduação. Apenas seja avisado de que você terá que fazer muitas coisas que você não gosta.

O número um será sua dissertação. Quase todo mundo odeia sua dissertação quando termina com ela. O processo inerentemente tende a produzir um resultado desagradável, como um bolo feito de farinha integral e assado por doze horas. Poucas dissertações são lidas com prazer, especialmente por seus autores.

Mas milhares antes de você sofreram escrevendo uma dissertação. E além disso, a pós-graduação é quase um paraíso. Muitas pessoas se lembram dela como o período mais feliz de suas vidas. E quase todos os outros, incluindo eu, se lembram dela como um período que teria sido, se eles não tivessem que escrever uma dissertação. [5]

O perigo da pós-graduação é que você não vê a parte assustadora antecipadamente. Os programas de doutorado começam como a faculdade parte 2, com vários anos de aulas. Então, quando você enfrenta o horror de escrever uma dissertação, você já está há vários anos. Se você desistir agora, você será um desistente da pós-graduação, e provavelmente não gostará dessa ideia. Quando Robert foi expulso da pós-graduação por escrever o verme da Internet de 1988, eu o invejei enormemente por ter encontrado uma saída sem o estigma do fracasso.

No geral, a pós-graduação provavelmente é melhor do que a maioria das alternativas. Você conhece muitas pessoas inteligentes, e sua procrastinação taciturna será pelo menos um poderoso elo comum. E, claro, você tem um doutorado no final. Eu me esqueci disso. Acho que isso vale alguma coisa.

A maior vantagem de um doutorado (além de ser o cartão de sindicato da academia, é claro) pode ser que ele lhe dá alguma confiança básica. Por exemplo, os termostatos Honeywell na minha casa têm a mais atroz UI. Minha mãe, que tem o mesmo modelo, diligentemente passou um dia lendo o manual do usuário para aprender como operar o dela. Ela assumiu que o problema era com ela. Mas eu posso pensar comigo mesmo "Se alguém com doutorado em ciência da computação não consegue entender isso termostato, ele deve ser mal projetado."

Se você ainda quiser ir para a pós-graduação depois dessa recomendação ambígua, posso lhe dar conselhos sólidos sobre como entrar. Muitos dos meus amigos são professores de ciência da computação agora, então eu tenho a história interna sobre admissões. É bem diferente da faculdade. Na maioria das faculdades, os oficiais de admissões decidem quem entra. Para doutorado programas, os professores fazem isso. E eles tentam fazer isso bem, porque as pessoas que eles admitem vão trabalhar para eles.

Aparentemente, apenas as recomendações realmente importam nas melhores escolas. Testes padronizados não contam para nada, e notas para pouco. O ensaio é principalmente uma oportunidade para você se desclassificar dizendo algo estúpido. A única coisa que os professores confiam são recomendações, de preferência de pessoas que eles conhecem. [6]

Então, se você quiser entrar em um programa de doutorado, a chave é impressionar seus professores. E pelos meus amigos que são professores, eu sei o que os impressiona: não apenas tentar impressioná-los. Eles não são impressionados por alunos que tiram boas notas ou querem ser seus assistentes de pesquisa para que possam entrar na pós-graduação. Eles são impressionados por alunos que tiram boas notas e querem ser seus assistentes de pesquisa porque estão genuinamente interessados no tópico.

Então, a melhor coisa que você pode fazer na faculdade, quer você queira entrar na pós-graduação ou apenas ser bom em hacking, é descobrir o que você realmente gosta. É difícil enganar os professores para que te deixem entrar na pós-graduação, e impossível enganar os problemas para que você os resolva. A faculdade é onde a farsa para de funcionar. A partir deste ponto, a menos que você queira ir trabalhar para uma grande empresa, o que é como voltar para o ensino médio, a única maneira de seguir em frente é fazendo o que você ama.

Notas

[1] Ninguém parece ter se importado, o que mostra o quão irrelevante a Arpanet (que se tornou a Internet) era até 1984.

[2] É por isso que, quando me tornei empregador, não me importei com GPAs. Na verdade, nós procuramos ativamente pessoas que tinham sido reprovadas na escola. Uma vez colocamos cartazes em Harvard dizendo "Você acabou de ser expulso por ter ido mal nas aulas porque você passou todo o seu tempo trabalhando em algum projeto seu? Venha trabalhar para nós!" Conseguimos encontrar um garoto que tinha sido, e ele era um ótimo hacker.

Quando Harvard expulsa alunos de graduação por um ano, eles têm que conseguir empregos. A ideia é mostrar a eles o quão horrível é o mundo real, para que eles entendam o quão sortudos eles são de estar na faculdade. Esse plano deu errado com o cara que veio trabalhar para nós, porque ele se divertiu mais do que tinha tido na escola, e ganhou mais naquele ano com opções de ações do que qualquer um de seus professores ganhou em salário. Então, em vez de rastejar de volta arrependido no final do ano, ele tirou outro ano de folga e foi para a Europa. Ele finalmente se formou por volta dos 26 anos.

[3] Eric Raymond diz que as melhores metáforas para hackers são em teoria dos conjuntos, combinatória e teoria dos grafos.

Trevor Blackwell lembra você de fazer aulas de matemática destinadas a alunos de matemática. "'Matemática para engenheiros' aulas foram muito ruins. Na verdade, qualquer 'x para engenheiros' é ruim, onde x inclui matemática, direito, escrita e visual design."

[4] Outros livros altamente recomendados: O que é matemática?, por Courant e Robbins; Geometria e a Imaginação por Hilbert e Cohn-Vossen. E para aqueles interessados em design gráfico, Euclides de Byrne.

[5] Se você quisesse ter a vida perfeita, a coisa a fazer seria ir para a pós-graduação, escrever sua dissertação em segredo no primeiro ou segundo ano, e depois simplesmente aproveitar os próximos três anos, pingando um capítulo de cada vez. Essa perspectiva fará os alunos de pós-graduação babarem, mas eu não conheço ninguém que tenha tido o disciplina para conseguir.

[6] Um amigo professor diz que 15-20% dos alunos de pós-graduação que eles admitem a cada ano são "longas chances". Mas o que ele quer dizer com longas chances são pessoas cujas candidaturas são perfeitas em todos os sentidos, exceto que ninguém no comitê de admissões conhece os professores que escreveram as recomendações.

Então, se você quiser entrar na pós-graduação em ciências, você precisa ir para a faculdade em algum lugar com verdadeiros professores de pesquisa. Caso contrário, você parecerá uma aposta arriscada para os comitês de admissões, não importa o quão bom você seja.

O que implica uma consequência surpreendente, mas aparentemente inevitável: pequenas faculdades de artes liberais estão condenadas. A maioria dos alunos inteligentes do ensino médio pelo menos considera entrar nas ciências, mesmo que eles acabem escolhendo não fazer isso. Por que ir para uma faculdade que limita suas opções?

Obrigado a Trevor Blackwell, Alex Lewin, Jessica Livingston, Robert Morris, Eric Raymond e vários professores anônimos de ciência da computação por ler rascunhos disso, e aos alunos cujas perguntas começaram isso.