Categories
Carreira

O que eu acho sobre faculdades de informática

Para ser bem exato, esse post está em draft no meu WordPress desde 9 de fevereiro de 2008 quando escrevi um post sobre entrevistas. Enrolei esse tempo todo pra escrever porque é um assunto bem delicado e controverso (e além disso porque eu sou um procrastinador mesmo). Eis que há alguns dias eu vejo dois posts sobre o assunto, um do Fabio Akita e outro do Paulino Michelazzo e, apesar de concordar totalmente com ambos os posts, quero contribuir também com meus 2 centavos. 🙂

Pra começar, não tem nada no mundo inteiro que descreva melhor o que acho sobre certificados quanto o que o Rodrigo Kumpera escreveu nesse post no GUJ:

“[…] eu dou valor a certificação sim. Quando vou comprar gado mordo no mercado dou preferencia por aquele que é certificado. Afinal, entre duas peças amorfas de picanha, aquela com um selo de qualidade deve ser melhor, não?”

Eu não tenho nenhum problema com faculdade em sí. Para muitas pessoas é muito útil e é uma ótima porta de entrada para o mercado de trabalho. No entanto eu acho imbecil que as empresas avaliem a competência e capacidade das pessoas apenas por um canudo ou certificado. É ingênuo achar que as pessoas são melhores ou piores porque fizeram ou não faculdade.

No meu caso, por exemplo, eu comecei a trabalhar com informática bem cedo quando estava no 2o. grau. Nessa época eu fazia um curso técnico em eletrônica e acabei indo fazer meu estágio obrigatório numa empresa de desenvolvimento de sites. Mesmo fazendo eletrônica eu já tinha descoberto minha vontade de trabalhar com software brincando com Visual Basic, e por isso a oportunidade de ir para essa empresa foi ótima. Quando terminei meu 2o. grau, estava indo de vento em popa no estágio e como eu sempre fui adiantado 1 ano no colégio (porque “pulei” uma série) resolvi esperar mais um ano para começar a faculdade. Nesse ano trabalhei quase que de graça todo dia das 09:00 as 19:00 com um monte de profissionais excelentes e em vários tipos de projeto, o que me fez ganhar uma experiência enorme.

Durante esse ano começei a fazer provas para algumas faculdades para que no ano seguinte já estivesse tudo pronto para iniciar minha graduação. Acabei passando para algumas faculdades (o que não é um grande feito porque até analfabetos conseguem passar para algumas faculdades). A que eu escolheria seria a UERJ, que era do lado da minha casa. Só que eu percebi que se fosse para lá não teria como continuar trabalhando no mesmo ritmo que eu estava, teria que diminui-lo drasticamente. Isso me deixou muito deprimido, porque eu amava fazer o que eu fazia no trabalho e não queria deixar aquilo por nada. Foi quando eu optei por ir para uma faculdade particular, que tinha uma carga horária e programa bem menos “puxados”.

Logo nas primeiras duas semanas eu queria me matar. Era um tédio ter que ouvir aulas de introdução a programação quando eu já estava estudando aquilo diariamente há mais de 2 anos. Mesmo assim eu continuei porque eu queria me formar, mas decidí fazer uma estratégia diferente. Ao invés de ir às aulas, eu tentava ir o mínimo possível (o suficiente para não repetir por faltas) e fazia vários acordos com todos os professores para abonarem minhas faltas. Enquanto isso eu estudava sobre todos os assuntos da faculdade em casa, onde eu conseguia estudar muito mais rápido, no meu ritmo. Mesmo assim, três semestres depois eu ainda estava no primeiro semestre, porque era tão legal ficar no trabalho e estudar em casa que eu acabei repetindo em quase todas as matérias por falta. Três vezes.

Depois disso rolou muita história, trabalhei em um monte de lugares e passei por um total de 4 faculdades. Uma delas (a que fiquei mais tempo) me deixava altamente frustrado por não acompanhar as mudanças do mercado. Em 2005, me incomodava muito o fato de saber que a última atualização da programação do curso tinha sido em 1999. Seis anos em informática é muita coisa. Eu me lembro das aulas de introdução a banco de dados onde o professor ainda achava que MySQL e PostgreSQL eram adequados para aplicacões “pequenas”, que open source não tinha futuro e da cara de interrogação dos professores quando eu falei que tinha acabado de conhecer um treco chamado “AJAX” e outro treco chamado “Ruby on Rails“. Talvez para outras profissões que não mudem tanto isso não seja da mesma forma. Minha mãe que é formada em ciências contábeis e administração de empresas em duas boas faculdades aproveita esse conhecimento até hoje. Mas quando falamos de informática e desenvolvimento de software a história é outra.

Passei uma porção de anos vendo como isso tudo funciona, o que as pessoas estudam e como algumas delas se formam nas “coxas”. Por outro lado ví alguns amigos se formarem na Unicamp e irem fazer estágio na Bélgica, outros amigos desenvolvendo jogos no laboratório de programação da UFRJ e nessas mesmas duas faculdades outros amigos eram uns “enganadores” e passavam nas matérias as custas de muita “reza braba”. Uma outra vez trabalhei com um cara que tinha se formado na UFRJ e estava começando uma pós-graduação na PUC e ele não produzia mais do que 30 minutos se não tivesse alguém de babá do lado. Pior ainda que isso tudo é a história bem conhecida entre os alunos da PUC de uma menina de lá que uma vez passou de ano “favorecendo professores sexualmente” mas por outro lado conheço excelentes profissionais que se graduaram lá.

O “x” da questão é o seguinte: não dá pra avaliar as pessoas somente pelos seus diplomas e certificados! Como eu acabei de mostrar, existem casos e casos. Fazendo uma conta rápida cheguei à conclusão que das 20 pessoas mais brilhantes que já trabalharam comigo em toda minha vida, 50% sequer eram formadas, cerca de 20% formados na pior faculdade do Rio e 30% em “faculdades de ponta”, como adoram dizer as consultorias de RH. Todas essas pessoas eram (são ainda) muito acima da média, são pessoas brilhantes, muito inteligentes e que, assim como eu, estudam diariamente desde que perceberam que é assim que se faz a diferença – independente de terem feito faculdade ou não.

Por isso que quando eu contrato pessoas tento conhecer o máximo possível além da sua fachada (que é o currículo). Mais recentemente tenho tentado chamar as pessoas para passarem o dia aqui programando em par com várias pessoas, participando de reuniões e discutindo com outros desenvolvedores em situações reais. Depois disso saber se a pessoa fez ou não graduação, mestrado ou doutorado é completamente irrelevante. Aliás, acabei de me tocar que eu não faço a menor idéia se as últimas duas pessoas contratadas são formadas ou não, porque nem me lembro de ter lido seus currículos. Ao invés disso, elas passaram dois dias aqui, contaram toda a sua vida, mostraram código, programaram em par comigo, saimos pra almoçar e falar besteira e eles se deram muito bem com o pessoal dos times de desenvolvimento.

Para finalizar, de forma alguma estou aconselhando que as pessoas não façam faculdade, muito pelo contrário. Eu sempre aconselho que se estude o máximo possível. Para alguém que nunca teve contato com nada nesse mundo de informática talvez seja interessante. Para alguém que tem sede de aprender e estuda numa boa faculdade com bons professores que vão te levar além do que está na sala de aula, é sensacional (eu já tive professores assim e a experiência é incrível). Porém, se você está lá pelo canudo, esquece: você já é um fracasso. Se você quer se encher de canudos/certificados/selos mas ainda não colocou na cabeça que você vai precisar estudar todo dia para ser algúem nesse mercado de informática, você está perdido.

*Update: Outros posts sobre este assunto (de leitura obrigatória):

Categories
Engenharia de software

Java é ruim?

Em tempos de Ruby on Rails parece que está na moda falar mal de Java. Na Rails Summit então meus ouvidos chegaram a doer de tanto ouvir falar que Java é ruim, Java é burocrático, bla bla bla e que Ruby on Rails é fantástico, produtivo e sexy. Calma, essa não é mais uma daquelas comparações ridículas de Java versus Ruby on Rails.

Mas ainda ficou a pergunta que não quer calar: Java é ruim mesmo? A resposta, como sempre, é que depende do caso…

Em um projeto de desenvolvimento de software, mesmo antes de começar o desenvolvimento você já tem algumas restrições para escolher tecnologias. A finalidade do software por si só pode já restrigir muito a tecnologia que terá que ser usada.

Por exemplo, se você estiver fazendo um website, provavelmente você não escapará de fazer uma interface em HTML, Flash ou qualquer outra coisa específica para desenvolver uma camada de apresentação web. Provavelmente você não vai querer usar Assembly para fazer a parte server-side, já que não seria muito produtivo (apesar de não ser impossível). Eventualmente esse site pode ser um portal como a Globo.com que têm milhões de acessos por dia e você terá que escolher uma plataforma/linguagem/arquitetura que priorizem performance e favoreçam escalabilidade. Ou então pode ser um site com pouquíssimos acessos e você nem precisará se preocupar com isso…

Ou então você pode precisar fazer um pequeno script para fazer backup automatizado de um banco de dados MySQL. Seria totalmente incoerente usar Delphi, Fortran ou Piet. Provavelmente você vai querer usar algo como Shell script e resolver o problema em meia dúzia de linhas. Alguns bancos como o SQL Server têm mecanismos de agendamento de backup automático que são super fáceis de configurar e usar, portanto nesse caso usar Shell script seria trabalho desnecessário.

Meu ponto aqui é que não dá para dizer que Java (ou qualquer outra coisa) é ruim por sí só. Java pode ser ruim ou bom dentro de um contexto. Por exemplo, em 2005 eu trabalhei num projeto de Call Center à distância via Internet onde precisei desenvolver um softphone e a melhor opção foi usar Java Applets. Além de existirem bibliotecas Java para trabalhar com IAX (que é um protocolo como o SIP, só que proprietário do Asterisk), o usuário não precisava instalar nenhum programa para falar com o Call Center, bastava acessar o site. Eu odeio Applets com todas as minhas forças, mas foi ótimo para esse projeto (eu diria até que foi relativamente fácil). Seria correto então dizer que Ruby on Rails é ruim só porque seria impossível de fazer esse projeto com tanta facilidade? É óbvio que não!!!

Jamais existirá uma única linguagem ou plataforma para resolver todos os problemas. O desenvolvedor de software precisa conhecer vários tipos de ferramenta e saber escolher a melhor delas para resolver cada problema. Que fique claro que eu não sou defensor de Java, Ruby ou de qualquer outra coisa. O caso é que é incoerente dizer que X ou Y é bom ou ruim por sí só; é preciso analisar as opções dentro de um contexto.