Trabalho de Formatura
(Monografia)


Aluno:  Henrico de Magalhães Scaranello

Supervisor:  José Coelho de Pina

Tipo de Trabalho:  Emprego na Universidade Anhembi-Morumbi

Período:  Novembro/2001 a Dezembro/2002




Objetivo:

O objetivo deste trabalho é descrever como tem sido a minha experiência de trabalho na Universidade Anhembi Morumbi, empresa onde sou funcionário desde novembro de 2001.

Pretendo expor minhas experiências tanto na parte técnica quanto na parte de relacionamento no ambiente de trabalho, tentando sempre que possível fazer uma relação entre o que aprendi na USP e o que encontrei verdadeiramente no trabalho.


A Empresa:

Em 1970 surgiram em São Paulo a Faculdade de Comunicação Social Anhembi e a Faculdade de Turismo do Morumbi. No início da década de 80 elas se uniram formando o Instituto Superior de Comunicação Publicitária e na segunda metade da década a Radio Brasil 2000 e o Colégio Anhembi Morumbi se integraram ao Instituto que em 1997 se credenciou como Universidade.

Atendendo atualmente a mais de 25 mil alunos, a Universidade Anhembi Morumbi (UAM) conta com 4 campi na cidade de São Paulo onde oferece cursos de Graduação, Seqüenciais, Superiores de Tecnologia, Extensão e Pós-Graduação (latu senso, MBA e stricto senso).

Na Universidade o setor responsável por todo o desenvolvimento de sistemas é o que faço parte: DTI (Departamento de Tecnologia da Informação). Ele conta com uma equipe de aproximadamente 15 desenvolvedores, sendo quase metade ex-alunos de computação da USP.

Devido ao crescimento acentuado da UAM nos últimos anos, praticamente todos os setores estão passando por uma grande reestruturação e isso implica uma demanda muito grande de novos sistemas de informação ou manutenção dos que já existiam e faz com que o DTI seja um dos setores mais importantes para o funcionamento da Universidade atualmente.


Projetos:

Nesta parte irei descrever mais detalhadamente a minha experiência em alguns dos diversos projetos que participei durante este ano na UAM.

Manutenção e suporte de sistemas web:

Quando entrei na UAM, na metade de novembro de 2001, fui designado a trabalhar na equipe responsável pelo desenvolvimento e manutenção de sistemas de Internet, uma vez que nos outros dois empregos anteriores já vinha trabalhando com Internet.

Inicialmente exerci uma atividade mais de suporte enquanto aprendia sobre o que a equipe desenvolvia. Fiquei aproximadamente um mês conhecendo alguns dos diversos sistemas e auxiliando em pequenas manutenções. Basicamente fazia alterações de scripts de formulários, manutenção de algumas bases de dados MySQL que estavam com problemas e cuidava para que certas aplicações estivessem sempre disponíveis.

Novo sistema financeiro da Universidade:

Na virada do ano fui realocado para a equipe de desenvolvimento do sistema financeiro que não conseguiria cumprir o prazo de entrega de um novo sistema que estava sendo desenvolvido e precisava de mais gente.

Este novo sistema é feito com Oracle Forms e Reports, ferramentas que eram desconhecidas a princípio por mim. A base de dados é bem grande e complexa, estando totalmente integrada a base do sistema acadêmico, a maior base da Universidade. Toda a programação é feita em PL/SQL e muito de administração de banco de dados Oracle é utilizado por quem desenvolve.

Mesmo sendo um funcionário recente no DTI fui escolhido para ajudar esta equipe devido a minha formação de aluno da USP. O conhecimento mais teórico e menos voltado para as ferramentas em si foi fundamental para uma rápida adaptação às diversas novidades que encontrei. Tive que aprender tudo "fazendo" mas nem por isso tive receio de não dar conta do recado.

Este semestre foi certamente o que mais aprendi e trabalhei. A carga de horário de trabalho foi puxada e a pressão que todos da equipe tiveram que enfrentar foi grande. Mas certamente o desafio de cumprir o que deveria ser feito foi muito maior e a satisfação de entregar cada parte do sistema valeu o sacrifício.

Assim que estava mais familiarizado com o sistema e já tinha desenvolvido algumas das partes mais atrasadas fiquei responsável pelo atendimento mais direto dos problemas da implantação do sistema. Participei de treinamentos, reuniões e colhia diretamente com os usuários as requisições de novas funcionalidades. Foi muito bom poder exercitar a parte mais "humana" do conhecimento de informática. Percebi que não consigo ficar sempre trabalhando em um ambiente isolado de desenvolvimento e pude perceber também a importância na prática de uma boa interface com o usuário, que no caso deste sistema que era todo novo tinha que aprender tudo do zero.

No final do semestre o sistema atingiu uma estabilidade que possibilitou a minha volta à equipe de desenvolvimento web. Esta experiência no sistema financeiro possibilitou que eu conhecesse em detalhes o funcionamento da universidade, tanto na área financeira, acadêmica e na estrutura dos setores.

Boletos e Notas On-Line:

De volta a equipe de Internet inicialmente fiquei responsável de desenvolver sistemas onde o conhecimento das bases financeira e acadêmica era fundamental.

Desenvolvi a princípio a estrutura de um sistema de emissão de segunda via de boletos pela Internet utilizando basicamente PHP e algumas procedures de banco que já conhecia do sistema financeiro. Também entrei em contato com ferramentas de geração de código de barras que achei bastante simples e interessante.

Este sistema era só uma base que seria utilizada depois em vários outros sistemas que foram acabados por outros membros da equipe que não tinham mais que se preocupar com detalhes do banco de dados financeiro.

Em seguida comecei a trabalhar com uma nova versão da página de consulta de notas na Internet uma vez que a antiga não exibia corretamente os resultados em certas ocasiões (situações novas) e enfrentava problemas sérios de performance.

Por ser a base mais antiga e não estar muito bem modelada a consulta de notas é um processo que demanda uma série de cuidados para ser feita de maneira eficiente, sem sobrecarga da base. Baseado na última versão em VB da consulta de notas da secretaria pude refazer a consulta on-line visando sempre que possível melhorar a performance. Realizei muitos testes e a versão final tem uma performance satisfatória, além de exibir tudo corretamente agora.

Além disso, com os testes foi possível identificar alguns problemas da configuração do nosso servidor que acabou ajudando em todas as outras aplicações que também usavam PHP com Oracle. Isso foi possível pela forma de como os testes foram realizados, mostrando mais uma vez a importância da metodologia de testes que tinha aprendido na faculdade.

Realocação das bases MySQL:

Com os problemas de performance encontrados uma atenção maior foi dada para este assunto e foi decidido separar as bases MySQL do servidor de páginas web. Esse era mais um reflexo do crescimento rápido da Universidade que em alguns aspectos ainda contava com uma estrutura insuficiente.

Por ser uma tarefa delicada que envolveria diversos sistemas menores de uma só vez e tinha que ser de uma maneira que não deixasse os serviços indisponíveis muito tempo fui designado a planejar junto com meu chefe de equipe uma estratégia para a ação.

Nesta atividade pude utilizar e aprimorar os meus conhecimentos de administração de sistemas Linux e também exercitar o trabalho em equipe onde a sincronização das atividades era fundamental.

Também foi necessário adaptar vários scripts mais antigos em Perl que precisavam ser parametrizados quanto a origem da base de dados e tive que mais uma vez aprender cada pequeno sistema enquanto mexia. Entender o código de outras pessoas acabou sendo a parte mais demorada do processo.

Depois de planejada uma estratégia de ação a mudança foi feita sem grandes transtornos e o tempo que cada sistema ficou indisponível foi muito pequeno.

Processo Seletivo de Bolsas de Estudo On-line:

Um dos sistemas que tive a oportunidade de desenvolver desde o início e basicamente consistia de duas partes: inscrição on-line e realização do processo seletivo pelo próprio banco de dados.

Depois de modelar a base de dados do sistema a parte da inscrição foi relativamente simples. Bastava autenticar os usuários para o sistema e colher as informações de um questionário que eles deveriam preencher para ilustrar a situação financeira do candidato e fornecer outros dados relevantes. Como as informações seriam utilizadas para de certa forma classificar os candidatos a validação das informações teve que ser muito rigorosa para tentar bloquear possíveis informações enganosas ou mal intencionadas. Utilizei bastante javascript além da tradicional conferência feita no próprio código PHP.

Uma vez encerrada a inscrição deveria ser rodado o processo seletivo dos candidatos a bolsa. Como seriam usadas varias informações acadêmicas e financeiras dos candidatos no processo foi decidido que a própria base Oracle faria o processo de seleção através de um grupo de procedures, armazenando por fim a classificação nos dados dos candidatos.

Com isso tive a oportunidade de novamente programar em PL/SQL, atividade que não realizava desde o tempo que estava no sistema financeiro. Apesar de já ter trabalhado com triggers e procedures antes, neste sistema pude desenvolvê-las desde o início e certamente o meu aprendizado com isso foi muito bom.

Sistemas para Eventos:

Constantemente a UAM promove eventos diversos e alguns deles precisam de pequenos sistemas para facilitar a organização. Desde que entrei na Universidade tive que desenvolver alguns destes sistemas. Basicamente eles se caracterizam pela interface que deve ser muito bem trabalhada, simplicidade de uso, e um cuidado extra para a estabilidade. Todos foram desenvolvidos em VB para rodar em pequenas estações preparadas para funcionar como terminais.

Primeiramente desenvolvi um sistema para a Festa de Confraternização dos Funcionários do ISCP. Este sistema cuidava do controle de entrada da festa que era restrita a funcionários. Ele foi desenvolvido para ser simples de operar por pessoas que até mesmo não estão acostumadas ao uso de computadores, no caso as modelos contratadas para a recepção da festa. Outra característica era que o programa deveria ser rápido no processo de busca e confirmação do convidado para não causar filas na entrada. Assim que possível o sistema imprime cupons com os nomes dos convidados que entraram e estes posteriormente são utilizados em um sorteio de brindes durante a festa. Pude utilizar bastante o conhecimento de programação concorrente neste sistema o que acabou tornando o desenvolvimento bastante interessante.

Também tive que desenvolver um sistema semelhante para um Seminário de Turismo organizado pela Universidade. O foco principal também foi o controle de presença. Antes do evento os alunos podiam confirmar a presença no Seminário por uma página na Internet. Isso ajudou a organização nas preparações. Durante o evento novamente os terminais fizeram o controle de presença dos alunos e depois os dados colhidos foram utilizados para gerar relatórios para todos os professores que precisavam dar presença aos alunos que foram ao Seminário.

Alem disso desenvolvi uma nova versão do programa que roda nos terminais de consulta de notas que ficam espalhados pelas unidades da Universidade. Neles os próprios alunos operam os terminais e consultam as notas de uma maneira similar a caixas eletrônicos de bancos. O desafio deste sistema era fazê-lo de uma maneira que ele fosse a prova de ataques ou má utilização. Ele deve sempre que possível estar disponível "por conta própria", ou seja, ele precisa de alguma forma se automonitorar para garantir que está funcionando corretamente.

Outros sistemas:

Como já disse o DTI é um departamento constantemente solicitado por todos os outros setores da Universidade e sempre diversos projetos estão em andamento simultaneamente. Durante todo o tempo que participei dos projetos citados muitos outros projetos foram desenvolvidos onde tive participação direta ou indiretamente.

Entre alguns dos outros projetos que também participei estão o Sistema para Ex-Alunos, Cadastro de Planos de Ensino On-line, Sistema de Planejamento On-line.

Desde a minha entrada na equipe web prestei Suporte para Inscrição On-Line do Vestibular, suporte ao Sistema de Prova Eletrônica, além de sempre participar no vestibular tradicional da Universidade, onde o DTI é responsável por toda a parte técnica do processo.


Ferramentas:

Sendo o desenvolvimento feito na UAM muito diversificado, diversas ferramentas são utilizadas no dia a dia de quem trabalha no DTI. Entre todas elas as que eu mais tive contato foram:

Administração de Sistemas:

- Conhecimentos de Linux

Linguagens:

- PHP
- Perl
- JavaScript
- Java
- PL/SQL
- C (muito pouco)
- Basic (do VB e ASP)

Banco de Dados:

- Oracle
- MySQL

Ferramentas:

- Oracle Forms
- Oracle Reports
- Oracle DBA Studio
- VB

CVS:

- Microsoft Source Safe


Relação Teoria/Prática:

Muito da teoria que aprendi na USP foi importante para o meu trabalho, apesar de não muito diretamente.

No geral a lógica de programação que aprendi no decorrer de várias disciplinas foi o que mais ajudou no meu dia a dia de trabalho.

Algumas disciplinas mais básicas, como Princípios de Desenvolvimento de Algoritmos e Estruturas de Dados, acabaram tendo mais importância talvez pelo aspecto mais genérico das mesmas.

Disciplinas como Banco de Dados, Redes e Programação Concorrente também foram fundamentais. Principalmente pela natureza dos sistemas que desenvolvi: sistemas de informação para Internet. Percebi também na prática a importância das disciplinas que estudam metodologias de desenvolvimento. Por exemplo: Engenharia de Software e XP.

Por fim devo citar que foi muito útil todo o conhecimento de Linux que adquiri durante o curso. Acredito que a disciplina Administração de Sistemas Unix poderia ter me ajudado ainda mais com problemas que encontrei.


Conclusão / Comentários:

Durante o tempo que trabalhei na Universidade Anhembi Morumbi pude trabalhar em um ambiente agradável e principalmente pude ter contato com uma grande variedade de temas e sistemas. Isso possibilitou aplicar os conhecimentos em diferentes áreas da computação. Pude estar em contato com pessoas com diferentes níveis de conhecimento técnico e não restringi a minha participação nem ao desenvolvimento nem ao atendimento exclusivo. Equilibrio este que considero fundamental.

Participei no desenvolvimento de sistemas importantes e que demandavam grande responsabilidade, fato que acredito que demonstra a confiança que a UAM tem no meus conhecimentos.

Além disso, trabalhar com uma equipe relativamente pequena e que é sempre muito solicitada serviu para ressaltar as vantagens de um aluno da USP em relação a outros. A necessidade de rápida adaptação acaba destacando o quanto o curso prepara melhor os alunos para qualquer situação.

Infelizmente nem tudo que constatei foi positivo. De uma certa forma, foi um tanto frustrante perceber que muito raramente os ideais teóricos são atingidos. Tanto na organização do desenvolvimento quanto ao que diz respeito aos prazos. A impressão que fica é que nunca um prazo suficiente será dado para se desenvolver algo melhor e dessa maneira tudo vai sendo sempre empurrado para frente.

Outra fato negativo que preciso citar é o horário de trabalho puxado. Trabalhar 30 horas semanais (isso quando não faço hora extra) para quem cursa BCC no IME acaba atrapalhando de alguma forma e no meu caso influi ainda mais no atraso na conclusão do curso. É preciso levar sempre em conta até que ponto a recompensa financeira justifica este atraso.