Nesses cinco anos de bcc, procurei orientar minha formação seguindo meus interesses, mas sem deixar de experimentar coisas diferentes. Acabei optando por um caminho com três componentes principais. Primeiro, aprender a desenvolver aplicações "bonitas por dentro e por fora", ou seja, com uma interface com o usuário o mais adequada possível e com código fácil de ser compreendido, copiado, e reutilizado. Segundo, uma visão mais macroscópica do nosso meio computacional, menos ligada a algoritmos e código e mais voltada para abstrações. Terceiro, computação em rede, de modo geral, com muitas máquinas se comunicando.
SharedObjects, ou Shob, como é carinhosamente chamado, vem de encontro a essas vontades, interesses e objetivos. Nesse ano e meio de desenvolvimento, ele passou por uma mudança de foco, que não é muito fácil de fazer, e foi talvez um desafio maior do que bolar o projeto na cabeça. O primeiro projeto chamava-se SharedMemory, e não era muito mais do que um EP grande. Mas pudemos ver uma possibilidade real de fazer algo útil para a comunidade de software livre, portanto quisemos fazer a coisa bem direitinho. Foi muito desafiador, e recompensou o esforço, pq nunca mais tivemos que rever as partes que deram mais trabalho de todas, por exemplo o protocolo de comunicação.
Quando a coisa precisou crescer, precisamos estabelecer metas, formalizar algumas coisas, excluir algumas funcionalidades que queremos ainda ver implementadas para que o desenvolvimento ocupasse o tempo que tínhamos disponível. Mais uma vez, o que nos estimulava mais era o fato de estarmos fazendo algo difícil, e bem ou mal, sem precedentes (pelo menos nada que fosse fácil de encontrar).
A grande frustração que ficou para mim foi não conseguir fechar o desenvolvimento a tempo de fazer algumas análises em cima do Shob. Queríamos comparar a eficiência e o uso do Shob com RMI e CORBA, mas não sobrou tempo para tanto - comento isso daqui a pouco.
Quanto a disciplinas do BCC que foram fundamentais no projeto, posso destacar as seguintes, sem nenhuma ordem especial:
O professor Paulo Silva e Silva (http://www.ime.usp.br/~rsilva/) mostrou-se muito interessado em orientar nosso projeto, e desde o começo nos fez ver que nosso projeto era bem difícil de explicar. Ele era o único de nós três que tinha uma ótica acadêmica para o Shob, e fizemos um grande esforço para formalizar algumas coisas e tornar o projeto algo digno de um trabalho de formatura. Eu diria que o sucesso é parcial nesse sentido, pois conseguimos enxergar nossa verdadeira prioridade (a transparência), mas não pudemos fazer análises quantitativas sobre o produto.
Além disso, a necessidade de entender o projeto fez com que o Paulo fizesse muitas perguntas que estavam (ou pensávamos estar) respondidas no site. Logo vimos a necessidade de reformular todo o site, que agora está um pouco mais claro e tem as informações gerais separadas das específicas.
A maioria dos exercícios-programa feitos ao longo da graduação são em dupla. Nosso projeto foi desenvolvido também em dupla, com muita programação pareada, e isso facilitou. Mas não faltou profissionalismo na condução do projeto, os dois já trabalhavam também, e trouxeram elementos de fora da universidde para o projeto, o que foi muito bom. Ao contrário do que parece ser o pensamento da faculdade, cada dia mais eu sou a favor de começar a trabalhar cedo, pq isso ajuda a direcionar o estudo.
Porém, praticamente tudo o que a gente desenvolveu no Shob veio de aprendizados feitos na faculdade, inclusive as tecnologias que usamos como base ou como parte do código. Não encontramos nada fora do IME com que nunca tivéssemos tido contato, e isso dá imensa confiança na hora de desenvolver uma coisa nova.
Aprimorar o projeto é inevitável: há demanda para isso, de nós mesmos e da comunidade. Desde que o projeto entrou no Sourceforge até o dia 9 de Dezembro foram 40 downloads. Mas o aprimoramento do produto precisa vir acompanhado de um aprimoramento de nossas capacidades. Agora que o trabalho de formatura está concluído, a idéia é trazer outros desenvolvedores para trabalhar no projeto, e um aprendizado de como essas relações funcionam será essencial. Além disso, as análises que nunca fizemos precisam aparecer: análises de performance, estabilidade, escalabilidade, e outros conceitos importantes. A idéia é aprender com quem sabe, usando nossa rede de contatos que foi aparecendo nesses anos de faculdade.