Migração do blog – http://brunopereira.org

junho 12, 2008

Já há algum tempo eu estava pensando em colocar meu blog em um serviço de hospedagem, para ter uma liberdade maior na publicação de conteúdo e poder contar com mais alguns serviços.

Na sexta-feira passada eu contratei uma hospedagem e agora possuo uma instalação própria do WordPress. O novo endereço do blog é http://brunopereira.org

Eu importei todo o conteúdo deste blog lá na outra instalação. Todos os posts, comentários e arquivos presentes aqui já estão lá.

Não tenho nenhuma insatisfação com a qualidade de serviço do blog gratuito do WordPress. Ele sempre me atendeu plenamente e me surpreendeu positivamente. Estou mudando para conseguir personalizar mais as coisas e poder contar com serviços como Apache, Tomcat, Subversion, bancos de dados, etc.

Estou com algumas idéias para o blog e aos poucos colocarei as coisas em prática. Meus escassos leitores, por favor atualizem seus links, blogrolls, e feeds RSS/Atom para este novo endereço. Este será o último post que farei neste endereço.


Gestão de conhecimento do time

junho 6, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Eu tenho pensado um pouco sobre isso nos últimos tempos, então decidi falar aqui no blog porque possivelmente muitas pessoas têm questionamentos semelhantes.

Inicialmente vou contextualizar um pouco para depois ficar mais fácil de expôr algumas idéias. Meu time na Globo.com é formado atualmente por 3 desenvolvedores, 1 especialista em client-side e 2 arquitetos de informação (até semana passada eram 3). Temos um backlog de produto enorme, pois a equipe era formada apenas por 2 desenvolvedores antes da minha chegada em Janeiro. O resto do pessoal se juntou ao time em Março.

Uma coisa importante no Scrum (na verdade, em qualquer metodologia hoje em dia) é que os desenvolvedores sejam versáteis, e consigam atuar de várias formas diferentes, mudando de ferramentas, frameworks e linguagens sem problemas. Para que os desenvolvedores consigam fazer isso, é claro que é fundamental que eles estudem bastante e estejam sempre se atualizando, pois as opções de tecnologias disponíveis estão avançando muito rapidamente.

Outra coisa importante é que mais de um desenvolvedor do time seja capaz de realizar qualquer tarefa específica. Isto é importante pelo compartilhamento do conhecimento e para que seja possível lidar tranqüilamente com problemas pessoais, férias, etc. Neste sentido, precisamos pensar muito mais no conhecimento do time do que no conhecimento de indivíduos separadamente.

O que eu quero dizer com isso? Quero dizer que para um time andar bem, as escolhas de tecnologias idealmente devem ser moldadas em torno do time. Com a infinidade de opções que temos de frameworks web, APIs javascript/ajax, linguagens e componentes, não podemos nos dar ao luxo de ficar continuamente acompanhando as novidades e avaliando novas opções. Precisamos fazer algumas escolhas, e avançar com elas. É claro que isso pode e deve ser periodicamente revisto, mas é fundamental escolher algumas opções e se concentrar nelas.

Os 3 desenvolvedores do meu time têm experiência muito mais em Java do que em outras linguagens. Nossas aplicações são todas em Java, embora já estejamos fazendo experimentos com outras linguagens. Entretanto, concordo bastante com um artigo que saiu no InfoQ recentemente, que traz a idéia de que Java pode ser a última grande linguagem. Compartilho da idéia do autor de que provavelmente estaremos nos próximos anos escolhendo linguagens de uma forma semelhante à que escolhíamos frameworks Java nos últimos anos.

Java é uma linguagem de propósito geral. Gosto muito da linguagem e da plataforma. Mas com novas linguagens/frameworks direcionados para problemas específicos, é natural que em alguns nichos Java não seja a melhor opção. Penso que isso está acontecendo com mais força em aplicações web. Novas opções como o Grails, Django e Ruby on Rails oferecem um desenvolvimento muito mais produtivo do que Java em algumas aplicações. Java possui ótimos frameworks web, e já é uma linguagem muito madura. Mas quem já utilizou alguma dessas 3 opções que mencionei já pôde constatar o choque de produtividade delas contra a maioria dos frameworks web Java.

Conversei sobre isso com o resto do time e a minha opinião é de que devemos nos concentrar em torno de um conjunto limitado de opções, para que o time tenha um melhor rendimento. Com isso, o ideal é que o time conheça bem 2 ou talvez 3 frameworks web Java, 1 ou 2 das opções de alta produtividade web, e 1 ou 2 opções de framework javascript/ajax (jQuery por exemplo). As escolhas devem ser feitas pelo time em conjunto, de acordo com as aptidões e conhecimento agregado dos membros.

Trabalhando com um conjunto reduzido de opções, fica muito mais fácil compartilhar o conhecimento dentro da equipe, e conseguimos que os desenvolvedores conheçam bem esses componentes escolhidos e sejam produtivos com eles. Não adianta muito que um dos desenvolvedores saque muito do “melhor framework web da história desse país”, mas só ele conheça esse framework.

É melhor que seja utilizada uma opção que o time de uma maneira geral já conheça e seja produtivo. Pode ser que essa 2a opção não produza flocos tão crocantes como aquele outro framework, mas se é uma boa ferramenta para o problema e o time conhece bem, use essa mesma!

É claro que em algumas situações nós precisamos abrir mão de algo que conhecemos bem para utilizar uma opção que se adequa melhor aos outros membros do time. Vamor supor que um dos desenvolvedores saca muito de Tapestry e considera que ele é o melhor framework web Java. Se os outros 3 desenvolvedores já conhecem bem de JSF, provavelmente a melhor alternativa é que o time use JSF, e aquele desenvolvedor abra mão do Tapestry em favor do JSF. Pode ser que o Tapestry seja melhor tecnicamente do que JSF, mas os resultados têm que ser entregues pelo time, então as escolhas têm que ser feitas em torno das aptidões do time como um todo.

Tendo feito as escolhas de tecnologias, o legal é que os desenvolvedores se revezem com alguma freqüência entre as linhas de atuação, para propagar melhor o conhecimento e o time como um todo amadurecer. Eu por exemplo conheço legal de REST, mas os outros 2 desenvolvedores do time já implementaram alguns serviços e clientes REST, e com certeza têm plena condição de trabalhar em qualquer um dos serviços REST que eu implementei.

Aos poucos estamos aprendendo mais da parte client com o especialista do time, e ele também já está aprendendo um pouco de JSF, e com isso vamos todos amadurecendo. Essa gestão de conhecimento do time deve ser muito bem feita, para que os resultados do time vão melhorando progressivamente sprint após sprint. A decisão de se concentrar em algumas escolhas (mesmo que talvez elas não sejam as melhores tecnicamente) é muito importante para que o time se mantenha produtivo.

Todos gostamos muito de software, e de avaliar novidades. Porém, não somos pesquisadores, somos desenvolvedores comprometidos com resultados. Essa decisão das escolhas do time é muito importante. Nosso tempo de estudo é limitado, portanto precisamos ser pragmáticos e focar nos resultados.


A Concrete está contratando

maio 31, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Olá pessoal, está rolando um processo grande de contratação na Concrete e estou ajudando na divulgação das vagas. Eu trabalho na Concrete há mais de 2 anos e gosto muito da empresa. Eu cheguei na empresa depois de trabalhar por mais de 2 anos numa das maiores (talvez a maior) empresa de consultoria do mundo.

O meu apreço pela Concrete é muito maior do que eu já tive pela empresa anterior. Nesta outra empresa todos nos sentíamos como gado. Sabíamos que cada pessoa era um recurso e pronto. Totalmente descartável, o que explica a alta rotatividade de profissionais que passaram por lá.

Na Concrete desde o começo eu me senti relevante. Os sócios e os associados (nível semelhante a gerentes) me conhecem e a minha opinião é levada em consideração nas decisões da empresa. Em vez de ser o FUNCIONARIO_ID número 105347, eu sou o Bruno Pereira. É uma sensação muito melhor, e isso certamente motiva mais.

Além disso, a Concrete é uma empresa realmente de software. Feita por pessoas que gostam de software e contrata gente que gosta de software. O foco principal da empresa é desenvolvimento mesmo. Com isso, convivemos entre profissionais de alto nível, e isso ajuda muito no amadurecimento e evolução dos profissionais.

Bom, estou ajudando na divulgação de vagas para 3 perfis, com a descrição abaixo. São 2 vagas para cada perfil. Se você se enquadrar neles ou conhecer alguém nesse perfil, por favor me envie um e-mail com seu currículo para: blpsilva@gmail.com.

Analista de Sistemas Java Pleno

Fundamental:
– Java SE 5 e/ou 6, Java EE
– JPA, Hibernate, Struts
– Experiência de uso com algum dos seguintes application servers (se conhecer mais de 1, melhor): BEA WebLogic 9 ou 10, Jboss AS, Apache Tomcat e Geronimo.
– Conhecimento de SQL e modelo de entidade-relacionamento.
– Inglês para leitura e estudo de material técnico. Inglês para conversação é um plus.

Desejável:

- Graduação em Ciência da Computação, Engenharia Eletrônica ou Computação, Informática e Matemática
– Conhecimento e interesse em outras linguagens de programação é bastante apreciado: Ruby, Scala, (Rhino)Javascript, Perl
– Familiaridade com web services e suas especificações WS-*
– Familiaridade com processos de desenvolvimento iterativo

- Familiriadade com comunidades e projetos de Open Source Software
Analista de Sistemas Java Sênior

Fundamental:
– Java SE 5 e/ou 6, Java EE
– JPA, Hibernate, Struts,
– Experiência de uso com algum dos seguintes application servers (se conhecer mais de 1, melhor): BEA WebLogic 9 ou 10, Jboss AS, Apache Tomcat e Geronimo.
– Conhecimento de SQL e modelo de entidade-relacionamento.
– Inglês para leitura e estudo de material técnico. Inglês para conversação é um plus.

Desejável:

- Graduação em Ciência da Computação, Engenharia Eletrônica ou Computação, Informática e Matemática
– Conhecimento e interesse em outras linguagens de programação é bastante apreciado: Ruby, Scala, (Rhino)Javascript, Perl
– Conhecimento de plataforma Linux
– Conhecimento em shell scripting para Unix/Linux é bastante desejável
– Conhecimento em otimização de JVM e Garbage Collector
– Familiaridade com web services e suas especificações WS-*
– Familiaridade com diversos aspectos do ciclo de vida do desenvolvimento de software
– Familiaridade com processos de desenvolvimento iterativo
– Familiriadade com comunidades e projetos de Open Source Software

Consultor/Analista de Infra-Estrutura

- Atuar com suporte à área de produção de TI
– Sólidos conhecimentos de ambientes Linux
– Sólidos conhecimentos em SQL
– Conhecimentos em Oracle e SQL Server para troubleshooting e análise de performance que cause impactos em aplicações
– Desenvolvimento e manutenção de shell scripts
– Sólidos conhecimentos em tópicos de redes TCP/IP, LAN, DNS
– Inglês para leitura e estudo de material técnico. Inglês para conversação é um plus.

Desejável:
– Conhecimentos de Active Directory e protocolo LDAP
– Conhecimentos de WebLogic Server
– Conhecimentos de IIS
– Espanhol para conversação
– Virtualização utilizando suíte VMWare


Curso de web services REST

maio 30, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Ontem na minha apresentação de REST no RioJUG um rapaz (infelizmente não sei o nome dele) me perguntou se eu conheço algum curso ou treinamento sobre REST.

Não conheço nenhum curso disso e não sei se teremos algum em breve. Na verdade, como o Guilherme comentou, existem muito poucos cursos de web services, mesmo os WS-*, que já são bem antigos.

Resolvi escrever esse post para tentar colher opiniões do pessoal quanto a um curso nesse assunto. Vocês se interessariam por um curso de REST? Será que esse curso teria muitos interessados ou a maioria dos desenvolvedores iria preferir a maneira autodidata mesmo? Para os que assistiram a alguma das minhas apresentações de REST, vocês acham que uma expansão do conteúdo com maior detalhamento e exemplos práticos bem explicados daria um bom curso?

A Concrete já ministra alguns treinamentos em produtos da BEA, então certamente haveria espaço para novos cursos de conteúdos interessantes. Eu gosto de fazer apresentações, mas nunca preparei um curso. Estou tentando participar de mais eventos, e também já pensei em atuar um pouco com treinamento técnico, mas ainda não me decidi sobre isso.

Opiniões são bem-vindas :)


Fotografia de um EJB 2.1

maio 29, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Fotógrafos muito talentosos conseguiram capturar uma imagem de um EJB 2.1:

EJB Stateful

O anúncio dessa fotografia foi feito no G1 e lá podemos ter maiores detalhes sobre esse EJB. Pela imagem, não restam dúvidas de que ele é bem Stateful.

No G1 o pessoal usou uma nomenclatura para leigos, e então chamaram esse EJB pelo seu nome fictício, de Rinoceronte Javanês.

As pessoas costumam fazer comentários maldosos sobre os EJBs, dizendo que eles são pesadões e com pouca agilidade. Este espécime nos comprova que isso não passa de intriga da oposição.

Infelizmente fui saber que os simpáticos Rinocerontes Javaneses estão em extinção, restando poucos exemplares no mundo. Talvez possamos contribuir com melhores condições de sobrevivência para os bichinhos, e darmos a eles mais alguns gigas de memória, a comidinha preferida deles. Não deixe esta espécie ser extinta, vida longa aos RInocerontes Javaneses!


Java Magazine 57

maio 27, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Já está nas bancas a edição 57 da Java Magazine. Nesta edição saem 2 artigos meus sobre o formato Atom.

O artigo maior apresenta o formato Atom e o seu protocolo de publicação, o AtomPub. Além desta apresentação, tentei indicar alguns pontos importantes que tornam interessante a sua adoção no desenvolvimento de serviços REST.

O artigo pequeno é no formato “Quick Update” da revista. Nele eu analiso a adoção do formato Atom em serviços REST e destaco os principais aspectos a serem considerados para se decidir pelo uso ou não do Atom.

O Atom e o AtomPub são muito interessantes, e mesmo que você não use diretamente o formato, tenho certeza de que ele te trará boas idéias para a implementação de serviços REST. Have fun!


Apresentação sobre REST no RioJUG

maio 19, 2008

Atenção, este blog foi migrado para: http://brunopereira.org

Caros amigos, na terça-feira dia 27/05 farei uma apresentação sobre web services REST no RioJUG.

Esta apresentação será semelhante à que fiz recentemente na Globo.com, mas acho que ficará um pouco melhor. Maiores informações sobre a apresentação podem ser vistas na página do grupo. Após a apresentação atualizarei este post colocando os slides.

Quem quiser/puder comparecer será muito bem-vindo ;)


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.