02/07/09
Entrevista com Pamela Fox e Mike Repass, da Google
1. Poderia comentar um pouco sobre Java e Python na Google ?
Mike Repass: Trabalhamos muito nos últimos meses para o lançamento do
Google App Engine para Java e houve muito interesse, mais de 35.000
desenvolvedores. Java tem muitas funcionalidades novas excelentes que não
estão disponíveis em Python, mas Python continua tendo uma série de coisas
características únicas e diferenciais que nós amamos.
Por causa disso, nosso compromisso é ter suporte de primeira classe para Java e
Phyton. Então não vamos focar em um ou outro, queremos paridade de
funcionalidades, equivalência de experiência do usuário, e sempre que possível
queremos oferecer o mesmo nível de performance e qualidade do serviço.
Uma diferença interessante é que Python talvez seja mais rápido para você
transformar uma ideia em uma aplicação Web, enquanto Java tem uma engine de
compilação chamado JIT compilation oferecendo alta performance. O Core
Runtime de Java tende a ser sempre mais performático do que Python, que é a
realidade natural das linguagens compiladas, ou melhor, JIT versus Scripting
Languages, mas estamos comprometidos em suportar os dois.
2. Como você visualiza o modelo de negócios já que as empresas estão
acostumadas a ter um orçamento mensal para infraestrutura e com o
modelo de Cloud é mais difícil prever o custo já que será baseada em
parâmetros como tráfego ou CPU ?
Mike Repass: Esta é uma excelente pergunta. Eu acredito que a visão que temos
é de um modelo progressivo, queremos democratizar / ubliqus a infraestrutura
de disponibilização de uma aplicação Web. Queremos permitir que um
desenvolvedor publique uma aplicação de forma tão simples quanto criar um
blog ou subir um vídeo para o YouTube.
Queremos que a pessoa tenha a ideia, desenvolva, faça deploy nos servidores e
BUM!, a aplicação está pronta e no ar! Então, o primeiro nível é gratuito, ou seja,
você começa de graça e, se você tiver muito sucesso e atingir certos níveis, passa
a pagar, primeiramente com cartão de crédito, que é muito atraente para
desenvolvedores ou pequenas e médias empresas, e certamente se tivermos
grandes corporações será necessário oferecer mecanismos de cobrança mais
sofisticados com alocação de budget, etc que já estão sendo analisadas.
Nosso objetivo é que o App Engine seja universalmente acessível: poucas
barreiras para entrar, gratuito para começar, nenhum custo fixo, não é
necessário fazer reserva, com o principal objetivo de atender o consumidor na
Web. Mas se as pessoas nas empresas tradicionais olharem melhor o App Engine
e quiserem utilizar, com certeza vamos oferecer outras formas.
3. Como você vê a competição com o Cloud da Amazon ?
Mike Repass: Acredito que são muito complementares, duas grandes e
excelentes empresas compartilhando sua experiência com o mercado. A Amazon
é excelente para disponibilização de infraestrutura e manutenção de máquinas:
Linux, Windows. Enquanto no App Engine temos diversos serviços de software
da Google sendo oferecidos: BigTable, e-mail, XMPP, Jaber, então acredito que
são duas empresas compartilhando sua experiência e temos muitos clientes que
utilizam os dois, ou migram de um para o outro. Mais do que competição acredito
que é uma nova realidade que reduz a barreira de disponibilização de aplicações
Web. Torna a web melhor e mais simples.
4. Existe algum plano de adicionar serviços para o ciclo de
desenvolvimento da aplicação como Integração Contínua com Hudson, ou
coisas deste tipo como foi anunciado para o Cloud da Sun
Mike Repass: Não, não há planos para este tipo de serviço, mas há outras coisas
que funcionam de forma bem simples, minha preferida é o emulador local do
ambiente, Cloud, através do download do SDK de 2M que você baixa para a sua
máquina para emular os serviços do Cloud e você pode instalar sua aplicação,
através de Stubs APIs que emulam as funcionalidades do nosso ambiente
localmente, este é um exemplo de integração leve (lightweight) com o ambiente.
Acreditamos que este emulador local torna o desenvolvimento mais simples, mas
não há planos de oferecer serviços distribuídos para simplificar o acesso ao
ambiente remoto.
5. Existe algum plano da Google de oferecer uma IDE online ou alguma
coisa do tipo?
Mike Repass: Acho este tipo de projeto fascinante, não temos nenhum plano
formal, acredito que seria uma oferta excelente se a Google ou alguém pudesse
fazer isto para o colocar no Google App Engine. Minha visão como gerente da
plataforma seria ter energia de terceiros para que isto viabilizasse qualquer
pessoa de programar de um terminal, de um café.
Pamela Fox: Existe alguns Robôs do Wave que fazem isto, tem um chamado
Monty que avalia Python e pode ser utilizado com Sintaxy que mostra as
sugestões de sintaxe. E Dala fez um robô na semana passada que permite a
edição conjunta de um gadget que vai salvar o gadget e recarregá-lo. Nenhum
deles está exatamente criando uma aplicação completa. Temos também o AJAX
Playground que é basicamente uma IDE para AJAX. Então, acho que estamos
perto disto.
6. Existe algum plano de suportar outros frameworks Java além das
tecnologias anunciadas hoje (JSP e Servlets) como JSF e outros ?
Sim, com certeza queremos avançar neste sentido. Não tenho uma lista completa
aqui, mas estamos definitivamente interessados.
É um desafio por causa das restrições de segurança. Quando você roda uma
aplicação no App Engine o processo tem a segurança do container e temos a
camada que isola o app engine que intercepta as chamadas de baixo nível. E a
linguagem e o ambiente que executamos uma sandbox é flexível e permite um
monte de coisas, mas existem uma série de classes que não podem ser
executadas. Alguns frameworks não funcionam porque utilizam classes que não
podem ser executadas, como Sockets por exemplo, e o motivo é simples, se você
abre um Socket em uma máquina do Cloud e a próxima requisição vai para outra
máquina não é possível transferir para outra...
Mas, isso é uma coisa que pode ser suportado na nossa arquitetura e talvez
apenas não está pronto ainda pois é necessário analisar o framework, analisar o
bytecode e analisar se tem algum problema com as nossas restrições de
segurança e isto dá muito trabalho. Então nosso objetivo foi lançar a versão Java
do App Engine e daí ter o feedback da comunidade e ajudar a priorizar o que é
mais importante para a comunidade. Com certeza JSF é um bom exemplo de caso
que queremos trabalhar para fazer funcionar no Google App Engine, mas agora é
a vez dos desenvolvedores dizerem o que é mais prioritário.
7. Alguma dica para quem quer trabalhar na Google ?
Mike Repass: Antes de trabalhar na Google eu trabalhei na Microsoft, então vou
dar uma dica geral, que não serve apenas para a Google.
Automotivação e self driven execution. Não há livros ou tutoriais que substituam
uma boa educação. A habilidade de gerenciar seu próprio trabalho, incentivar
você mesmo e testar você mesmo e ser capaz de avaliar seu progresso e
aprendizado. Chegar na segunda e pensar o que você quer e vai desenvolver e na
sexta-feira analisar de forma transparente, realista e honesta seu progresso. Este
é o padrão que tenho visto de maior sucesso nas empresas que tenho trabalhado
e venho tentando trabalhar em mim.
Pamela Fox: Eu diria que é muito importante para a Google ser um bom
estudante, fiquei realmente surpresa quando me perguntaram as notas até do
colegial. Acho que eles veem a Universidade como um teste de como você se sai
em um ambiente estruturado como aquele. Com certeza o autoestudo é
valorizado, mas eu recomendo que vocês terminem a universidade, sejam bons
alunos. A Google parece uma universidade, se você não gosta da universidade
não vai gostar da Google. Acho que não importa em qual plataforma Google você
é especialista, mas para engenheiros de software é solução de problemas e
algoritmos, muitos amigos que fizeram entrevistas investiram muito tempo
nisto, nas entrevistas e almoços.
8. E o inglês é muito importante ?
Pamela Fox: Sim, é muito importante.
9. Qual a cultura de Agile na Google?
Mike Repass: A Google ao invés de forçar um processo permite que os times
tenham liberdade, utilizem o que é melhor para eles, uma espécie de crescimento
orgânico, valorizando o sucesso ao invés de ditar as regras.
Alguns engenheiros têm paixão por medir e mostrar o progresso, é interessante
ver como diferentes times lidam com isto.
No nosso time, do App Engine, nós utilizamos um pouco de Agile: Iterações,
Story Points... os engenheiros criam programas e gráficos para mostrar quanto
trabalho isto dá. É divertido. Então, nós usamos Agile e em outros times eles
podem usar outros métodos, engenheiros e gerentes encontram os que
funcionam para eles.
Pamela Fox: As coisas podem iniciar e mudar ao longo do projeto. No último
projeto utilizamos no último mês: reuniões diárias, pair programming, etc, mas
depois do lançamento geralmente vamos para um modo de trabalho mais
tranquilo sem checar tão constantemente o progresso.
Eu realmente nunca entendi até hoje o que exatamente significa Agile.
Na Google utilizamos qualquer forma que funcione para o time específico ou
para o projeto.
10. Existe algum plano para certificação ?
Pamela Fox: Sim, eu falei sobre isto na minha segunda apresentação. Nós temos
a Developer Qualification Program. Nós lançamos recentemente na Google.io,
começamos com Gagdet Developers, agora estamos iniciando para Maps
Developers porque temos uma comunidade grande de desenvolvedores e
agências trabalhando com esta API, então o programa de qualificação é composto
por:
- Referências
- Exame de múltipla escolha
- Código exemplo
- Evidências, Contribuições para a comunidade Open Source
Você não precisa ter todos, sua pontuação é uma somatória dos quatro fatores.
Os desenvolvedores qualificados são listados em uma página especial.
Temos planos de levar esta qualificação para outras APIs, mas queremos ter
certeza da escala porque cada submissão precisa ser analisada manualmente.