Estágio e o BCC

Os estágios exigiram muito o uso da criatividade na resolução de diversos problemas que surgiram o tempo todo. Existiam problemas de concorrência, limitações que as ferramentas utilizadas ofereciam, dificuldade em entender problemas dos usuários, entre outros.

Felizmente, o BCC forma alunos que sabem lidar com problemas, uma vez que somos estimulados, durante todo o curso, a resolvê-los, pensando e usando a criatividade. Acredito que o curso esteja preparando bem seus alunos para atuarem com sucesso na área de computação, uma vez que é bem teórico, os alunos acabam saindo com uma base sólida nos fundamentos da computação o que lhes permite absorver, com grande habilidade e velocidade, as novidades da área.

Durante todo o meu período de estágio, pude perceber o quanto o BCC me ajudou a tratar dos problemas: buscando por soluções, raciocinando de uma maneira bem organizada, entre outras coisas essenciais no exercício de funções nesta área.

Algo digno de nota, que ocorreu comigo em ambos os estágios, esteve relacionado com a dificuldade em entender os clientes e travar um diálogo no mesmo jargão deles. Percebi que, para que os requerimentos fossem corretamente coletados, era preciso que o analista entendesse, muito bem, o negócio da empresa. Isto inclui também o palavreado comum aos negócios da mesma. Além disso, é interessante notar que, muitas vezes os clientes não sabem o que realmente querem e, que o analista também deve propor requerimentos, ficando quase que na posição de cliente. O analista deve, a meu ver, orientar o cliente na escolha dos seus requerimentos e, não apenas realizr um papel passivo de coletá-los. Assim, a construção de um sistema passa a ser vista como uma cooperação entre ambas as partes envolvidas.

No estágio na CECAE, foi gratificante ter proposto um modelo que, supria a maior parte das necessidades dos usuários de diversas áreas diferentes pois, no início eles achavam que cada setor deveria ter um sistema diferente.

No estágio no NAEG, fiquei muito satisfeito em ver que tinha construído um sistema, que realmente estava trazendo benefícios ao Núcleo, facilitando o trabalho do pessoal e propiciando ao coordenador, manter um controle sobre as atividades lá realizadas.

As seguintes matérias podem ser consideradas as mais importantes durante os estágios:

Engenharia de software
A disciplina tratou de ensinar diversas técnicas de desenvolvimento de sistemas, guiando-me na escolha de uma metodologia para o desenvolvimento do SGT e do MetaNaeg. Além disso, aprendemos como coletar requerimentos dos usuários, testar sistemas, entre outros.
Estruturas de Dados
É essencial por fornecer uma base sobre como problemas podem ser resolvidos mais fácil e eficazmente com o uso de estruturas de dados específicas.
Ensinou que a maneira de estruturar os dados é parte integrante da resolução de muitos problemas. Durante o estágio, recordo-me de ter utilizado as seguinte estruturas de dados: Grafos e Tabelas de Espalhamento.
Introdução a linguagens formais e autômatos
Nos dois sistemas construídos, forma utilizados autômatos a fim de controlar fluxos. Pensar em termos destes autômatos, facilitou muito o entendimento e a resolução dos problemas.
Programação Concorrente
Os problemas de concorrência encontrados durante o desenvolvimento dos sistemas foram resolvidos utilizando-se stored procedures com locks nas tabelas e, utilizando transações.

A maior contribuição desta matéria foi nos colocar a par de uma questão que agora esta permeando a maioria dos sistemas computacionais: a concorrência, além de nos mostrar diversas maneiras de atacar o problema.

Sistemas de Banco de Dados
Para construir o MetaNaeg foi necessário ter um bom conhecimento sobre o funcionamento, operação e manipulação de estruturas presentes em bancos de dados: tabelas, views, triggers, etc. Esta matéria nos deu uma boa noção sobre tudo isto.
Além desta visão pragmática, nos pudemos aprender como funcionam índices, cluster, como os dados são armazenados, além de entender, um pouco, sobre as estruturas com as quais o BD trabalha: b-arvores, páginas, etc.
Todo este conhecimento foi de grande valia no momento de escolher as colunas que deveriam receber índices, entre outras questões de eficiência.
Sistemas de Objetos Distribuídos
Nesta matéria aprendemos quais são os elementos que fazem parte de um arquitetura de objetos distribuídos. Isto foi extremamente importante para entender e trabalhar com a arquitetura J2EE, a qual foi usada no desenvolvimento do SGT.
Programação Orientada a Objetos:
Nesta disciplina aprendemos como raciocinar e bolar soluções utilizando o modelo de programação de orientação a objetos.
Além disso, aprendemos também sobre padrões e UML.
Durante o estágio, utilizei diversos padrões e, pude verificar na prática, suas utilidades e benefícios.

Fiz uso também de diagramas UML e, com isso, foi possível ter uma idéia bem melhor do funcionamento do sistema. Pude notar o quão rico ele é na passagem de informações de um modo extremamente resumido.

Tópicos Avançados de Programação Orientada a Objetos
Aqui, foi prossível aprofundar o conhecimento deste paradigma. Os pontos principais abordados, a meu ver, foram: reflexão e aspectos. A idéia de aspectos ajudou a entender como os servidores de aplicações lidavam com questões ortogonais à aplicação.
Laboratório de Programação II
Nesta disciplina aprendemos, dentre outras coisas, a linguegem Java.
Isto foi relevante para o estágio na CECAE já que o SGT está sendo escrito nesta linguagem. Além disso, demos os primeiros passos no aprendizado do modelo de programação orientado a objetos, nesta disciplina.

Muitos dizem que a sua experiência de trabalho é bem diferente das obtidas nos trabalhos propostos pela faculdade. Uma grande diferença que eu vejo se refere à quantidade de trabalho: nos EPs35 exigisse mais raciocínio e criatividade, enquanto que nos trabalhos realizados em empresas exige-se mais trabalho e menos criatividade. É claro que não possível generalizar esta idéia mas, na maioria das vezes é o que ocorre: o programador aprende uma linguagem, a empresa já adotou uma série de padrões de codificação e desenvolvimento de sistemas que ele deve seguir. Comigo não ocorreu isso. No NAEG e na CECAE tive total liberdade para definir metodologias e padrões, o que em parte foi muito bom, pois pude usar bastante a criatividade aplicando metodologias e técnicas aprendidas no BCC mas, em parte perdi um pouco, uma vez que poderia ter aprendido utilizando padrões e metodologias novas.

Uma frustração que tive foi a de não ter desenvolvido o projeto em grupo. Perdi a oportunidade de ganhar experiência de trabalho em grupo. Com certeza isso enriqueceria muito a minha formação fornecendo-me uma boa idéia de como lidar com diferenças de pensamento, desenvolvendo uma grande habilidade de argumentação além, é claro, de promover uma troca de experiências.
No BCC, eu pude ter todas essas experiências, realizando os trabalhos em grupo mas, gostaria muito de ter levado isto para fora dos limites do BCC.
Algo que realmente senti falta, foi trabalhar com pessoas com formação acadêmica diferente da minha.



... EPs35
Exercício - Programa.
Fabio Pisaruk 2004-12-07