Trabalho de Supervisionado

MAC - 499

Marcos Tatsuo Yamamoto

 

1. Apresentação

2. O Início do Estágio

3. A empresa PR&A

4. O Estágio

5. Os Projetos

6. Comentários Gerais sobre os Projetos

7. Relacionamento Consultor com o Desenvolvedor

8. Ferramentas Utilizadas

9. Cursos

10. O que mais gostei no estágio

11. O que menos gostei no estágio

12. Em que o IME me ajudou

13. Considerações Finais

 

1. Apresentação

Aluno: Marcos Tatsuo Yamamoto

Faculdade: Instituto de Matemática Estatística

Universidade de São Paulo

Curso: Bacharelado em Ciências da Computação

Duração: Fevereiro/1997 à Dezembro/2000

NUSP: 2869198

e-mail: mty@linux.ime.usp.br, mtyamamoto@uol.com.br

Supervisor: Professor Marcelo Finger

e-mail: mfinger@ime.usp.br

Responsável: Carlos Eduardo Ferreira

e-mail: cef@ime.usp.br

2. O início do Estágio

No ano de 1999, após dois anos cursando BCC, estava interessado em começar um estágio. A verdade é que eu estava ficando cansado de ver tanta teoria sem saber como utilizá-la na prática.

No mês de agosto de 2000 comecei o estágio na empresa PR&A, indicado por uma colega do IME, e continuo até os dias de hoje.

3. A Empresa PR&A

A Prandini, Rabbat & Associates, PR&A, é uma empresa de Consultoria Financeira especializada em soluções para risk-management, precificação e hedging de derivativos, asset allocation e risco de crédito.

Desenvolve e implementa soluções utilizando sempre o estado-da-arte nas áreas de finanças, otimização, estatística e computação de modo a fazer face às demandas mais atuais do mercado.

A PR&A e a DMZ Consultores são duas empresas do mesmo grupo, separadas apenas por motivos contábeis. As duas empresas se destacam no mercado financeiro brasileiro por modelar matematicamente os produtos e serviços financeiros dos bancos, fundos de investimento e fundações de previdência privada. A modelagem, geralmente, envolve processos estocásticos e a construção de software para calculá-los.

Gradativamente, as duas empresas estão também atuando em projetos mais qualitativos ao invés de quantitativos, tais como: construção de sistemas de análise gerencial, auxílio a tomada de decisão, estruturação administrativa de controle de investimento e análise de risco operacional.

É uma empresa de pequeno porte que vem crescendo a cada dia. Conta com atualmente cerca de 50 funcionários. A empresa é subdividida em seis principais áreas, sendo que estou alocado na de Consultoria Financeira com ênfase em Risco de Mercado. A grande maioria dos clientes é formada por bancos estatais, privados e fundações (Entidade Fechada de Previdência Privada – EFPP).

Por não ser uma empresa que atua diretamente na área de computação, eu não consigo ter a mesma visão dos consultores sobre novas tecnologias da área financeira. Com o fim da minha graduação, pretendo fazer cursos relacionados a essa área de atuação para que eu possa participar mais do projeto e entendê-lo como um todo.

4. O Estágio

Ao começar o estágio, passei por uma fase de treinamento para utilizar ferramenta para construção de aplicativos, o Delphi 3. Até então, eu havia utilizado poucas ferramentas gráficas no IME e fiquei surpreso pela facilidade de uso do Delphi. Para quem ficava construindo janelas em Java sem ferramentas gráficas, o Delphi era uma maravilha.

Essa fase de treinamento foi na base da famosa tentativa e erro, ou seja, ficava fuçando para descobrir o que cada componente fazia. Apenas dois outros colegas de trabalho usava o Delphi e eles faziam o papel de Help Online. O ambiente de trabalho era bem descontraído, por isso não havia problema de interromper o serviço dos colegas por alguns minutos.

A pior parte de começar a trabalhar com um compilador diferente do que você está acostumado é quando começa a dar erros de compilação e/ou execução. Já fiquei horas sem produzir porque dava erros que eu não havia idéia do significado. Apenas com o tempo fui aprendendo os macetes de debugação.

Como as aplicações são voltadas para o mercado financeiro, eu podia esclarecer quaisquer dúvidas sobre o assunto com membros de outras áreas, pois estes estavam sempre dispostos a responder às perguntas.

5. Projetos

Logo na segunda semana de estágio, o meu chefe passou a especificação de um projeto para a Caixa Econômica Federal.

Tomando como base os Exercícios Programas do IME, comecei o projeto pela implementação. Eu havia três peças em mãos. O arquivo de entrada (80 Mb), a especificação dos campos do arquivo e a especificação dos cálculos.

Em poucas semanas o projeto estava implementado, mas a interface era bem simples. O aplicativo tinha um campo para entrar com o path do arquivo, um outro para a data de hoje e um botão para iniciar a execução dos cálculos. Os resultados eram visualizados em uma tabela (grid).

Esse projeto foi bom para aprender o básico da linguagem, pois não requeria de conhecimentos específicos.

O objetivo desse projeto era organizar duas grandes tabelas. Organizado o Banco de Dados, consultas foram realizadas para extrair alguns parâmetros estatísticos para que pudéssemos analisar os padrões de atraso de cada cliente registrado no Banco de Dados.

Com esses parâmetros calculados, conseguimos enxergar, auxiliado por uma ferramenta gráfica, alguns clusters com padrões diferenciados.

A idéia do projeto é bem parecida com a da Caixa Econômica Federal. Claro que o formato do arquivo de entrada era diferente do anterior e haviam outros cálculo mais complexos.

Diferente do anterior, muitos dos dados foram buscados em um Banco de Dados. Esta foi a primeira vez que eu tive contato com um banco de dados. Em uma outra área, havia um produto que usava o Interbase como base de dados. Então optei por esse produto, pois eu teria alguém que pudesse me auxiliar na criação e manutenção. Após alguns meses, migramos para o SQL Server que era o Banco de Dados preferido do Cliente.

Comecei a implementar uma DLL que faria a interface com a base. No início, essa DLL só era usada por esse produto mas hoje ela é usada por todos os produtos do ConsolidatingBank, que será citado posteriormente.

O Projeto Ativas era um produto que a empresa já havia implementado todos os cálculos em uma DLL na linguagem C. Essa DLL era linkada com a planilha Excel. A minha função foi criar uma interface em Delphi que pudesse linkar a DLL existente para aproveitar o código existente.

Essa interface criada, serviu também como base para as interfaces de outros produtos ConsolidatingBank.

Seguindo o padrão do Produto Ativas, os cálculos do Rural foi implementado em C e a inteface em Delphi. Esses cálculo citados fazem parte da modelagem do fluxo de entradas e saídas dentro das divisões internas do banco, neste caso a divisão Rural.

Diferente de outros fluxos, o Rural tinha um fluxo cheio de peculiaridades, e portanto, o código ficou um pouco mais complexo.

A especificação dos Produtos Passivas era, inicialmente, semelhante ou até mais simples que das Ativas. Portanto, ao invés de começar uma nova DLL de cálculo, fiz uma cópia do código das Ativas e comecei a adaptá-la para as Passivas.

A adaptação foi relativamente fácil. O problema foi que no andamento do projeto, diversas modificações foram realizadas e o código estava ficando muito confuso.

Durante todo o estágio, esta ferramenta foi a que dediquei mais tempo. Seu papel era fazer a interface gráfica com o Banco de Dados e oferecer ferramentas úteis para o dia a dia para analisar a situação do banco.

Paralelamente, essa ferramenta foi desenvolvida juntamente com a DLL que fazia acesso ao Banco de Dados.

Todas as informações de mercado são cadastradas diariamente nesta ferramenta, que serão acessadas por todos os outros produtos ConsolidatingBank.

Essa ferramenta é usada para achar o valor em risco de um banco, mais conhecido por Value-at-Risk (VaR) no mercado financeiro.

Esta ferramenta contribui bastante para a minha experiência pois foi o projeto com a melhor especificação e pouco se mudou durante o desenvolvimento. Por isso, ela foi implementada em pouco tempo.

Nesse projeto, tive que implementar rotinas para manipular matrizes, pois se usou alguns modelos estatísticos como a variância, covariância, correlação e volatilidade.

Este projeto consistia em pegar os resultados salvos de cada produto ConsolidatingBank, algumas outras informações de mercado e calcular o índice VaR do banco como um todo. Esse índice é uma das mais importantes de todo o projeto, pois para calcular esse simples valor é preciso ter todos as outras partes do projeto já implementada.

Esse projeto é a união de vários outros produtos desenvolvidos durante todo o estágio. São eles: Habitação, Poupança, Ativas, Passivas, Rural, Judicial, Tesouraria, CROT, Mercado, Consolidador e VaR.

A equipe que participou desse projeto conta com três consultores financeiros e três desenvolvedores. Os consultores passavem metade do tempo com o cliente e a outra metade do tempo com os desenvolvedores.

O projeto foi especificado em tempo de implementação. Estranho?? Acho que sim. Por esse motivo era difícil modelar e organizar o projeto como um todo. Isso era uma muito ruim para nós, os desenvolvedores, que precisávamos programar e reprogramar várias vezes a mesma rotina.

Partes do projeto foram divididas entre os três desenvolvedores. Precisávamos saber sincronizar as partes do projeto para não atrapalhar o serviço dos outros, pois muitas partes dependiam de outras.

Esse projeto é semelhante ao VaR da Nossa Caixa Nosso Banco, mas foi implementado diversas ferramentas. Foi preciso modelar um banco de dados que permitisse buscar informações do main-frame do Banespa e salvar os resultados obtidos.

O único problema que ocorreu nesse projeto, foi que ele precisava ser implementado em Visual Basic, pois pouco se conhecia sobre a linguagem. O meu chefe achou melhor terceirizar o serviço, pois o código já estava todo implementado em Delhi e não valeria a pena perder tempo aprendendo uma nova linguagem já que haviam outros projetos pendentes.

6. Comentários Gerais sobre os Projetos

Certamente os projetos realizados foram de extrema importância para a minha experiência. Aprendi a lidar com os chefes, com especificações de projeto, com prazos e responsabilidades.

Aprender linguagens novas pode ser um pouco cansativo no começo, mas quanto mais linguagens a gente conhecer melhor será a nossa decisão sobre a linguagem ideal para implementar um determinado projeto. Na PR&A, tive o meu primeiro contato com uma linguagem de desenvolvimento visual, o Delphi. Aprendi a criar aplicativos executáveis e bibliotecas dinâmicas para Windows.

Um lição que aprendi e que é muito importante fazer são as documentações. Ter um código bem comentado e uma boa especificação também ajudam bastante. Não que eu tenha comentado e documentado todos os meus projetos, mas é exatamente por não ter feito tudo isso corretamente. Principalmente porque as especificações mudavam constantemente. Quando ocorria uma modificação em algum projeto, eu ia diretamente no código, alterava e colocava um comentário rápido no local. Isto não deixavam as especificações e códigos coerentes, e eu sei que no futuro poderá trazer sérios problemas.

Por esses motivos, eu vou procurar seguir alguma metodologia de Engenharia de Software. Assim, eu espero que o desempenho da área melhore bastante.

7. Relacionamento Consultor com o Desenvolvedor

Os projetos funcionam da seguinte maneira: os consultores, que possuem um maior conhecimento do assunto, discutem e analisam o problema com o cliente e depois repassam a conclusão e a idéia do projeto para os desenvolvedores. Nós desenvolvedores, tentamos modelar o problema e discutir esses modelos com os consultores (que também tem conhecimentos computacionais), para começar a implementar o produto.

Os desenvolvedores distribuem as tarefas e começam a implementar o produto. Ao finalizar, um consultor começa a fazer a homologação, ou seja, verifica se os resultados estão saindo de maneira correta. Se estiver errado, ele indica o erro para o desenvolvedor e mostra como deveria ser o resultado. Se estiver correto, o consultor leva o produto para o cliente e simula uma situação.

Com relação ao prazo, o desenvolvedor estipula um certo tempo para acabar a tarefa e passa ao consultor. O problema é que depois de acertado o prazo, outras modificações são realizadas mas o prazo geralmente continua o mesmo. Logo, o projeto parece estar atrasado.

Pelo lado social, os consultores e desenvolvedores tem um contato bem informal e qualquer dúvida e/ou sugestão pode ser colocada em aberto.

8. Ferramentas Utilizadas

A minha principal ferramenta de trabalho foi o Delphi. Com ela eu implementei aplicativos executáveis e DLL's. Outras ferramentas auxiliares foram o Formula One 5 e 6, o Tee Chart, e bibliotecas Rx para Delphi. Para o Banco de Dados, usamos o Interbase e o SQL Server 7. Para o gerenciamento dos códigos, usamos o Source Safe.

Usamos o Delphi 3 no início, mas logo saiu o Delphi 4 e passamos a usá-lo. Já existe a versão do Delphi 5, mas estamos esperando acabar com os projetos pendentes para fazer o upgrade.

O Formula One é uma ferramenta para planilhas eletrônicas e é compatível com o Microsoft Excel. Com ela, podemos jogar a saída numa planilha Formula One e, se o cliente preferir, salvá-la como uma planilha Excel.

O Tee Chart é uma ferramenta para visualização de gráficos com vários recursos. Muitas vezes o gráfico mostra de uma maneira melhor os pontos mais importantes de uma análise.

As bibliotecas Rx's são componentes visuais com as mesmas funcionalidades dos componentes do Delphi, mas eles são mais apresentáveis e os clientes gostam desses detalhes.

O SQL Server é um pouco lento na nossa rede de Windows 98, mas melhora bem o seu desempenho quando roda sobre o Windows NT.

Agora, o Interbase é um Banco de Dados gratuito. Para alguns clientes, o Interbase pode ser o Banco de Dados ideal.

O Source Safe é uma ferramenta para gerenciamento de códigos fontes. Como o nosso projeto usava muitos arquivos fontes, essa ferramenta foi essencial para sincronizar as versões mais atualizadas de cada produto. Ela tem um sistema de backup e salva todas as versões de cada arquivo em disco. Também tem um sistema de compartilhamento de arquivos, que permitiu que vários projetos utilizassem de um mesmo módulo.

9. Cursos

Eu tive algumas oportunidades de começar alguns cursos relacionados a computação, mas eu não realizei nenhum por falta de tempo.

Mas tive a oportunidade de assistir algumas apresentações sobre a área de mercado financeiro

10. O que eu mais gostei do estágio

A empresa tem um ambiente de trabalho muito agradável, o que nos permitia falar de qualquer assunto e a qualquer hora.

Aprendi a mexer na prática com Banco de Dados Interbase e SQL Server. Tá certo que tivemos um certo problema para acertar o SQL Server. Jamais alguém havia configurado o SQL Server e perdemos alguns preciosos dias tentando acertá-lo.

Aprendi linguagens de programação visuais, como Delphi e Visual C. Antes de conhecer estas ferramentas, eu achava muito complexo construir uma simples interface gráfica. Agora vejo que é bem simples.

A área de mercado financeiro também é uma das áreas de meu interesse profissional e gostei muito de estar trabalhando com pessoas altamente qualificadas sobre o assunto.

Ganhar algum dinheiro extra não faz mal a ninguém.

11. O que eu menos gostei do estágio

Eu deixava de render nos meus serviços quando eu precisava implementar novamente alguns pontos do projeto por erros de especificação. Isto é muito chato.

Fazer a documentação de todos os produtos realizados. Isto desanima qualquer um. Acho que o ideal é alguém fazer a documentação enquanto outra, paralelamente, fazer a implementação.

No estágio, eu senti a falta de uma pessoa da área de computação com bastante experiência para que ele pudesse dar dicas de programação, dicas de projeto entre outras coisas. Se eu tivesse feito um curso na área financeira, a PR&A seria um lugar ideal de se trabalhar.

Ter que trabalhar nas férias

12. Em que o IME ajudou

Foram quatro anos de muito suor na graduação do IME. Pode ser que eu esteja exagerando um pouco. Como no meu segundo ano eu peguei algumas DP's, eu precisei fazer mais matérias nos últimos dois anos. E fora isso, eu comecei a fazer estágio no terceiro ano. Mas acho que valeu a pena o esforço.

Nos dois primeiros anos, parecia que faltava tempo para conciliar a faculdade com outras atividades. Mas a verdade é que eu perdia muito tempo sem fazer nada. Quando comecei o estágio, percebi o valor do tempo tinha e assim eu me esforcei ao máximo para conciliar os estudos com o estágio e as outras atividades. Sempre faltou um pouquinho de tempo, mas no final tudo deu certo e consegui recuperar o tempo perdido do segundo ano.

Algumas matérias foram essenciais para o meu conhecimento lógico e computacional. As matérias de MAC-110 e MAC-122 ajudaram para o meu conhecimento, pois eu nunca havia tido contado com uma linguagem de programação antes de ingressar no IME. Mas foi na Recuperação de MAC-122 que eu aprendi muito sobre programação.

Outras matérias que eu achei de extrema importância, foram Estrutura de Dados, Análise de Algoritmos, Banco de Dados, Grafos, Engenharia de Software e Álgebra Booleana.

Os exercícios-programas em grupo também são muito importantes para aprender a trabalhar com outras pessoas. Assim, eu não tive muitos problemas para trabalhar com os outros funcionários.

13. Considerações Finais

Estou muito satisfeito de ter cursado o Bacharelado em Ciências da Computação e espero aprender mais no mestrado do IME que pretendo iniciar já no próximo ano.

É preciso aprender a levar o IME, pois é um curso bem puxado que na minha opinião poderia ser extendido para cinco anos de curso. Assim os alunos teriam mais tempo de se dedicar ao curso. Espero que eu consiga fazer isto no curso do mestrado.

O estágio foi uma experiência muito positiva para a minha carreira profissional. Espero me formar para que no próximo ano eu possa vir a contribuir para o crescimento da empresa.

 


Última Atualização: Sexta, 22 de Dezembro de 2000 20:55:54h