Archive for the 'Formação' Category

Sobre Pesquisa e Sudoku

Dia desses estava eu resmungando pra minha namorada o quanto a minha pesquisa empaca quando meus colegas (principalmente meu orientador) estão muito ocupados e eu não recebo feedback. Como a gente gosta de fazer sudoku juntos, eu comecei a fazer uma analogia entre os problemas atacados em pesquisa acadêmica e sudoku pra explicar meus resmungos. Achei a analogia curiosa, então aqui vão os dois pontos principais, quem sabe alguém acha mais.

Antigamente, isso desde a idade antiga até mais ou menos a 2a guerra mundial, os pesquisadores eram aqueles seres mitológicos, geralmente um pouco malucos, excêntricos e isolados. Eles resolviam seus problemas separadamente, ficando muitas vezes anos escondendo o jogo até conseguir resultados interessantes. Por isso vemos várias vezes na história casos de descoberta simultânea por pesquisadores isolados. O grande problema desse modelo é que muitas vezes você fica empacado. É isso que acontece comigo quando eu faço sudoku sozinho, sem minha namorada. As vezes tem uma solução óbvia pra uma célula, bem na cara, e eu simplesmente não vejo (obviamente isso acontece com ela também, quando ela faz sozinha). E é exatamente assim que me sinto quando falta colaboração na minha pesquisa: eu as vezes encontro problemas que me travam ou, pior ainda, perco um bom tempo num caminho errado, o que poderia ser evitado se alguém com um “fresh look” no problema me desse um toque. Colaboração se tornou essencial em pesquisa principalmente a partir da 2a guerra, quando a complexidade dos problemas (e o preço das soluções!) começou a ficar grande demais pra um pesquisador solitário (ou um até um país sozinho, vide CERN). E com os meios de comunicação atuais, isso só está acelerando. Um bom exemplo é o My Experiment, um portal em que pesquisadores contribuem a metodologia de experimentos pra facilitar replicação.

Outro aspecto em que sudoku se parece com um problema de pesquisa é no seu lifecycle, ou ciclo de vida. Quando surge um novo problema de pesquisa, ou até uma nova área, é como um jogo de sudoku recém começado. As primeiras células são bem fáceis de serem preenchidas, assim como é bem fácil fazer progresso no problema. Você ataca antes as chamadas “low hanging fruits”, ou seja, faz antes o que é mais fácil de ser feito. Daí surgem aquelas lendas, e essa eu ouvi diretamente da boca do Alan Kay, de cientistas da computação conseguindo PhD em uma semana (nos anos 50, 60) por um algoritmo para alguma coisa que ninguém tinha feito antes (não me lembro exatamente pra que). Um outro exemplo é a invenção dos compiladores, provavelmente o desenvolvimento na área de computação que teve o maior impacto na produtividade, impacto que dificilmente vai ter equivalente no futuro. O ponto é que é mais fácil quando ninguém fez nada na área ainda. Depois a coisa começa a empacar, e tem-se uma fase de progresso incremental, em que problemas difíceis são resolvidos um a um, cada um merecendo um PhD. Depois, quando o tabuleiro já está mais cheio, fica mais fácil de completar. É nessa hora que os pesquisadores perdem o interesse na área, e geralmente os problemas que faltam sobram pra indústria. E é nessa hora que eu perco o interesse, viro pro lado e deixo minha namorada terminar o sudoku em paz!

Por que é tão difícil contratar gente boa?

Estava relendo algumas notas antigas que eu faço para mim mesmo sobre comentários que as pessoas leitoras (e, eventualmente, editoras) deste blog fazem…

Na outra ponta, poderíamos pensar o seguinte: que tal se, ao invés de ter uma equipe de 12 pessoas em um projeto, o que levaria ter 12 pessoas que tenham familiaridade com um conjunto de ferramentas (e aí, obviamente, nos levando a escolher um framework), que tal diminuir a equipe para 3 ou 4 que sejam (a) mais experientes/produtivos e (b) capazes de utilizar ferramentas mais poderosas?
Com a ajuda de uma ferramenta de busca não foi difícil achar que este foi um comentário do Rapahel neste post aqui. Longe de querer reavivar aquela discussão, o que me veio à cabeça foi uma resposta, para mim simples, à pergunta, extremamente importante e sobre a qual já refleti diversas vezes, do Raphael.

Eu diria que o principal problema que eu vejo para não ter uma equipe de 12 pessoas medianas que tenham familiaridade com um conjunto de ferramentas e, no lugar disso, ter uma equipe de 3 ou 4 pessoas mais experientes e produtivas, capazes de utilizar ferramentas mais poderosas é porque é muito difícil contratar estas 3 ou 4 pessoas.

Já coordenei e participei como entrevistador em diversos processos de seleção e às vezes fico horrorizado com alguns currículos recebidos ou pessoas entrevistadas. Além disso, a quantidade de pára-quedistas que aparecem em processos seletivos é enorme. Pessoas que simplesmente não tem nada a ver com a vaga (e chegam a dizer isto explicitamente no currículo) mas que mesmo assim se candidatam a ela.

Por ser tão difícil de achar estes 3 ou 4, pelo fato de os projetos geralmente terem prazos apertados que não possibilitam perder muito tempo formando (ou contratando) uma equipe e, talvez, pelo preço de estes 3 ou 4 ser muito alto quando comparado com os 12 medianos, eu diria que provavelmente eu preferiria me manter com os 12 medianos se eles fossem capazes de entregar o projeto pronto do que gastar tempo e dinheiro buscando profissionais que talvez não apareçam, impactando, no fim das contas, o bom andamento do projeto que, no fundo no fundo, não precisava de pessoas qualificadas para ser entregue em um nível bom (mas não ótimo).

Agora, sinceramente, o que mais me preocupa não é está minha “equação” pragmática. O que mais me preocupa é realmente a dificuldade de se achar pessoas realmente boas. E isso eu acho que é culpa da formação e do interesse geral das pessoas naquilo que elas fazem. Coisa difícil de mudar num curto prazo.

Scala: faz barba, cabelo e bigode

Aprender Scala está na minha TODO list faz um bom tempo. Finalmente tive algum tempo umas semanas atrás pra dar uma olhada na linguagem. A motivação veio de diversas fontes. No laboratório onde trabalho nós estamos tendendo à usar Scala nos nossos desenvolvimentos futuros, devido a integração de elementos funcionais que facilitam a implementação de algumas partes do código; a minha pesquisa usa uma boa pitada de linguagens específicas de domínio (domain specific languages, DSLs) e Scala parece adequada para o desenvolvimento de embedded DSLs (por exemplo, veja essa DSL para SWT em Scala); e finalmente, tivemos uma palestra sobre tagless interpreters, que haviam sido implementados em Haskell e OCaml, e eu queria ver como implementar um interpretador de cálculo lambda em Scala.

Bem, não importa se você não sabe o que são tagless interpreters ou se não se importa com lambda calculus, o foco desse post é outro. Quando comecei a aprender Scala, eu vi que a linguagem realmente faz jus ao nome (Scala vem de SCAlable LAnguage, e o objetivo era ter uma linguagem que serve pra fazer desde pequenos scripts até grandes aplicações enterprise). Basta olhar a lista de features da linguagem que você percebe que Scala faz barba, cabelo e bigode!

Como não faz sentido discorrer sobre todas as features de Scala (isso merece um livro), eu vou me concentrar em duas pequenas coisas que deixam qualquer programador Java com inveja: Local Type Inference e Traits.

Local Type Inference (Inferência Local de Tipos)

Quantas vezes eu odiei ter que escrever tipos redundantes em Java (que já expliquei em alguns comentários anteriores). Imagine um método que devolve uma lista inicializada com um inteiro (é um exemplo estúpido, mas é só pra mostrar type inference in action). public List<Integer> getList() { List<Integer> list = new ArrayList<Integer>(); list.add(0); return list; }

Scala é staticamente tipada, o que significa que todos os tipos tem que ser verificados pelo compilador. Mas o compilador de Scala tenta ao máximo inferir o tipo que você está indicando. Você só precisa escrever o tipo se o compilador não conseguir determinar qual é o tipo correto. O mesmo código em Scala ficaria mais ou menos assim (Note que sou bem novato em Scala, então me perdoe se existem soluções mais elegantes): def getList() = 0 :: Nil

O código ficou pequeno não somente por inferência de tipos, mas vamos ver como que inferência ajudou (o que segue é como eu imagino o compilador pensando). Primeiro o compilador infere que Nil é uma lista vazia, então pode ter qualquer tipo. O “::” é na verdade uma chamada de método (o add) na lista Nil, passando zero (0) como parâmetro (em Scala, métodos que iniciam com “:” fazem bind à direita, então Nil – que é uma case class de List – é quem recebe o método). O compilador vê que 0 é um Int (o equivalente de Integer e int em Scala), então o resultado de chamar add em Nil é uma lista de inteiros (ou List[Int]). Finalmente, o compilador vê que essa lista é retornada pelo método, então o tipo do método é List[Int].

Com isso, ao invés de escrever o tipo de lista em 3 lugares diferentes, você não precisou escrever em lugar algum, pois o tipo foi inferido do conteúdo e essa informação foi propagada. Note que se a lista estivesse vazia, você teria que escrever pelo menos 1 vez qual é o tipo (pois não tem como inferir do conteúdo), mas é melhor que 3 vezes!

Traits

Traits são basicamente interfaces com implementação. Já é sabido faz um bom tempo que herança múltipla (multiple inheritance, MI) causa dores de cabeça enormes (o Google, por exemplo, proíbe uso de MI no desenvolvimento interno de aplicações C++). A resposta de Java foi o conceito de interfaces, que te dão um poder parecido com MI (porque uma classe pode estender diversas interfaces, então pode ser usada polimorficamente no lugar de qualquer uma delas), mas muito mais restrito (porque a classe tem que implementar os métodos de todas as interfaces).

Em Scala, as Traits são como interfaces, mas elas podem ser parcialmente implementadas, normalmente com código default. Isso resolve alguns problemas de interfaces. Em Java existem várias interfaces pra receber eventos de GUIs que contém diversos métodos (um pra cada tipo de evento, veja MouseListener por exemplo). Quando você só tá interessado em um tipo de evento (por exemplo, Mouse Pressed), você tem que implementar todos os métodos (normalmente deixando em branco). Se você tiver sorte e sua classe não estende nenhuma outra, você pode usar um dos adapters com implementações em branco (como MouseAdapter), mas não é sempre o caso. Outro caso típico é quando um dos métodos pode ser derivado dos outros, como no exemplo direto do tour de Scala: trait Similarity { def isSimilar(x: Any): Boolean def isNotSimilar(x: Any): Boolean = !isSimilar(x) }

Nesse caso, classes precisam somente implementar isSimilar pois elas já ganham de graça o isNotSimilar. Note que traits, como interfaces, não podem ser instanciadas, e têm que ser adicionadas a classes ou objetos.

E agora?

Eu dei aqui só uma mostra do que Scala tem, e na verdade não cheguei nem perto da parte que eu considero mais importante, que é a junção (bem elegante por sinal) dos paradigmas funcional e orientado a objetos. Inclusive, umas semanas atrás eu fui à uma palestra do Simon Peyton-Jones, que é um dos caras por trás de Haskell. Depois da apresentação eu conversei (por ótimos 2 minutos) com ele sobre Scala e ele se disse feliz que Scala está trazendo linguagens funcionais pra desenvolvedores que estariam presos em OO (tanto por instrução – o que se aprende nas universidades em geral – quanto pelo mercado de trabalho). Eu acho que ele ainda prefere Haskell, mas Scala introduz “desenvolvedores comuns” ao paradigma funcional, sem abdicar de ser prática (não que Haskell não seja, mas o fato de se poder chamar código Java de Scala faz com que a adoção seja bem mais fácil).

O que me pergunto é se “desenvolvedores comuns” vão conseguir entender o que Scala oferece e usar de forma eficiente (isso depois que surgirem “Scala Design Patterns”). Sempre ouço que na indústria o average Joe mal entende Java direito, imagina então Scala. Estaríamos chegando em uma era em que uns poucos desenvolvedores excepcionais, usando linguagens e ferramentas ultra eficientes, seriam capazes de desenvolver “qualquer” sistema e suprir a demanda do mercado? Ou seja, o mercado encolheria em termos de número de programadores, mas os que restarem teriam uma produtividade muito superior?

Não sei. Mas sei que Scala faz barba, cabelo e bigode. E se bobear, tem algum jeito daquele pelinho no fundo da orelha ir junto!

Rails Summit Latin America

Pra quem se interessa por Ruby e em particular por Ruby on Rails (RoR), o Rails Summit Latin America eh uma oportunidade imperdível. O evento vai acontecer nos dias 15 e 16 de outubro em São Paulo, e conta com a presença de diversos palestrantes internacionais. É também uma ótima chance de entrar em contato com a comunidade brasileira e latino americana de RoR e Ruby.

Essa foi a parte propaganda para o evento, agora vem a propaganda para mim. Meu irmão comprou o ingresso para o evento quando eles estavam com uma promoção para ingressos adiantados, e pagou 300 reais. Depois eles criaram uma promoção de 100 reais para estudante. Como a organização disse que não tem como devolver o dinheiro, eles deram 3 opções pra quem comprou antecipado mas tem direito a estudante:

  • ele pode transferir o ingresso antigo para alguma outra pessoa e comprar um de estudante;
  • ele pode dividir o ingresso dele com mais 2 estudantes; ou
  • ele pode desfrutar de um credito de 200 reais em serviços de um patrocinador do evento.
Eu não entendo muito bem essa historia de “não tem como devolver o dinheiro”. Pelo menos neste ano ainda não tem CPMF, então bastaria eles colocarem de volta 200 reais na conta, ou devolver no cartão de credito, ou mesmo entregar em mãos. Mas de qualquer forma, pelo menos eles estao tentando ressarcir de alguma forma.

O problema é que meu irmão não conhece ninguém que esteja interessado, e também não está interessado em nenhum produto do patrocinador. Então, se alguém se interessar e quiser dividir a entrada ou comprar a entrada pelo preço antecipado, entre em contato comigo e a gente tenta ajeitar isso.

Vale lembrar que o preço (mesmo o de 300 reais) é muito barato pelo retorno que traz: palestras de altíssima qualidade, contato com gente interessante e ainda contando com almoço e coffee breaks. Queria eu estar no Brasil nesses dias!

O porquê de querer um blog escrito em Português

N.A: Esse texto já tinha sido escrito para a página de traduções. Mas acho que o raciocínio ficou muito grande e além do escopo para aquela seção. Por isso estou publicando como um post regular.

É verdade que a língua dominante na Internet é o Inglês. Isso não se dá só pelo domínio cultural norte-americano, mas também por uma necessidade que surgiu com a globalização e com o avanço de tecnologia de telecomunicações: pessoas de pontos extremos do mundo precisam de uma linguagem comum se quiserem se comunicar e colaborar de forma eficiente. Alemães, indianos, chilenos, russos… não importando o idioma local, o inglês é necessário.

Mas isso não significa, entretanto, que é razoável abandonar a nossa língua-materna e passar a usar um idioma estrangeiro como forma exclusiva de produção de conteúdo. Nem por nacionalismo irracional e cego, como o dos franceses que não aceitam termos estrangeiros, mas por uma questão mais básica: a Ciência mostra que nossa capacidade de expressão está ligada ao domínio da linguagem que usamos para transmitir nossas idéias, sentimentos e conceitos abstratos; ao usarmos uma língua que não temos pleno domínio, a nossa capacidade de comunicação e expressão fica prejudicada. Tente imaginar um esquimó tendo que explicar a um morador do sertão nordestino as diferenças entre os (mais de 30) tipos de neve, usando inglês. Difícil, né?

É verdade que o propósito de blogs e microblogs é o de dar voz-própria para cada indivíduo, sem que dependam de canais previamente estabelecidos que atuem como editores do conteúdo produzido. Também é verdade que o fluxo aparentemente caótico de informação que corre nos blogs podem produzir ferramentas interessantes. Por exemplo, podemos analisar a massa de blogs de muitos usuários da internet que escrevem sobre as suas impressões sobre os produtos ou serviços que são lançados, para ter um feedback coletivo e usar como um termômetro para medir a repercussão e aceitação de uma campanha de marketing.

Sendo assim, falar em “formas adequadas para se escrever” parece uma coisa antiga, retrógrada. Na maior parte do tempo, atuamos mais como filtros e repetidores de sinal do que produtores de novas unidades de informação. Mas, se atuamos como filtros, é porque há muito ruído no rio de informação que passa por nós todos os dias. E se há muito ruído, poderíamos muito bem fazer um pouco de auto-análise e vermos se nossa atuação é sinal (conteúdo que dá novas informações, claro, preciso, eficaz) ou se é ruído (repetição, inócuo, redundante, que apenas toma tempo do receptor).

O idioma escolhido acaba sendo parte dessa auto-análise. Os blogueiros brasileiros que buscam acabam escrevendo em Inglês podem muito bem perguntar: “Será que aquilo que eu quero falar é relevante para essas pessoas que já fazem parte da conversa global, ou estou apenas usando um idioma com maior número de receptores para ter a sensação de que terei maior alcance?”

Ao passar por essa auto-análise, podemos muito bem perceber que a maior parte do conteúdo não teria razão para ser escrito em inglês. Muito do que discutimos ou apresentamos no blog são informações que já são conhecidas, ou podem ser facilmente encontradas, entre pessoas que trabalham com tecnologia e falam em inglês. E querer ficar falando ou escrevendo para quem já tem meios de ouvir a informação da fonte original é uma ação, no fundo, vaidosa e sem propósito. É apenas uma forma moderna e high-tech de querer ouvir a si mesmo. O produtor do conteúdo não se beneficia (além da auto-massagem no ego) e os consumidores potenciais não se beneficiam, pois já possuem a informação – de melhor qualidade – em outro lugar.

É por conta de tudo isso que fazemos questão de escrever em Português. Há muita gente por aí que até gostaria de buscar formação e informação para trabalhar com tecnologia mas que esbarra no problema de falta de material que não seja em inglês. Espero que, ao fornecer um pilar de material na língua nativa, o caminho para essa formação seja mais fácil e menos desencorajador.

Impressões da Discovery ‘08 – Parte 2

Um tempo atrás eu descrevi minhas impressões sobre a Discovery’08 e prometi continuar sobre mais uma palestra e o painel que assisti. Demorou um pouco mais do que esperado, mas felizmente eu consegui achar onde tinha deixado minhas anotações e lembrar dos pontos que queria comentar. Mas melhor do que isso, eu descobri que os organizadores fizeram podcasts de algumas palestras e discussões e colocaram à disposição no site. Então, quem quiser pegar o conteúdo na integra é só baixar os podcasts (estão em inglês).

Primeiro vamos à palestra do ministro da pesquisa e inovação de Ontario, Honorable John Wilkinson. Ele falou durante o almoço, o que não é muito agradável, mas a minha primeira impressão foi: como os políticos sabem falar bem! Não que os outros palestrantes não soubessem falar ou tivessem problemas no palco, mas o políticos são especialistas em falar as coisas de um jeito que parece até que eles realmente estão entendendo detalhes de todos os assuntos, mesmo que seja somente um texto escrito pelo assessor.

Mas falando do conteúdo, duas coisas me chamaram muito a atenção. Primeiro foi que o evento contava com enviados das embaixadas da China e da Índia. Nisso eu fiquei pensando: onde estaria o representante brasileiro? O governo brasileiro envia representantes para eventos os mais esdrúxulos possíveis, mas será que ninguém da embaixada em Ottawa ou do consulado em Toronto sabia desse evento e/ou se interessou por ele? Qual seria o motivo da missão brasileira no Canadá, somente dar suporte à cidadãos brasileiros, ou participar mais ativamente em parcerias que podem trazer benefícios enormes para o país? O Canadá não tem uma economia comparável, em tamanho, à dos EUA ou da Europa, mas é não é de se desprezar, como nossos concorrentes chineses e indianos sabem muito bem. Segundo o ministro, Ontario é o distrito do G8 (e possivelmente do mundo) com maior densidade de graduados em universidades (distritos seriam estados ou províncias, já que provavelmente existem focos menores com maior densidade). Isso significa um grande potencial de crescimento na região, já que conta com muita mão de obra qualificada (e um governo que, apesar de todos os problemas, tenta ajudar).

O segundo ponto interessante tem relação com os incentivos do governo provincial para a criação de novos negócios. Existem inúmeros projetos, mas dois chamam a atenção. Primeiro, o governo tem um projeto com um fundo de alguns bilhões de dólares pra investir em empresas de tecnologia. O interessante é que, se você tem um projeto e aplica para conseguir fundos, o governo garante que responde em 45 dias. Isso é realmente impressionante, pois avaliar um projeto desses sempre requer contatos com especialistas e outras milhões de burocracias atrapalhando. Segundo o ministro, o governo quer ser um “parceiro” que anda na “velocidade da nova economia”. Segundo, novas empresas que são baseadas em tecnologia própria tem 10 anos de isenção fiscal. Isso é o governo trabalhando pra ajudar as empresas, não pra chupar o sangue delas! Na minha última ida ao Brasil eu conversei com um amigo que abriu uma empresa de tecnologia. Ele me disse que cerca de 40% dos gastos da empresa eram impostos, desde taxas diretas da venda até encargos para os empregados. Se o governo cortasse esses impostos para empresas recém criadas, ele teria 40% mais investimento pra crescer! E depois o governo poderia reter 20% de impostos de um bolo muito maior. É claro que tem-se que tomar muito cuidado com essas medidas, senão vão surgir milhares de empresas se recriando a cada dois anos pra ficar sempre na categoria de “novas empresas”, mas eu imagino que algo bem pensado nessa direção seja muito proveitoso.

Bem, vamos ao painel então. O título era “Failures on the Road to Success” (literalmente, fracassos no caminho do sucesso). A proposta era basicamente discutir como fracassos fazem parte da busca por sucesso, principalmente em áreas muito imprevisíveis (veja no último texto sobre os Black Swans). Os palestrantes não entraram muito em conflito e todos eles defendiam a tese de que fracassos anteriores são considerados positivamente no vale do silício por analistas de investimento. Isto é, quando alguém vai analisar se vai pôr dinheiro na sua idéia, você ter feito uma besteira anterior é positivo, pois você ganhou experiência, talvez perdeu dinheiro (dos outros), mas tem mais chance de dar certo agora. Infelizmente, e isso eu achei o ponto fraco da discussão, nenhum dos palestrantes admitiu realmente ter fracassado feio. Somente um deles contou um caso em que o fracasso inicial no fim se transformou num sucesso (ele apostou na moeda errada, mas depois de alguns anos ela se tornou a certa). Ou seja, não sei até que ponto é só glamour essa idéia de glorificar o fracasso passado.

Mas outras duas mensagens curtas do painel também foram legais. Primeiro, eles pisaram e falaram mal de venture capitalists. Disseram que eles não estão nem aí para o seu negócio, tudo que querem é retorno do investimento, etc, tudo aquilo que a gente já sabe, mas é sempre bom repetir: no melhor dos mundos, cresça o quanto der, até sua empresa ter o máximo possível de valor de mercado antes de procurar investidores. Segundo, eles disseram nua e cruamente: cientistas da computação não sabem fazer negócios. Isso não significa que não existam computeiros que possam ser ótimos homens de negócios, mas simplesmente que o tipo de treinamento e skills necessários pra ser um bom manager, para negociar com clientes, etc, não é exatamente o que é ensinado em um curso de computação. A dica é, se você entende muito de tecnologia e sabe muito bem como desenvolver produtos, se concentre nessa área e se associe com uma pessoa que é especialista em vender a sua tecnologia e o seus produtos. Mais uma que a gente já sabia!

Eu não falei? Não estamos sozinhos.

O editor-chefe adoooooora usar ditos populares como títulos de seus textos. Se eu adotasse esse estilo como forma de puxa-saquismo (imitation is the most sincere form of flattery, after all), o título desse post seria “Quem procura, acha.”

Aproveitei que as coisas deram uma acalmada pra tentar responder eu mesmo à minha última provocação. Há sim gente boa escrevendo no Brasil e buscando a comunidade dentro do próprio país. Nas minhas andanças, já encontrei e foram parar no meu RSS os seguintes:

Google Reader é seu amigo. Adicionem esse pessoal, participem, troquem idéias. E se encontraram mais gente interessante, dêem o toque.

Leia mais

Cumprindo meu papel de ficar pentelhando os outros colaboradores para escrever mais e ao mesmo tempo ficar escrevendo pequenos artigos com que exigem pouco esforço mental da minha parte, eis um link para um artigo do Coding Horror bem interessante sobre a questão da leitura de livros sobre computação:

http://www.codinghorror.com/blog/archives/001108.html

Dizem por aí que se você lê regularmente blogs e sites especializados em desenvolvimento, tecnologia, mercado e afins, você já é um profissional diferenciado. Existe até um número descrevendo isso: 20% apenas dos desenvolvedores se interessam por este tipo de material (eu vi este número em vários textos. Infelizmente não tenho as referências comigo agora, portanto terão que acreditar na minha palavra).

Carreira e Pós-Graduação

Por Thiago “Bart” Bartolomei

Este post nasceu de um email que eu mandei para amigos esta semana. O objetivo é de abrir uma discussão sobre a validade de se fazer uma pós graduação em área técnica. O que eu vou escrever aqui é a minha percepção, e eu gostaria que vocês comentassem, já que depois da nossa graduação muitos de nós seguiram caminhos bem diferentes na carreira.

Existem basicamente 4 “opções de carreiras” pra quem se formou em Engenharia ou Ciência de Computação (sem contar mudar totalmente de área). Você pode entrar na área de consultoria não-técnica (financeira, management, etc): neste caso, acho que o que mais vale a pena eh fazer um MBA. Pelo que tenho visto, Stanford é a melhor opção, mas eu não tenho experiência pra comentar muito sobre isso.

A segunda opção seria você continuar na área da computação, mas partir pra algo mais gerencial. Nesse caso, o ideal talvez fosse fazer algum MBA mais voltado pra TI, talvez um mestrado em área técnica, desde que voltado pra gerência de processos, qualidade ou coisa assim.

A terceira opção seria ficar na área técnica mesmo. É claro que é bem difícil você ficar programando low-level a sua carreira inteira: alguma hora você vai ter que subir pra algo mais gerencial. Mas de qualquer forma, o foco seria tecnologia.

Finalmente, a quarta opção seria você fazer uma carreira “acadêmica”. Eu coloco entre aspas pois eu considero que hoje em dia ninguém vai ser professor de universidade e ficar num mundo paralelo, mas vai ter contatos com a indústria pra manter os pés no chão (e o dinheiro entrando). Eu também considero trabalhar em centros de pesquisa privados como carreira “acadêmica”.

Nesses dois últimos casos, eu vejo pós-graduação em área técnica como algo essencial. Eu tenho alguma experiência em universidades e empresas no Brasil, na Alemanha, no Canadá e conheço historias sobre EUA e outros países europeus. Na Europa praticamente todos saem da universidade com mestrado. O doutorado dura somente 3 anos e é bastante voltado pra indústria, que absorve essa mão de obra qualificada. No Canadá e nos EUA muitos fazem mestrado e os PhDs são muito bem vindos pela indústria. O diploma é essencial para entrar em grandes laboratórios de pesquisa (como IBM, Sun e Google), e inclusive já ouvi histórias de algumas empresas européias em que você simplesmente não sobe na carreira (mesmo em área gerencial) sem ter um PhD (nem que seja um PhD em Física ou Antropologia).

Em resumo, MSc e PhD são títulos muito bem vistos não somente por universidades, mas também por empresas.

Me parece que no Brasil as coisas não são bem assim: um profissional com doutorado é visto como alguém muito caro, que não vai trazer mais benefícios pra empresa do que um recém-graduado (que é muito mais barato). Por isso, a única opção pra doutores é tornar-se professor de universidades ou fundar a própria empresa (provavelmente uma consultoria técnica). Eu tenho a impressão que mestrado já não é mais visto como um problema, pois tenho visto bastante gente obtendo o título e depois indo para empresas.

Mas eu acredito que o mercado pra PhDs vai aumentar conforme o Brasil cresce e entra no mercado global em que o conhecimento e a tecnologia são as coisas mais importantes. Então as empresas vão aprender, como já o fazem as empresas indianas e chinesas, que um PhD pode trazer um conhecimento de ponta importantíssimo pra aumentar a competitividade da empresa.

Esta é a minha percepção. Vocês concordam com isso? Críticas? Sugestões?

[Bart é Eng. de Computação formado pela UNICAMP, ex ponta esquerda e central do glorioso time de Handball da Computação e atual doutorando da Universidade de Waterloo, do Canadá.]

Switch to our mobile site