GRADUAÇÃO
OriginalMarço de 2005
(Partes deste ensaio começaram como respostas a estudantes que me escreveram com perguntas.)
Recentemente, tive vários e-mails de graduandos em ciência da computação perguntando o que fazer na faculdade. Eu posso não ser a melhor fonte de conselhos, porque eu era um estudante de filosofia na faculdade. Mas eu fiz tantas aulas de CS que a maioria dos alunos de CS pensava que eu era um deles. 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: se tornar muito bom em programação e aprender muito sobre problemas específicos e interessantes. Esses dois fatores acabam sendo equivalentes, pois cada um impulsiona você a fazer o outro.
A maneira de ser bom em programação é trabalhar (a) muito (b) em problemas difíceis. E a maneira de fazer você trabalhar em problemas difíceis é trabalhar em algum projeto muito envolvente.
É provável que esse projeto não seja uma tarefa de classe. Meu amigo Robert aprendeu muito escrevendo software de rede quando era um 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 ficará mais feliz se não for a esse extremo; isso lhe causou muita preocupação 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 dividir 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 pessoas inteligentes parecem estar trabalhando; geralmente há uma razão.
Algumas das pessoas mais inteligentes ao seu redor são os professores. Então, uma maneira de encontrar trabalhos interessantes é se voluntariar como assistente de pesquisa. Os professores estão especialmente interessados em pessoas que podem resolver problemas tediosos de administração de sistemas para eles, então essa é uma maneira de entrar na porta. O que eles temem são os malucos e os que só querem encher o currículo. É muito comum que um assistente resulte em um aumento líquido de trabalho. Então você precisa deixar claro que você significará uma diminuição líquida.
Não se deixe intimidar se eles disserem não. A rejeição quase sempre é menos pessoal do que o rejeitado imagina. Apenas passe para o próximo. (Isso também se aplica a namoros.)
Cuidado, porque embora a maioria dos professores seja inteligente, nem todos trabalham em coisas interessantes. Os professores precisam publicar resultados novos para avançar em suas carreiras, mas há mais competição em áreas de pesquisa mais interessantes. 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 eles. Você está melhor evitando esses.
Eu nunca trabalhei como assistente de pesquisa, então me sinto um pouco desonesto recomendando essa rota. Eu aprendi a programar escrevendo coisas próprias, especialmente tentando reverter o SHRDLU de Winograd. Eu era tão obcecado por esse programa quanto uma mãe com um bebê recém-nascido.
Quaisquer que sejam as desvantagens de trabalhar sozinho, a vantagem é que o projeto é todo seu. Você nunca precisa se comprometer ou pedir permissão a ninguém, e se você tiver uma nova ideia, você pode simplesmente se sentar e começar a implementá-la.
Em seus próprios projetos, você não precisa se preocupar com a novidade (como os professores) ou a lucratividade (como as empresas). 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. Aplicativos "sérios" como bancos de dados são muitas vezes triviais e monótonos tecnicamente (se você alguma vez sofrer de insônia, tente ler a literatura técnica sobre bancos de dados), enquanto aplicativos "frívolos" como jogos são muitas vezes muito sofisticados. Tenho certeza de que existem empresas de jogos por aí trabalhando em produtos com mais conteúdo intelectual do que a pesquisa nos nove décimos inferiores dos departamentos universitários de CS.
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 estudante universitário, não havia ciclos suficientes para tornar os gráficos interessantes, mas é difícil imaginar algo mais divertido de se trabalhar agora.
Matemática
Quando eu estava na faculdade, muitos dos professores acreditavam (ou pelo menos desejavam) que a ciência da computação fosse um ramo da matemática. Essa ideia era mais forte em Harvard, onde não havia nem mesmo um curso de ciência da computação até a década de 1980; até então, era necessário 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 tenho certeza se ele achava que a IA exigia matemática ou se ele achava que a IA era bobagem e que se formar em algo rigoroso me curaria de tais ambições estúpidas.
Na verdade, a quantidade de matemática de que você precisa como hacker é muito menor do que a maioria dos departamentos universitários gosta de admitir. Eu não acho que você precise de muito mais do que matemática do ensino médio, além de alguns conceitos da teoria da computação. (Você precisa saber o que é um algoritmo n^2 se quiser evitar escrevê-los.) A menos que você esteja planejando escrever aplicativos matemáticos, é claro. A robótica, por exemplo, é toda 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 ser estudada por si só. É uma fonte valiosa 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, eu fui abusado matematicamente quando criança. Aprendi a pensar na matemática como uma coleção de fórmulas que não eram nem bonitas nem tinham qualquer relação com minha vida (apesar das tentativas de traduzi-las em "problemas de palavra"), mas que precisavam ser memorizadas para obter bons resultados em testes.
Uma das coisas mais valiosas que você poderia fazer na faculdade seria aprender do que a matemática realmente se trata. 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. Os melhores que posso pensar 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 a esse ideal.
Mas o que é tudo? Para mim, significa tudo o que as pessoas aprendem no curso de trabalhar honestamente em problemas difíceis. Todo esse trabalho tende a estar relacionado, pois ideias e técnicas de um campo muitas vezes podem ser transplantadas com sucesso para outros. Mesmo aqueles que parecem bastante distantes. Por exemplo, eu escrevo ensaios da mesma maneira que escrevo software: sento-me e produzo uma versão 1 ruim o mais rápido que posso, 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 possivelmente sobre a capacidade das pessoas de se enganarem. Infelizmente, o tipo de IA que eu estava tentando aprender na faculdade tinha o mesmo defeito: um problema muito difícil, abordado com técnicas lamentavelmente inadequadas. Ousado? Mais próximo do 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 ensinar-lhe algumas coisas novas; se um psicólogo encontrasse um colega de 100 anos atrás, eles apenas entrariam em um argumento ideológico. Sim, claro, você aprenderá algo fazendo um curso de psicologia. O ponto é que você aprenderá mais fazendo um curso em outro departamento.
Os departamentos que valem a pena, na minha opinião, são matemática, ciências duras, engenharia, história (especialmente história econômica e social, e história da ciência), arquitetura e os clássicos. Um curso introdutório de história da arte pode valer a pena. Literatura moderna é importante, mas a maneira de aprender sobre isso é simplesmente ler. Não sei o suficiente sobre música para dizer.
Você pode pular as ciências sociais, a 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 para 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.
Eu falo aqui por experiência. Provavelmente deveria ter me ofendido quando as pessoas riram de Clinton por dizer "Depende do que o significado da palavra 'é' é". Eu fiz cerca de cinco aulas na faculdade sobre o que o significado de "é" é.
Outra maneira de descobrir quais campos valem a pena estudar é criar o gráfico de evasão. Por exemplo, eu 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 oposto. As pessoas não fazem coisas difíceis gratuitamente; ninguém vai trabalhar em um problema mais difícil a menos que seja proporcionalmente (ou pelo menos log(n)) mais recompensador. 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 de uma universidade. No fundo, você encontrará os assuntos com menos conteúdo intelectual.
Se você usar esse método, você obterá aproximadamente a mesma resposta que eu acabei de dar.
Os cursos de idiomas são uma anomalia. Acho que eles são melhores 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 o idioma é falado. Por capricho, estudei árabe como calouro. Foi muito trabalho, e os únicos benefícios duradouros foram uma estranha habilidade de identificar raízes semíticas e algumas percepções sobre como as pessoas reconhecem as palavras.
Cursos de artes plásticas e escrita criativa são cartas na manga. Geralmente 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 supervisão vaga do professor. Mas a escrita e a arte são problemas muito difíceis que (algumas) pessoas trabalham honestamente, então vale a pena fazer, especialmente se você puder encontrar um bom professor.
Empregos
Claro que os estudantes universitários 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 se destina a fornecer treinamento profissional. Mas todo mundo sabe que isso é um pouco de mentira. Os hackers em todas as faculdades aprendem habilidades práticas, e não por acidente.
O que você deve aprender para conseguir um emprego depende do tipo que você quer. Se você quiser trabalhar em uma grande empresa, aprenda a hackear Blub no Windows. Se você quiser trabalhar em uma empresa legal ou laboratório de pesquisa, você se sairá melhor aprendendo Ruby no Linux. E se você quiser começar sua própria empresa, o que acho que será cada vez mais comum, domine as ferramentas mais poderosas que você puder encontrar, porque você vai 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.
Em exercícios, um jogador de futebol pode fazer supino com 300 libras, mesmo que ele nunca tenha que exercer uma força tão grande no decorrer de um jogo. Da mesma forma, se seus professores tentarem fazer você aprender coisas mais avançadas do que você precisará em um emprego, pode não ser apenas porque eles são acadêmicos, desligados do mundo real. Eles podem estar tentando fazer você levantar pesos com seu cérebro.
Os programas que você escreve em aulas diferem de três maneiras críticas dos 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 qual é o problema antes de poder resolvê-lo.
Você não precisa esperar para sair (ou mesmo entrar) da faculdade para aprender essas habilidades. Se você quiser aprender a lidar com código existente, por exemplo, você pode contribuir para projetos de código aberto. O tipo de empregador com o qual você deseja trabalhar ficará tão impressionado com isso quanto com boas notas em trabalhos de classe.
Em projetos de código aberto existentes, você não pratica muito 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 encontrei um bom algoritmo para filtragem de spam porque eu 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 ficar cheia. Eu tendo a usar minha caixa de entrada como uma lista de tarefas. Mas isso é como usar uma chave de fenda para abrir garrafas; o que realmente se quer é um abridor de garrafas.
Pós-Graduação
E quanto à pós-graduação? Você deve ir? E como você entra em uma boa?
Em princípio, a pós-graduação é um treinamento profissional em pesquisa, e você não deve ir a menos que queira fazer pesquisa como carreira. E, no entanto, metade das pessoas que obtêm doutorados em Ciência da Computação não entram 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ê estiver principalmente interessado em hackear e for 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 estiverem fora de seu elemento da mesma maneira que você, você realmente está fora de seu elemento?
Há um problema fundamental na "ciência da computação" e ele surge em situações como essa. Ninguém tem certeza do que a "pesquisa" supostamente deveria ser. Muita pesquisa é hackear que teve que ser espremida na forma de um artigo acadêmico para render mais uma quantidade de publicação.
Então, é meio enganoso perguntar se você se sentirá em casa na pós-graduação, porque muito poucas pessoas estão realmente em casa na ciência da computação. Todo o campo é desconfortável em sua própria pele. Então, o fato de você estar principalmente interessado em hackear não deve desencorajá-lo de ir para a pós-graduação. Apenas seja avisado de que você terá que fazer muitas coisas de que não gosta.
Número um será sua dissertação. Quase todo mundo odeia sua dissertação quando termina. O processo inerentemente tende a produzir um resultado desagradável, como um bolo feito de farinha de trigo 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 está próxima do paraíso. Muitas pessoas se lembram disso como a época mais feliz de suas vidas. E quase todos os outros, incluindo eu, se lembram disso como um período que teria sido, se eles não tivessem que escrever uma dissertação. [5]
O perigo com a pós-graduação é que você não vê a parte assustadora logo de cara. 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 worm da Internet de 1988, eu o invejei imensamente por encontrar uma maneira de sair 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 sombria procrastinação será pelo menos um poderoso vínculo comum. E, claro, você tem um doutorado no final. Eu me esqueci disso. Eu suponho que isso valha alguma coisa.
A maior vantagem de um doutorado (além de ser o cartão de união da academia, é claro) pode ser que ele lhe dá uma certa confiança básica. Por exemplo, os termostatos Honeywell em minha casa têm a interface de usuário mais horrível. Minha mãe, que tem o mesmo modelo, dedicadamente passou um dia lendo o manual do usuário para aprender a operar o dela. Ela assumiu que o problema era com ela. Mas eu posso pensar para mim mesmo "Se alguém com um doutorado em ciência da computação não consegue entender este termostato, deve ser mal projetado".
Se você ainda quiser ir para a pós-graduação após esta recomendação ambígua, posso lhe dar conselhos sólidos sobre como entrar. Muitos dos meus amigos são professores de CS agora, então eu tenho a história interna sobre admissões. É bastante diferente da faculdade. Na maioria das faculdades, os oficiais de admissão decidem quem entra. Para programas de doutorado, são os professores que decidem. E eles tentam fazer isso bem, porque as pessoas que eles admitem vão estar trabalhando para eles.
Aparentemente, apenas as recomendações realmente importam nas melhores escolas. Testes padronizados não contam para nada, e as notas contam pouco. O ensaio é principalmente uma oportunidade de se desqualificar dizendo algo estúpido. A única coisa em que os professores confiam são as 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 ficam impressionados com alunos que tiram boas notas ou querem ser seus assistentes de pesquisa para poderem entrar na pós-graduação. Eles ficam impressionados com alunos que tiram boas notas e querem ser seus assistentes de pesquisa porque estão realmente 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 programação, é descobrir o que você realmente gosta. É difícil enganar os professores para que eles o deixem entrar na pós-graduação, e impossível enganar os problemas para que você os resolva. A faculdade é onde fingir deixa de funcionar. A partir deste ponto, a menos que você queira trabalhar para uma grande empresa, o que é como voltar ao 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 insignificante a Arpanet (que se tornou a Internet) era até 1984.
[2] É por isso que, quando me tornei um empregador, não me importava com médias. Na verdade, procurávamos ativamente pessoas que haviam sido expulsas da escola. Certa vez, colocamos cartazes em Harvard dizendo "Você acabou de ser expulso por se sair mal em suas aulas porque passou todo o seu tempo trabalhando em algum projeto seu? Venha trabalhar para nós!" Conseguimos encontrar um garoto que havia sido expulso, e ele era um ótimo hacker.
Quando a Harvard expulsa alunos de graduação por um ano, eles têm que arrumar empregos. A ideia é mostrar a eles o quão horrível é o mundo real, para que eles entendam o quanto são sortudos por estar na faculdade. Este plano falhou com o cara que veio trabalhar para nós, porque ele se divertiu mais do que na escola e ganhou mais naquele ano com opções de ações do que qualquer um de seus professores com salário. Então, em vez de voltar arrependido no final do ano, ele tirou mais um ano de folga e foi para a Europa. Ele eventualmente se formou com cerca de 26 anos.
[3] Eric Raymond diz que as melhores metáforas para hackers estão na 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' classes eram horríveis. Na verdade, qualquer 'x para engenheiros' é ruim, onde x inclui matemática, direito, escrita e design visual".
[4] Outros livros altamente recomendados: O que é Matemática?, de Courant e Robbins; Geometria e a Imaginação de Hilbert e Cohn-Vossen. E para aqueles interessados em design gráfico, Byrne's Euclid.
[5] Se você quisesse ter a vida perfeita, a coisa a fazer seria ir para a pós-graduação, escrever secretamente sua dissertação no primeiro ano ou dois, e então apenas aproveitar-se pelos próximos três anos, gotejando um capítulo de cada vez. Essa perspectiva fará a boca dos estudantes de pós-graduação salivar, mas não conheço ninguém que tenha tido a disciplina para realizá-la.
[6] Um amigo professor diz que 15-20% dos estudantes de pós-graduação que eles admitem a cada ano são "apostas arriscadas". Mas o que ele quer dizer com apostas arriscadas são pessoas cujas aplicações são perfeitas em todos os aspectos, exceto que ninguém na comissão de admissão 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 professores de pesquisa reais. Caso contrário, você parecerá uma aposta arriscada para as comissões de admissão, não importa o quão bom você seja.
O que implica uma consequência surpreendente, mas aparentemente inevitável: as 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 no final escolham não fazê-lo. 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 CS por lerem rascunhos deste, e aos alunos cujas perguntas o iniciaram.