Trabalho de Formatura Supervisionado - 2001


Aluno: Marcel Hiroshi Yoshizako
e-mail: hiroshi@linux.ime.usp.br

Supervisor: José Coelho da Pina Júnior

Índice

1. Empresa
2. Equipe Linux
3. Tecnologias utilizadas
4. Projetos e prazos
5. Desafios e frustrações
6. Matérias importantes
7. O IME e o estágio
8. Conclusão

1. Empresa

Voltar ao indice

O Buscapé é um site de comparação de preços. Foi o pioneiro nesse ramo e já está no ar há quase três anos. Entre os sites desse gênero, é o mais conhecido e com o maior número de page views. Ele captura produtos de mais de 500 lojas do Brasil, Espanha e Portugal.

O Buscapé é uma empresa de pequeno porte. Na época em que trabalhei na empresa, houve uma variação muito grande no número de funcionários. No final de 2000, eram apenas vinte. Até março de 2001 foram contratados mais dez funcionários, totalizando trinta. No final de junho, algumas demissões ocorreram e a empresa voltou a ter vinte funcionários.

Os funcionários podem ser divididos em quatro grupos de trabalho:

2. Equipe Linux

Voltar ao indice

Quando trabalhei no Buscapé, fiz parte dos Desenvolvedores em Linux. A equipe era composta por oito integrantes:

Nessa equipe não havia muita hierarquia. O coordenador apenas apresentava o projeto a ser desenvolvido, e o mesmo era discutido entre os desenvolvedores para estipular prazos e tecnologia a ser utilizada.

O começo do meu estágio foi como todos os outros. Apenas aprendendo o foco da empresa, as ferramentas utilizadas, qual seria o meu trabalho. Não houve nenhum tipo de treinamento. Entretanto, a equipe era muito boa e sempre me ajudava com qualquer dificuldade que eu tinha, não havia nenhum tipo de competição interna. Esse ponto era muito parecido com a faculdade, onde as pessoas estão acostumadas a ajudar umas às outras.

Com o passar do tempo, aprendi muito sobre a empresa e, consequentemente, sobre suas necessidades. Assim, pude verificar quais seriam as tecnologias que precisaria estudar para começar a produzir algo.

3. Tecnologias utilizadas

Voltar ao indice

A grande vantagem desse estágio foi a diversidade de tecnologias que eu precisei aprender. Os aplicativos eram desenvolvidos na liguagem Perl. Ela foi escolhida pois, para fazer a captura dos produtos nas lojas, utilizávamos muito expressões regulares, que é muito simples de usar nessa linguagem, diferente da linguagem C.

Os produtos eram guardados, no início, num banco de dados MySQL. Depois de um certo tempo foi necessário armazenar as informações dos produtos no SQL Server, em um servidor Microsoft. Para fazer a comunicação entre o Linux e o SQL Server no Windows, foi utilizado o ODBC.

Além disso, foram desenvolvidos CGI´s para controle de qualidade e estatísticas internas.

A maioria das dúvidas que eu tinha sobre Perl e ODBC, consegui achar no site www.cpan.org. Além disso, vários livros da série O´Reilly foram consultados, entretanto não lembro os nomes deles.

4. Projetos e prazos

Voltar ao indice

No Buscapé, a maioria dos projetos não tinham um nome definido, portanto, vou explicando os projetos e colocando sues respectivos prazos.

Um dos primeiros projetos no qual participei foi a criação de um estrutura básica para todas as lojas. Antes desse projeto ser desenvolvido, cada loja tinha um programa específico, ou seja, caso uma nova loja fosse incluída no Buscapé, um novo programa deveria ser desenvolvido.

A idéia deste projeto era criar uma estrutura básica fixa. Assim, cada loja teria apenas um arquivo com alguns parâmetros de configuração. Essa configuração seria passada para a estrutura que faria a captura dos produtos. Esse projeto foi um dos mais longos, e teve duração de três meses. Ele foi totalmente desenvolvido em Perl.

Para iniciar a captura dos produtos, cada loja era iniciada individualmente. Ou seja, não havia nenhum aplicativo que disparasse todas as lojas automaticamente. Portanto, foi preciso desenvolver um aplicativo.

Esse projeto consistia em criar um programa que disparasse todas as lojas automaticamente. Isso foi feito utilizando semáforos, pois como eram mais de 500 lojas, elas não poderiam ser inicializadas ao mesmo tempo. Assim, cada loja que terminava a captura dos produtos, enviava um sinal para que uma nova loja fosse inicializada. Mais uma vez o projeto foi totalmente desenvolvido em Perl com a utilização de semáforos. Ele teve duração de um mês.

Outros projetos que ajudei a desenvolver foram os CGI´s para rodar na Intranet. Eles tinham, basicamente, duas funções. Uma delas era criar um aplicativo que facilitasse o controle de qualidade do Buscapé. Como a captura dos produtos era feita automaticamente e muitas lojas tinham mais de 1000 produtos espalhados em diferentes categorias, assim, era difícil verificar todos eles um por um. Muitas vezes apareciam produtos em categorias erradas, ou então, “falsos” produtos como “promoção por R$50,00” ou “2x sem juros R$30,00”. Portanto, era necessário criar um CGI que facilitasse essa verificação. Através do CGI, a pessoa poderia verificar todos os produtos da loja diretamente. Ele mostrava a descrição, o preço e a qual categoria pertencia o produto. Caso houvesse erro, a pessoa consertava diretamente no arquivo de configuração da loja.

Outra função do CGI foi criar uma estatística da empresa. Através dele, pessoas de todas as áreas poderiam verificar quantas lojas eram cadastradas por mês, ou então quais produtos eram mais procurados. Essas estatística eram importantes principalmente para o marketing.

Quando foi fechado o contrato para lançar Buscapé na Espanha por exemplo, as estatísticas ajudaram a dar uma estimativa de quanto tempo seria necessário para colocar 150 lojas no ar.

Os projetos em CGI tiveram duração de 15 dias cada.

5. Desafios e frustrações

Voltar ao indice

O grande desafio do estágio no Buscapé foi iniciar um trabalho sem ter ninguém para coordenar. Nenhuma das pessoas que lá trabalhavam tinha uma vasta experiência. Assim, os projetos requisitados pelo chefe eram gerenciados diretamente pelos próprios desenvolvedores, sem um “gerente” responsável.

Outro desafio foi aprender sozinho novas tecnologias. Nunca havia trabalhado com Perl e meus conhecimentos em Banco de Dados eram restritos à Access.

Um outro desafio interessante foi trabalhar em uma empresa de Internet. Apesar de não estar muito relacionado com a computação em si, é importante citar pois são empresas onde os programadores atuam com frequencia. Em uma empresa de Internet, a volatilidade é muito grande. Em menos de um ano, o Buscapé passou por diversas mudanças.

Em agosto de 2000 a empresa foi avaliada em 120 milhões de dólares e era um dos sites de comparação de preços mais conhecidos. Todos os empregados estavam com vários projetos e, muitas vezes, era preciso trabalhar até de sábado. Em junho de 2001, foram demitidas nove pessoas ao mesmo tempo pelo fato da empresa não estar indo bem, e por perder dois grandes investidores. Nessa época quase não haviam projetos novos, apenas manutenção dos antigos. Isso mostra que a Internet ainda não é um mercado confiável, onde não há muita estabilidade no emprego.

Uma situação que acabou me deixando frustrado está ligada ao plano de carreira. No Buscapé, por ser uma empresa nova, não havia um plano de carreira definido para funcionários efetivos. A área de desenvolvedores era dividida apenas em estagiários e efetivos, assim, não havia muita expectativa para o futuro.

Um outro fato que causou frustração foi o fato de não haver muita integração entre as áreas. Elas eram praticamente isoladas e, por isso, muitas vezes projetos importantes não eram levados à frente. Ou então muitos erros de programação eram detectado em um determinado dia, mas só chegavam à equipe Linux depois de dois ou três dias pois ninguém comunicava diretamente para nós.

Um outro problema do Buscapé era a metodologia de desenvolvimento dos programas. Não havia uma documentação formal. Assim muitas vezes era preciso ficar consertando erros de planejamento no meio do projeto. Além disso, por não haver uma documentação formal e como o serviço era dividido, muitas vezes um programador fazia uma função recebendo dois parâmetros. Mas o programador que fazia a chamada da função não tinha isso documentado, e acabava passando mais (ou menos) parâmetros.

6. Matérias importantes

Voltar ao indice

Algumas matérias foram muito importantes. Estrutura de dados foi muito utilizado no desenvolvimento dos aplicativos, por ser uma matéria bem abrangente. Programação Concorrente ajudou muito no desenvolvimento do aplicativo que disparava automaticamente as lojas. Banco de dados foi importante para utilizar o SQL Server e o MySql.

Uma matéria muito importante, mas que eu não cheguei a cursar foi Programação Orientada a Objetos, que foi muito utilizado. Outra matéria que eu acho importante, mas que não foi utilizada, é Engenharia de Software. Se a empresa utilizasse qualquer metodologia ensinada em Engenharia de Software, os problemas no desenvolvimento seriam minimizados.

Poucas pessoas comentam, mas Métodos Formais e Álgebra Booleana também foram importantes. Elas são muito utilizadas, mas poucos dão importância. Isso porque a maioria usa a tabela verdade sem perceber (em um if, quando utilizamos X e Y, X ou Y). Como no desenvolvimento de CGI´s, utilizei tabelas verdades mais complexas, lembrei de colocá-las aqui.

7. O IME e o estágio

Voltar ao indice

Uma das grandes vantagens do IME é dar uma base computacional sólida. Diferente de muitas faculdades, o IME não dá muita ênfase em ficar ensinando em sala como utilizar certas linguagens de programação.

Isso foi fundamental para eu conseguir aprender, em pouco tempo, as tecnologias que seriam utilizadas no Buscapé.

Os Exercícios Programas em grupo também ajudam bastante, pois aprendemos a trabalhar em equipe e como fazer a divisão do trabalho. É claro que um projeto no estágio é algo bem maior que um EP, mas já é possível ter uma noção.

8. Conclusão

Voltar ao indice

Fazer estágio em uma empresa de Internet é muito importante. Apesar de não termos estabilidade no emprego, é possível aprender muito. Isso porque essas empresas precisam ter sempre tecnologia de ponta. Portanto, querendo ou não é preciso estudar tecnologias novas e, com isso, a pessoa estará sempre atualizada.

Acho muito importante também, enquanto estagiário, mudar um pouco de empregos. Pois a área de informática é muito abrangente. Assim, em nenhuma empresa conseguimos aplicar tudo o que aprendemos. Muitas vezes pensamos que alguma matéria é inútil, mas quando mudamos de empresa, ela acaba sendo utilizada.

Para terminar, acho que os alunos de Ciência da Computação devem tentar conciliar o estágio com a faculdade logo nos primeiros anos. Apesar de aprendermos muito na faculdade, é no mercado de trabalho que achamos aplicações práticas para as matérias que aprendemos.