Archive for maio \26\UTC 2009|Monthly archive page

Falando em Java 2009

Domingo eu estive presente na terceira edição do Falando em Java, organizado pela Caelum. Como nas outras edições, o evento foi bem legal, com palestras interessantes e foi uma oportunidade de rever o pessoal do GUJ.
Infelizmente eu não pude participar do evento na parte da manhã e cheguei só na hora do almoço.

A palestra sobre o VRaptor 3 foi ministrada pelo Guilherme Silveira e pelo Filipe Sabella (aka Lipe). Pelo que eu entendi, a versão 3 é uma evolução do framework com várias melhorias que a comunidade foi percebendo com o tempo, visando a flexibilidade e a facilidade de uso. Eles realmente querem deixar as “actions” do VRaptor bem limpas mesmo! Isso é um dos pontos positivos do framework, as “actions” nem parece que são “actions”, são POJOs de verdade. É muito bom ver um projeto nascido e mantido dentro da comunidade brasileira evoluindo. Não, eu não tenho problemas com o VRaptor por ter participado um “concorrente“, para mim, como desenvolvedor, é excelente ter boas alternativas para cada projeto. Parabéns para a equipe, boa sorte no processo de documentação (que é um saco fazer :P)

Depois eu assisti a palestra Arquitetura para aplicações Java de médio porte, apresentada pelo Sérgio Lopes e pelo Guilherme Moreira. A palestra apresentou algumas dicas legais que podemos usar no nosso dia-a-dia, alguns lembretes legais sobre como usar Hibernate de maneira eficiente, cluster, entre outras.

Uma palestra campeã foi a do Anderson Leite e Fabio Kung, Para onde vai a Plataforma Java? Linguages dinâmicas, JavaTV, JavaFX e além! Eles explicaram alguns detalhes da atual JVM, como são as instruções da JVM para invocação dos métodos em diversas situações e como será a próxima versão do Java estará melhor preparada para lidar com linguagens dinâmicas, com mecanismos como o invoke dynamic. Os “arquitetos J2EE” que se preparem… veremos cada vez mais projetos usando Java como plataforma e não como linguagem 🙂

Depois o Dr. Jim Webber falou sobre Restful e  Mediatypes. A palestra foi excelente e aumentou muito a minha visão sobre REST. O Jim tem um conhecimento muito bom sobre Restful e Http. Falou sobre muitas coisas interessantes e me deu idéias bem legais para os meus projetos. Com certeza vale a pena dar uma atenção mais forte ao REST como uma alternativa ao SOAP/WS-*. Fazendo uma rápida retrospectiva, todos os Webservices SOAP que eu fiz até hoje poderiam muito bem ser Restful Webservices.

O mais legal com que quem não foi no evento pôde acompanhar pelo Twitter. O pessoal do evento (eu incluso) ficava twittando em real-time o que acontecia no evento. Até hoje o pessoal faz muitos tweets sobre o evento (eu mesmo vou fazer um tweet quando terminar esse post apontando para o blog hehehehe).

Enfim, evento muito legal, como sempre 🙂

Anúncios

Aprendendo direito desde a faculdade…

Muitos desenvolvedores  tem  preocupações com o ensino superior da área de TI\Computação, achando que nem sempre o que é ensinado é o que praticado na realidade do mercado de trabalho brasileiro.  Alguns acham que os professores dizem já não se aplica á realidade a muito tempo ou então é algo meramente acadêmico, sem valor pro mercado de trabalho. Essa preocupação é extremamente compreensível, afinal, quem esta estudando hoje já esta trabalhando ou em pouco tempo estará trabalhando nos projetos de softwares pelo mundo a fora e os desenvolvedores que já estão no mercado há algum tempo vão ter que trabalhar com quem esta cursando ou acabei de sair de uma faculdade.

Recentemente conversei com um ex-colega do colégio técnico, que é um excepcional desenvolvedor e que esta cursando o quarto ano do curso de Engenharia de Computação numa das faculdades de maior renome do hemisfério sul.  Ele comentou que, na materia Engenharia de Software que ele teve no semestre passado, a professora resolveu desenvolver um projeto de software completo, passando por todas as fases, desde a análise de requisitos, passando por projeto e modelagem e até a implementação (sentiu a falta de algo ai?). Achei o relato dele muito interessante e pedi autorização dele para colocar a nossa conversa aqui no meu blog, pois o que ele passou se parece muito com a realidade do dia-a-dia de um desenvolvedor brasileiro…

Segue abaixo o que ele me disse no GTalk (com algumas pequenas alterações esteticas e removendo algumas interrupções minhas):

colega: Ela passou um projetomonstro pra gente fazer durante o semestre. A gente ficou 1 mês fazendo levantamento de requisitos.  O projeto começou como uma coisa pra administrar as agremiações.
rubem:  (censurado)! Quer dizer que ensinam errado na faculdade??? (Um mês para levantar os requisitos de uma aplicação simples)

colega:  Depois ele ganhou todo o tipo de funcionalidade que você pode imaginar…  De avaliar professor até loja virtual. Depois a gente passou mais um mês fazendo projeto de interface, estimativas de custo e besteiras acessórias. 

colega:  Tinha dado uns 80 casos de uso… Daí ela falou “É, acho que tem muita coisa mesmo… Vocês podem cortar umas funcionalidades”. Daí a gente foi pra fazer o projeto .Como tinha muita coisa, ele deixou cortar mais uns 20 casos.

rubem:  aí acabou o semestre!
colega: Calma….
Daí a gente fez o projeto, com dezenas de camadas,  igual ela ensinou pra gente.  De um módulo que passa pro outro que passa pro outro….
E a gente fez o projeto numa ferramenta X que ela inventou que iria gerar os stubs pra gente programar depois e assim foi, até 2 semanas antes do fim do semestre.
Começou a parte de implementação…
Sobraram 5 casos de uso (Fazer login, fazer logoff, e coisas desse gênero)
O raio da ferramenta gerou centenas de classes de stub que, aliás, não compilavam. Passamos uns dias pra fazer as classes que não fazem nada compilar, daí a gente fez um módulo chamar o outro que chama o outro, etc, etc… centenas de classes que só terceirizavam o trabalho.
E, por fim, sobrou 1 semana pra fazer funcionar. Colocamos um módulo megazord embaixo pra fazer a interface com o Hibernate em cima pra acessar o banco e ficamos com centenas de classes inúteis no meio por que a professora queria!
Diz aí… Isso sim é engenharia de software, né?
rubem:  é… e você sabe o que é pior?
colega: ?
me: você descreveu um típico projeto de software produzido no mercado de trabalho 🙂

 

E aí, parece ou não parece um típico projeto de software? 🙂

Primeira, utilizaram a famosa pattern: faz análise de requisitos, modelagem, implementa, ops… não dá tempo de fazer tudo, gastei meses antes de começar uma única linha de código e entregar algo de valor para o cliente.

Segundo, não houve nenhuma preocupação com a qualidade. Nem sequer a famosa fase de testes, com as suas planilhas de testes e tudo mais.

Terceiro, tentaram utilizar uma ferramenta monstra para gerar código e automizatizar a implementação do projeto que mais atrapalhou do que ajudou.

Quarto, inventaram uma super arquitetura ambiciosa que não trouxe benefício algum ao projeto, bolado por um arquiteto da torre de marfim que não ia meter a mão no código.

Quinto, acabaram inventando muitas funcionalidades e, depois que viram que não ia dar tempo de entregar tudo, tiraram muitas funcionalidades e o produto final foi algo que realmente não trouxe muito valor para o usuário.

Felizmente, muito se fala hoje sobre desenvolvimento ágil e suas metodologias (como Scrum e XP). Mas pelo visto, ainda é uma raridade nas salas de aula. Tive uma experiência similar em algumas aulas de engenharia de software do meu curso. Muito blá-blá-blá, mostrando sempre o desenvolvimento waterfall e falando que é RUP, nada de desenvolvimento ágil.

Bom, pelo menos não podemos negar que esses estudantes passaram por uma experiência muito próxima da realidade no mercado de trabalho 🙂