Meu trabalho de formatura é baseado no estágio
que realizei na empresa PCA Engenharia de Software, no período de
Maio a Novembro de 2000. Com carga horária semanal de 20 horas em
período letivo e 40h em período de férias.
Durante o estágio participei da área
de desenvolvimento da empresa.
Nesse período participei de um único
projeto: um sistema de gerenciamento de custos de recursos humanos, desenvolvido
para o Grupo Abril.
2.1 - Introdução
A
PCA Engenharia
de Software é uma empresa de pequeno porte que tem como principal
área de atuação o desenvolvimento de sistemas de informação
para corporações e grandes empresas de diversos ramos de
atividade.
A PCA foi fundada em 1992, originalmente como uma
consultoria em sistemas de informação. Mas rapidamente ampliou
seu leque de serviços, passando a desenvolver soluções
completas para os clientes desde a fase de análise e planejamento
até a implementação da solução e treinamento
dos usuários, passando pela escolha de hardware e software mais
adequados às necessidades do cliente. Completando o ciclo de desenvolvimento
de soluções, foi implantado um provedor de aplicações
de Internet, que é utilizado para hospedar as aplicações
desenvolvidas para os clientes.
Além disso, a PCA desenvolveu sistemas nas
mais variadas plataformas como, por exemplo, UNIX, Windows e MVS e também
em diversos modelos como cliente/servidor (duas e três camadas),
intranet, Internet e aplicações standalone. Sendo que a área
de intra/Internet se tornou umas das áreas de excelência da
PCA, devido a sua importância vital nos atuais sistemas de informação.
Com isso a PCA adquiriu uma grande experiência em várias áreas
de tecnologia, especialmente em redes, servidores de banco de dados, sistemas
operacionais, Internet e no desenvolvimento de ferramentas e aplicações.
2.2 - Estrutura Interna
Com relação à estrutura interna,
por ser uma empresa de pequeno porte (por volta de 30 colaboradores) a
PCA é bastante dinâmica. Entre seus colaboradores estão
estagiários, funcionários e sócios distribuídos
entre os setores administrativo, comercial e, principalmente, de consultoria/desenvolvimento.
Uma característica da PCA é sua forma
de organização horizontal, isto é, apesar de obviamente
existir uma hierarquia de cargos, todos são tratados de forma
similar, isso pode ser notado já no ambiente de trabalho, onde todos
os desenvolvedores e consultores (indenpendentemente de sua posição
hierárquica) ficam num mesmo espaço com equipamentos similares.
Além disso, todos tem o direito (e de certo modo o dever) de expressar
sua opinião sobre qualquer assunto referente a empresa.
A PCA tem como filosofia valorizar o profissional interno.
Isso pode ser notado através de sua política de contratação,
a não ser em condições especiais, tende sempre a contratar
estagiários, que serão treinados e avaliados, para possivelmente
serem efetivados, e dependendo de seu desempenho podem, posteriormente,
serem convidados a sócios da empresa.
A impressão passada através do texto
de que a PCA tem uma alta taxa de efetivação é correta,
mas o principal motivo para isso é a grande capacitação
dos estagiários contratados, que são principalmente da Unicamp,
da USP e da PUC. Um aspecto interessante é que praticamente todos
os funcionários e sócios da PCA também se formaram
nessas universidades.
2.3 - Organização no Desenvolvimento
Para o desenvolvimento, em geral é formado um grupo que será responsável por todas as etapas do desenvolvimento da solução. Esse grupo é normalmente formado por 3 a 5 pessoas, sendo uma a responsável pelo projeto (em geral um sócio) e os outros participantes são escolhidos por suas especialidades e experiência profissional(tanto conhecimentos técnicos quanto capacidade de relacionamento inter-pessoal), exceto por estagiários (pois estes, normalmente, não possuem conhecimentos específicos) que são alocados para aprendizado e análise de potencial. Os membros do grupo podem, obviamente, serem realocados para outros projetos temporariamente ou permanentemente de acordo com as necessidades da empresa.
2.4 - Clientes
Para ser ter uma idéia melhor sobre a área
de atuação da PCA, veja seu portfólio de clientes
aqui.
3 - O projeto
3.1 - Introdução
O departamento de recursos humanos (RH) do grupo
Abril sentia a necessidade de um sistema que permitisse uma melhor análise
dos custos relacionados ao setor de recursos humanos (ex: contratações,
demissões, aumentos individuais e coletivos, treinamento, benefícios,
etc.).
A Abril possuía na época um sistema
integrado de controle de RH e pagamento da folha salarial (e benefícios),
mas esse sistema era muito pobre em suas ferramentas de área de
análise de custos, e por ser um pacote comercial, era necessária
muita customização.
A solução encontrada foi manter o
sistema de RH que já estava sendo utilizado (apesar de suas deficiências)
- que continuaria responsável pelas efetivações da
folha de pagamento, das contratações, das demissões,
etc - e desenvolver um novo sistema que seria responsável em prover
o setor de RH do cliente com um extenso leque de informações,
tais como:
9 Mil Funcionários
R$ 1,488 Bilhão de Receita Líquida em 1999 R$ 924 Milhões em Investimentos nos Últimos Seis Anos Mais de R$ 200 Milhões em Tributos e Contribuições Pagos a Cada Ano R$ 46 Milhões Investidos em Benefícios e Treinamento Para os Funcionários em 1999 |
O projeto do qual participei consistia parcialmente
no desenvolvimento de um sistema de planejamento e controle orçamentário
de recursos humanos (conhecido por PCRH) que suprisse as necessidades do
departamento de RH do grupo Abril.
Digo parcialmente, pois, o sistema foi definido
para ser implementado no ambiente de intranet da Abril. Com isso foi decidido
que o PCRH seria integrado a um sistema on-line que já existia na
intranet da Abril: o GTA (Gestão de Talentos Abril), que também
foi desenvolvido pela PCA. Em linhas gerais o GTA é um sistema de
acompanhamento profissional de todos os funcionários do grupo
Abril.
O projeto como um todo foi chamado de ISRH (Integração
de Sistemas de Recursos Humanos) que consistia de duas fases distintas:
1. Migração do sistema GTA implementado em PL/SQL para ASP
2. Desenvolvimento do PCRH, também utilizando a tecnologia ASP
3.2 - GTA e sua migração
O GTA(Gestão de Talentos Abril) foi um sistema
desenvolvido pela PCA para fornecer para o RH do Grupo Abril um mecanismo
eficiente para acompanhar e gerenciar as habilidades e potencial de cada
um dos funcionários do grupo, mas é especialmente utilizado
para gerencialmente de executivos.
O sistema permite que qualquer funcionário
da Abril que possua uma conta na intranet da mesma (abrangendo quase a
totalidade dos funcionários do grupo) possa editar uma série
de dados profissionais como: histórico profissional na Abril e anterior
ao mesmo, formação acadêmica, cursos realizados, vivência
internacional, idiomas conhecidos e sua fluência em leitura/escrita/conversação,
etc; e outros dados que o funcionário queria compatilhar como
hobbies (mergulho, pintura, etc). Além disso o funcionário
pode responder aos anúncios on-line de vagas em aberto no grupo
Abril. Outro aspecto interessante é que o sistema monta automaticamente
um currículum on-line da pessoa que poderá ser visualizado
pelo pessoal de RH que fará o recrutamento para novas vagas.
Outro uso do sistema é feito pelo pessoal
do RH que pode cadastrar vagas no sistema para que os funcionários
em geral possam analisa-las e responde-las se for o caso. O RH pode ainda
fazer a seleção das pessoas que possuem o perfil mais adequado
para as vagas em aberto, isso é feito através de uma consulta
a base de dados do pessoal da Abril e utilizando critérios de busca
extremamente flexíveis.
O GTA é utilizado por diversos perfis de
usuários (inclusive o de administrador do sistema), para isso ser
possível o mesmo possue uma interface única para cada pessoa,
pois as permissões são definidas de acordo com o perfil do
usuário e também pode ser customizado de acordo com o usuário,
no caso de ele ser uma exceção ao seu perfil. É importante
salientar que toda essa customização é transparente
ao usuário final, ou seja, basta o usuário logar-se ao sistema
para acessar seu menu personalizado.
O GTA foi desenvolvido originalmente usando PL/SQL
e depois foi migrado para a tecnologia ASP (Active Sever Pages) da Microsoft,
como o sistema já estava funcionando não era necessária
muita documentação pois o sistema já estava especificado,
inclusive sua interface que deveria permanecer a mesma. Esta migração
inicial facilitou o aprendizado do ASP pela do projeto pois o sistema já
era conhecido.
A migração iniciou-se em Fevereiro/2000
e foi até o final de Maio/2000 isso sem levar em consideração
posteriores correções de bugs e alterações
pedidas pelo cliente, como um subsistema que indicasse, automaticamente,
pessoas que tivessem um perfil adequado quando uma vaga fosse aberta. Minha
participação nessa parte do projeto, lembrando que fui contratado
em Maio/2000, foi basicamente de correções de bugs
e manutenção do código de outros programadores (quatro
programadores para ser mais específico, e, aliás,
devo ter pago boa parte de meus pecados nessa época, devido a falta
de documentação do sistema e de uma estrutura de comentários
no código do sistema), além de implementar algumas novas
funcionalidades.
O GTA foi migrado para o ASP para sua posterior
integração com o PCRH (que será descrito a seguir),
agora os motivos para adoção dessa tecnologia não
são de meu conhecimento.
3.3 - O PCRH e seu desenvolvimento
O PCRH (Planejamento e Controle orçamentário
de Recursos Humanos) foi desenvolvido para suprir uma necessidade gerencial
do RH do Grupo Abril (para maiores detalhes veja seção 3.1).
O PCRH apesar de possuir um número de usuários
potenciais muito menor, possuia um número muito maior de perfis,
além uma personalização individual maior e ainda uma
grande necessidade de segurança, isso agregou muita
complexidade ao sistema de permissões de acesso as transações.
Outro fator de complexidade foi a integração
dos dados do PCRH com o sistema de gerenciamento finaceiro de RH do Grupo
Abril. Como havia dados comuns aos dois sistemas e além disso o
PCRH necessitava de vários dados desse outro sistema, foi decido
utilizar uma base de conversação que faria a ponte entre
os dois bancos de dados e seria atualizado uma vez por dia.
O desenvolvimento do PCRH iniciou-se em Maio/2000
e foi nessa parte do projeto que tive maior participação.
Houve diversos atrasos com a entrega do PCRH devido
a diversos problemas que são abordados a seguir.
Devido aos problemas o PCRH passou a ser desenvolvido
no cliente pois era necessário ter acesso a base de dados para os
testes além de ter de se fazer o trabalho de conversão dos
dados da base de conversão do projeto para a base do PCRH.
Minha saída da PCA ocorreu no final de Novembro/2000,
ainda haviam probremas mas parecia que o projeto rapidamente estava caminhando
para sua conclusão.
3.4 - Problemas
Vários foram os problemas enfrentados durante
o desenvolvimento do ISRH.
Um dos mais sérios, senão o principal,
foi uma especificação inicial negligente em vários
aspectos, em especial na documentação. O problema da documentação
foi sentido em toda sua extensão quando o coordenador inicial do
projeto retirou-se da empresa, e junto com ele, grande parte da especificação
"informal" do PCRH.
Isso serve para ilustrar outro problema sério
ocorrido durante o projeto, a alta rotatividade dos membros da equipe,
apesar de ser um projeto longo, creio que houve uma troca excessiva dos
membros da equipe (em sua grande maioria por fatores que a PCA não
tinha controle), sejam por que profissionais se retiraram da empresa ou
foram remanejados para outros projetos. Aliando-se esse problema com uma
documentação pobre durante o desenvolvimento, tem-se, sendo
extremamente otimista, um grave problema.
Outro fator que comprometeu os prazos do projeto
foram problemas relacionados à interação com a empresa
responsável pelo sistema comercial de RH do cliente. Aqui os principais
problemas eram devidos a atrasos e a diversos erros nas bases de dados
(na original e na de conversão).
Como desgraça pouca é bobagem... devido
aos problemas enfrentados e ao conseqüente atraso, os usuários
começam a alterar o que já havia sido especificado para que
o sistema se adeque melhor as suas necessidades, o problema é que
não é possível ficar alterando o sistema de acordo
com a vontade dos usuários, mas ficar sem alterar gera um certo
descontentamento e aumenta o risco do sistema não ser bem aceito
e lembre-se não havia uma especificação documentada,
logo era necessário novos acordos toda semana.
3.5 - Formas de acompanhamento do projeto pelo coordenador do mesmo
O acompanhamento do desenvolvimento projeto era baseado
diretamente nas tarefas entregues pelos desenvolvedores. Uma vez designada
a tarefa para um desenvolvedor este a executava completamente e depois
a repassava para o coordenador quando então era submetida a mais
testes. É claro que quando surgia alguma dúvida durante o
desenvolvimento de uma tarefa o coordenador estava sempre disposto a auxiliar.
Mas durante a execução do projeto
o coordenador já não tinha muito controle sobre o que estava
sendo produzido. Esse problema ocorreu devido à má especificação
inicial do projeto, o que acabou por utilizar muito tempo do coordenador
com reuniões com o cliente e refazer parcialmente o levantamento
de suas necessidades.
4 - Tecnologias e Ferramentas
As tecnologias com as quais tive contato foram:
Durante meu estágio na PCA, não participei
de nenhum curso. Pois como entrei no meio do projeto, todos os outros integrantes
já haviam recebido o treinamento necessário nas tecnologias
envolvidas. Por isso, meu aprendizado foi baseado basicamente em leitura
(livros, artigos e sites) e na prática.
Outros pontos importantes foram a ajuda e as dicas
(sem mencionar a paciência) fornecidas pelos companheiros da equipe
e da empresa de modo geral que sem dúvida foram muito importantes
para uma rápida absorção das tecnologias empregadas
e grande aumento de minha produtividade.
Além da falta de um treinamento inicial,
não tive tempo para estudar de maneira satisfatória (pelo
menos do meu ponto vista) as tecnologias envolvidas. Isso se deve aos prazos
do projeto e, principalmente, a minha falta de conhecimentos sobre as tecnologias
e ferramentas utilizadas (antes do estágio só conhecia um
pouco HTML e SQL).
Em minha primeira semana tive de aprender o Active
Server Pages, Oracle, JavaScript, HTML avançado e relembrar meus
conhecimentos de SQL obtidos no IME. Além de utilização
de ferramentas como o Interdev da Microsoft e ferramentas da Oracle.
Obviamente só consegui aprender o básico (o que era suficiente
para minhas atribuições iniciais), mas com o passar do tempo
meus conhecimentos foram se aprimorando.
Apesar de ser um pouco inconveniente no início,
essa falta de treinamento não acarretou maiores problemas para a
absorção do conhecimento necessário para o projeto.
Aliás, eu, como todos os alunos do IME,
já estou acostumado em aprender sozinho o que é necessário.
6 - Bibliografia
Alguns dos livros que utilizei durante o projeto:
7 - Desafios Encontrados
Trabalhar na PCA foi interessante, pois um pequeno
(ou nem tão pequeno) desafio era encontrado praticamente todos os
dias. Seja uma consulta SQL que a princípio parecia muito complexa,
aspectos administrativos do Oracle, ou descobrir alguns "truques" para
trabalhar com Active Server Pages ou ter de aprender a programar ActiveX
em VisualBasic em dois dias...
Outro desafio constante e nada trivial que encontrei
foi o desenvolvimento de interfaces de usuário eficiente utilizando
páginas Web. As limitações do HTML (mesmo utilizando
uma linguagem script) foram críticas em algumas interfaces do projeto,
tanto que a solução adotada em alguns pontos foi a utilização
de controles ActiveX, que permitiam uma interface muito melhor, sendo mais
poderosa e familiar ao usuário. Mas por outro lado, a utilização
de controles ActiveX exige muito mais processamento por parte do host cliente,
além de ser uma solução mais complexa e só
é utilizável em máquinas com browser da Microsoft.
Por esses motivos uma solução alternativa o HTML puro só
era utilizada quando estritamente necessária.
8 - Frustrações Encontradas
Um ponto que foi bastante frustrante foram os diversos
atrasos que o projeto enfrentou durante seu desenvolvimento. Isso acaba
ocasionando uma certa desmotivação com relação
ao mesmo, com o passar do tempo isso vai se tornado cada vez mais aparente
entre os membros da equipe. Na minha opinião a falta de motivação
acarreta uma perda na qualidade final do produto, pois nem sempre as soluções
mais adequadas são utilizadas.
Mas o que me deixou mais frustrado foi não
ter acompanhado um projeto desde seu início, pois eu acho bastante
interessante a parte de especificação do problema e modelagem
de sua solução.
9 - O estágio e o BCC
9.1 - Diferenças na cooperação entre colegas do BCC e equipe de trabalho
Em relação a ajuda mútua, meu
estágio foi bem parecido com os trabalhos realizados no BCC, pois
tanto no IME como na PCA todos colaboraram entre si para conseguir seus
objetivos, no caso da PCA produzir um software superior para o cliente
e no IME ser aprovado nas disciplinas.
Mas as semelhanças acabam por ai, pois os
objetivos a serem cumpridos são bastante distintos, bem como o tempo
de dedicação - na empresa vôce deve trabalhar em equipe
praticamente todo o tempo, já na faculdade o tempo é reduzido
devido as várias disciplinas.
Considero os projetos em grupo do BCC fundamentais
para preparar o aluno para o mercado de trabalho, pois neles pode-se sentir
na pele as dificuldades e também a necessidade de se trabalhar em
conjunto com pessoas que tem opiniões distintas para se desenvolver
trabalhos complexos. E além disso para aprender a ter um melhor
senso crítico, especialmente com relação a própria
opinião.
9.2 - Disciplinas diretamente aplicadas no estágio
Não estão citadas disciplinas que considero
fundamentais para um profissional da computação, tais como
MAC 122 - Princípio de Desenvolvimento de Algoritmos e MAC 323 -
Estrutura de Dados, pois nenhum desenvolvimento poderia ser realizado sem
os conceitos aprendidos através destas disciplinas.
As disciplinas tiveram seu conteúdo aproveitado
de forma mais direta no estágio foram:
MAC 332 - Engenharia de Software
Esta disciplina é fundamental para o processo
de planejamento e desenvolvimento de qualquer projeto de software. Todo
profissional da área de computação deveria conhecer
o básico sobre metodologias de desenvolvimento tanto quanto estrutura
de dados e algoritmos. No estágio da PCA, infelizmente não
tive participação nos estágios iniciais de desenvolvimento,
mas esta disciplina serviu para que eu pudesse fazer uma análise
própria dos fatores que prejudicaram o andamento do projeto, e,
portanto, aprender com as dificuldades encontradas e tentar evitá-las.
MAC 426 - Sistemas de Banco de Dados
A importância dessa disciplina foi óbvia
durante meu estágio, pois grande parte de meu trabalho era realizar
diversas consultas (e alterações) em SQL na base de dados.
Ter uma sólida base Álgebra Relacional facilitou muito meu
aprendizado de SQL. Além disso, ter um conceito de um sistema de
banco de dados facilitou o entendimento do banco Oracle e permitiu compreender
melhor como otimizar as buscas realizadas no mesmo.
MAC 446 - Princípios de Interação Homem Computador
Esta foi uma disciplina a qual pude facilmente avaliar
sua importância, pois desenvolvi algumas interface baseadas nos padrões
utilizados no projeto, sem pensar em todas as necessidades do usuário
final. Moral da história, tive de refazer uma parte significativa
destas interfaces. Mas o ponto importante é que quando precisei
redesenhá-las, eu já havia cursado mais da metade da disciplina
e sabia como avaliar melhor as necessidades do usuário e pude criar
interfaces que atendiam melhor as necessidades e expectativas dos usuário
final.
MAC 448 - Redes de Computadores
Esta é uma matéria de grande importância
atualmente. Pois os conceitos aprendidos são utilizados no dia-a-dia.
Saber o que é o protoloco TCP/IP e como funciona é essencial
para qualquer um que trabalhe num ambiente de rede.
10 - Aprimoramento dos conhecimentos e evolução na carreira
Como as tecnologias e ferramentas evoluem de uma
forma muito rápida, pretendo me manter informado do que ocorre de
novo no mercado através de revistas, sites, listas de discussão
e amigos da faculdade e dos colegas de serviço. Aliás farei
isso com prazer pois eu gosto de aprender novas tecnologias e metodologias.
Um diferencial de uma formação sólida
é que apesar de não parar de surgir novas tecnologias raramente
vê-se surgir um novo conceito. Seja um conceito de programação
concorrente, de banco de dados, de estrutura de dados. Por exemplo: a pouco
tempo comecei a ver XML (eXtensible Markup Language) e XSLT (eXtensible
Stylesheet Language Tranformations), o XSLT que basicamente transforma
um XML em qualquer outro formato estruturado, e a primeira vista
pode parece bastante complexo, mas basicamente é um tradutor de
grámaticas e para quem já teve Autômatos e Linguagens
Formais sua manipulação torna-se mais simples e natural.
Pretendo ainda fazer pós-graduação
mas ainda não sei em qual área, vou esperar mais um pouco
para ver como minha carreira vai evoluir. Me interesso pela área
de administeração, mas gosto de várias áreas
de computação, entre elas: modelagem (especialmente orientada
a objetos), engenharia de software, redes e banco de dados.
11 - Conclusão
Para mim o estágio (não só o
da PCA) teve uma enorme importância, pois, mais de uma
vez, já fiquei desanimado com o curso do BCC, não sabia se
era exatamente essa a carreira que gostaria de seguir, não sabia
qual a utilidade das disciplinas que estava estudando. Com o estágio
ganhei uma nova motivação (além da financeira...),
pude colocar em prática meus conhecimentos durante o curso e ver
que ainda há uma infinidade de áreas e assuntos a se estudar
em computação que são muito interessantes. Com o estágio,
meu interesse pelas disciplinas cresceu (mas não por todas...) e
meu interesse em realmente aprender (não só para ser aprovado)
a matéria exposta também.
Mas o estágio também traz seus problemas,
quem já fez 6 ou 7 disciplinas no IME e trabalhou paralelamente
sabe do que estou falando. É preciso saber separar seu tempo e definir
suas prioridades, eu aprendi da pior maneira basta olhar o primeiro semestre
de 2000, bem pelo menos no segundo fui aprovado em 7 disciplinas (sem contar
esta discilplina: MAC 499) mas isso só foi possível devido
as prioridades que estabeleci (no caso o curso) e a um estágio bastante
flexível. É claro que o aprendizado de cada disciplina pode
não ter sido o máximo, mas acho que absorvi conhecimento
suficiente das disciplinas que cursei.
Um ponto muito importante para uma carreira de sucesso
(ou pelo menos para o ínicio de uma) é uma boa formação
acadêmica e isso tenho certeza que o IME fornece. O IME propicia
uma sólida base conceitual sobre diversas áreas da computação
mas o mais importante é que ele nos prepara para sermos grandes...
alunos, sim, pois todos (ou pelo menos a grande maioria) saem daqui
aptos a aprender rapidamente e de forma consistente as mais diversas
diversas áreas e tecnologias da computação. E isso
é algo exremamente valorizado pelas empresas e não muito
fácil de se encontrar no mercado profissional.