Estamos contratando na Giran

Há pouco tempo pude compartilhar minha enorme felicidade com o lançamento da Giran Soluções e Ensino com todos vocês dois leitores, e desde lá estamos trabalhando duro, literalmente ralando por aqui. Cada dia, cada entrega, cada projeto e contrato conquistado são alegrias enormes e, sempre comemoradas com muito entusiasmo. Agora estamos abrindo nosso primeiro processo de seleção, estamos crescendo!

A Giran é uma empresa nova, jovem, descontraída e muito, muito comprometida com seus objetivos. Trabalhamos de forma ágil, usamos Scrum internamente e nos projetos dos clientes, além de várias práticas de Extreme Programming, inclusive TDD e programação em pares. Aversão à estas práticas não é um bom diferencial :)

Neste processo de seleção nós não estamos procurando especialistas e nem donos da verdade, aqui na Giran nós usamos de tudo um pouco. Cada profissional tem uma especialidade ou ‘sabor preferido’, nós também temos as nossas e sabemos valoriza-las, mas estamos interessados especialmente em profissionais multi-disciplinares, que sejam capazes de desenvolver, analisar, testar e arquitetar com diferentes linguagens e tecnologias, ou que ao menos estejam dispostos a trabalhar desta forma. Como trabalhamos com Internet, conhecimentos em Javascript, CSS, XHTML, mashups com APIs de terceiros, etc, serão um bom diferencial.

É importante que o candidato saiba que prezamos muito pela qualidade do que fazemos, nós estudamos os códigos um dos outros e nos respeitamos por isso, aprendemos muito assim. Nosso principal objetivo é a qualidade máxima, nós não viramos noite trabalhando e mesmo assim entregamos software no prazo, testado e funcionando muito bem, obrigado! Por isso estamos procurando pessoas com esse perfil: comprometidas, organizadas, que saibam trabalhar muito bem em equipe e que prezem pela qualidade do que fazem.

Por último, e talvez mais importante: todos nós somos nerds, geeks, apaixonados por tecnologia e super atualizados com as últimas novidades da Internet e do mercado. Nossa equipe é jovem, irreverente, descontraída e em constante evolução. São pessoas com esse perfil que estamos procurando.

A empresa oferece contratação com salário de mercado (não o do mercado capixaba), plano de benefícios e outros incentivos como cursos e treinamentos (especialmente aulas de inglês), um iMac ou Macbook (sim, gostamos da maçã por aqui) exclusivo para você, e claro vaga garantida nas partidas de xbox360. Estamos localizados em Jardim da Penha, Vitória-ES.

Se você acha que se enquadra, mande um email para mim (contato at giran.com.br) com seu currículo e os nomes dos 3 últimos livros técnicos que você leu. Diga se você sabe quem é o Taurin e qual sua ocupação, afinal de contas você está indo para Giran Castle Town.

Não pense que estamos procurando apenas profissionais experientes e de altíssimo nível: se você é estudante e tem pouca ou nenhuma experiência mas gosta de ler e aprender sobre coisas novas você não está fora! Escreva pra gente.

Trabalhando com mais de um JDK no Ubuntu

Hoje em dia ter o Java5 e Java6 instalados na máquina de um desenvolvedor é praticamente uma obrigação. Java2 1.4 e Java7 também figuram bastante, ao menos aqui por estas bandas.

No meu macbook, que uso para trabalhar, eu controle tudo via a variável de ambiente $JAVA_HOME, é bem tranquilo. Quando quero compilar ou rodar alguma coisa com outro JDK/JVM é só mudar o $JAVA_HOME e pimba!

Quando eu usava Ubuntu sempre tive problemas para instalar mais de um JDK através do apt-get. A instalação era uma maravilha, como sempre no apt-get, mas por algum motivo o JDK e JVM padrões sempre ficavam com a versão mais alta. Eu tentava ‘corrigir’ usando a solução do $JAVA_HOME e incluindo o $JAVA_HOME/bin no $PATH, mas isso só funcionava enquanto eu estivesse no bash ou em aplicações que não fizessem referência direta ao /usr/bin/java.

Recentemente assumimos alguns servidores aqui na Giran e estamos migrando todos para Ubuntu Server. Não vou entrar no mérito dos porquês desta escolha para não criar uma guerra santa. Mas o que importa é que nestes servidores nós queríamos usar o apt-get para gerenciar todos os pacotes, afinal não temos paciência tempo para cuidar de tantos detalhes pequenos em tantos servidores.

Ao instalar um JDK, qualquer versão, através do apt-get, vários comandos estarão disponíveis no $PATH, dentre eles o java, javac, javap, jar, etc. Estes comandos estão sempre /usr/bin, mas são um link simbólico para os comandos em /etc/alternatives, que por sua vez são um link simbólico para o arquivo executável de verdade. Após instalar mais um JDK aí a coisa complica, qual deles será o padrão!? A cadeia de links simbólicos continua a mesma e mudar todos (mais de 15) manualmente não é muito indolor.

As instalações ficam sempre em /usr/lib/jvm/java-$versão, que é exatamente onde vão bater os links simbólicos de /etc/alternatives. No meu caso, por exemplo, tenho estas duas instalações: /usr/lib/jvm/java-6-sun e /usr/lib/jvm/java-1.5.0-sun. Se eu quiser alternar entre elas como padrão para todo o sistema, posso simplesmente usar o comando “update-alternatives” ao invés de sofrer reconfigurando um monte de link simbólico.

Então vamos lá:

spock@vulcan:~$ sudo update-alternatives --config java
There are 2 alternatives which provide `java'.
Selection    Alternative
-----------------------------------------------
+        1    /usr/lib/jvm/java-6-sun/jre/bin/java
*        2    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java

Press enter to keep the default[*], or type selection number: 2
Using '/usr/lib/jvm/java-1.5.0-sun/jre/bin/java' to provide 'java'.

E pronto, simples assim. O item com o sinal de + (mais) é a opção default e o item com o sinal de * (asterisco) é a opção atual.

Usando Working Sets no Eclipse

Quem não tem mais de uma workspace do Eclipse que levante a mão. Alguém!? Alguém!? Tenho certeza que todos que trabalham com o Eclipse há algum tempo, por mais organizado que seja já se pegou gerenciando duas, três, quatro ou mais workspaces.

Isso sempre foi um problema pra mim, especialmente pelo modo que o Eclipse gerencia suas configurações, que são particulares para cada workspace. Isso é bom, é um modelo legal e funciona super bem. Não era bom pra mim pois eu estava teimando em usar as workspaces de forma errada, então eu sempre tive um sério problema com as configurações, pois elas estavam sempre diferentes entre cada workspace.

Eu sempre tentei separar os projetos por clientes, por área de interesse ou por atividade. Uma workspace de projetos open source, outra do cliente ABC, outra do cliente XPTO, outra de projetos que eu estava estudando o código e assim por diante. Os problemas na hora de trabalhar eram vários, por exemplo: um repositório criado numa workspace era só dela, um atalho configurado na outra ficava só lá, um bookmark também, ou templates de código também. Resumindo, a bagunça ficava gigante e a redundância de configurações então nem se fala.

Então resolvi jogar tudo pra uma workspace só. Problema resolvido!? O das configurações sim, mas de brinde ganhei um novo: performance. Outro hábito não muito bom que eu tenho é o de manter todos os projetos abertos. São tantos projetos (141 atualmente) que só pra abrir o Eclipse demorava muito tempo. Depois, pra abrir/buscar um tipo (CMD+SHFIT+T), por exemplo, demorava de mais para indexar, limpar a workspace então nem pensar. A solução que eu encontrei foram as Working Sets, um recurso que sempre esteve ali presente e eu nunca dei bola.

As Working Sets são grupos de trabalho que podem concentrar um ou mais projetos e funcionam como se fossem várias workspaces. No meu caso as working sets caíram como uma luva para a minha antiga distribuição de workspaces. Ao invés de usar várias workspaces por clientes, agora mantenho uma única workspace com várias working sets, algumas de clientes, outras de estudo, etc. Isso resolveu o meu problema de configurações completamente e com as working sets eu posso escolher em que vou trabalhar num determinado momento e ver somente aqueles projetos, resolvendo também o problema de performance.

E para quem quiser usar as working sets, seguem algumas dicas.

Ativando a visualização por working sets

O passo essencial é trocar a visualização de Projetos para Working Sets, isso é bem simples. Veja a imagem a seguir:

eclipse_ativar_working_sets

Gerenciando suas working sets

No próximo passo você deverá criar as suas working sets e associar cada uma delas com os projetos que quiser.

eclipse_visualizando_working_sets

Crie, modifique ou remova qualquer working set.

eclipse_gerenciando_working_sets

Trabalho feito, agora basta escolher em qual working set quer trabalhar e pronto, paz e sossego.

eclipse_go_into_working_set

Lembre-se que você pode optar por fechar ou abrir todos os projetos de uma working set bem como “ir e voltar” para qualquer uma delas.

Comentários do Falando em Java 09

Eu também fui! O Falando em Java 2009, foi a terceira edição do evento que é organizado e realizado pela Caelum, em São Paulo. Mais uma vez eu pude marcar presença no evento. Este ano acho que foi o que mais conheci gente, muita gente do twitter e muitos conhecidos que eu pensava que não existiam de carne e osso, foi bem legal, mesmo. Não vou escrever nomes pois eu tenho certeza que irei esquecer de alguém, mas para todos os que eu conheci pessoalmente, um abraço e prazer em conhece-los.

A abertura do evento foi muito legal, o pessoal da Caelum mostrou uma série de novidades que eles estão trazendo para o mercado, dentre elas um livro de Arquitetura e Design de Software, curso de TV Digital com Ginga, curso de Flex e muito mais.

Logo depois uma apresentação do Jim Webber titulada “Guerilha SOA”, simplesmente fantástica. Além de dominar totalmente o assunto o Jim foi um exímio apresentador, soube brincar nas horas certas sem perder o timing das piadinhas.

O Paulo Silveira e o Rafael Cosentino fizeram uma apresentação sobre O Profissional Java Efetivo. A apresentação foi boa, mas poderia ter sido muito melhor se não tivessem perdido muito tempo nas piadinhas sobre o Nico.

A palestra do Kung e do Anderson foi fantástica, eles mostraram pontos e recursos super importantes da máquina virtual Java e como ela está voltando a ser dinâmica. O Kung falou do início da JVM, quando ela era utilizada para linguagens dinâmicas, explicou como e porque ela ficou tão “estática” e como as coisas estão voltando ao que eram, dinâmicas. É claro que ele também mostrou vários benefícios de termos linguagens dinâmicas usufruindo de todos os recursos e qualidades de uma plataforma como Java.

Todas as outras apresentações foram muitos legais, todos os palestrantes estão de parabéns. No geral, a minha opinião sobre o evento é que ele foi muito bom. O único ponto que não foi tão legal foram os excessos de brincadeiras e comparações com o mundo real nas apresentações, o que claramente causou perda de conteúdo útil e importante. Apresentações purpurinadas, apresentadores brincalhões e muita descontração nem sempre caem bem, na verdade são mais difíceis de dar certo e fazerem sucesso do que o conteúdo propriamente dito da apresentação.

Este ano o FJ teve mais de 500 participantes, quase o dobro em relação a última edição. O local do evento também foi outro, muito maior e chique moderno. E a organização e palestras, como sempre foram de altíssimo níveis, o FJ mostrou claramente o amadurecimento e crescimento da Caelum como empresa.

Pra mim estes dias em São Paulo significaram muito mais do que simplesmente o evento. Eu conheci o Paulo Silveira um pouco antes da Caelum existir, e de certa forma a vi nascendo, crescendo e evoluindo, mesmo que de longe. Pude ver várias fases de perto, até quando os irmãos Silveira davam a primeira aula de cada curso usando terno e gravata =P. Conhecer o novo escritório da Caelum, cheio de amigos e conhecidos da época de ouro do PortalJava e do GUJ, com dezenas (várias dezenas) de colaboradores pessoas trabalhando juntos, sincronizados, motivados e felizes foi indescritível, fiquei realmente muito feliz. Com certeza é uma empresa e trabalho que nos motiva muito e que servirá de exemplo para nós aqui na Giran.

Palestra: Testes de Unidade com JUnit

Hoje tivemos mais um encontro do ESJUG. Desta vez eu fiz uma apresentação sobre Testes de Unidade com JUnit. A idéia principal da apresentação foram os exemplos, mas os slides ficaram legais, por isso estou compartilhando.


Estou preparando os códigos que foram feitos na apresentação junto com outros que foram preparados antes para demonstração. Depois que estiver ‘organizado’ vou subir para o github e disponibilizar aqui no blog.