sauloarruda.eti.br

…revirando até chegar do outro lado…

July 16th, 2010

Dos dias 21 a 25 de junho estive em Porto Alegre para participar da Conferência Brasileira sobre Métodos Ágeis, o popular AgileBrazil 2010. Fui acompanhado dos meus sócios da JeraJefferson Moreira e Adriano Bacha e ficamos no Hostel Casa Azul próximo ao parque da farroupilha no coração de POA.

Galera no Hostel Casa Azul

Galera no Hostel Casa Azul

Curso: Coaching Agility

O Jefferson e Adriano fizeram o curso de XP na terça-feira. Eu fiz na quarta-feira o curso de Coaching Agility com o David “The Dude” Hussman da DevJam. A turma era de altíssimo nível e a maioria dos presentes trabalharam de alguma forma com coaching o que rendeu excelentes discussões durante as dinâmicas. Ele começou falando sobre a essência da atividade de coaching, desafios, apresentou técnicas para diagnóstico da situação atual da empresa e explicou como argumentar sobre a adoção de técnicas ágeis como refactoring ou pair programming. Pra mim foi bastante proveitoso e por um preço de banana (o curso custou R$ 250,00).

Primeiro Dia

Comecei participando do Keynote do Martin Fowler. Ele falou sobre o artigo “The New Methodology“, também sobre Integração Contínua e por final falou sobre Débito Técnico. Nenhuma novidade daquilo que ele já vem escrevendo no Bliki e nos artigos. Como era de se esperar, Fowler é extremamente didático e metódico, e diria até um tanto que estranho como ser humano. Quem estava lá e deu uma reparada sabe do que estou falando. De qualquer forma, como ele não curte que as pessoas tirem fotos com ele, incluimos ele em uma foto nossa! :P

Saulo, Adriano e Jeffmor (fowler ao fundo)

Saulo, Adriano e Jeffmor (fowler ao fundo com sono)

Depois do keynote participei do workshop com Philippe Kruchten sobre Planejamento de Release. Ele criou um Jogo que simula a situação de uma equipe de astronautas fica preso na lua e precisa tomar algumas decisões sobre o que fazer: Consertar a nave ou se organizar para sobreviver até o resgate chegar. No jogo, ele explora de maneira bem inteligente as métricas relacionadas à velocidade, além da questão de débito técnico. Semana passada fiz uma adaptação da dinâmica e apliquei em uma consultoria que estou dando e também na Agence. Vou escrever nos próximos dias sobre isso mostrando os resultados! Enfim, esse workshop foi pra mim o ponto mais alto do evento.

Após isso, assisti a palestra do José Papo com o tema “It’s the Economy! Agilidade, indicadores financeiros e criação de valor“. Apesar do tema ser muito interessante, o tempo de 40 minutos não foi suficiente para apresentar de forma abrangente o tema, ficando limitado no básico. Sinceramente, lendo o artigo aprendi muito mais que a palestra… Faz parte. Depois acabei ficando nos bastidores trocando idéia com o pessoal da BlueSoft, David Hussman e Phillippe Kruchten que estavam por lá!

Mais tarde, durante a palestra dos patrocinadores participei do open space com o Klaus Wuestefeld que mostrou a solução de computação soberana na qual ele está trabalhando, o Sneer. Eu particularmente havia ouvindo somente alguns “palpites” sobre computação soberana mas depois de conversar com o Klaus e ver o Sneer funcionando tive uma noção muito mais clara sobre como isso funciona. Na minha opinião a idéia é muito boa, mas infelizmente os grandes “players” não devem gostar muito da proposta de independência do usuário na rede.

Já bastante cansado no fim da tarde assisti parte da palestra do Greg Warren e Carlos Lopes, ambos da ThoughtWorks que estavam falando sobre XP no mundo real. Bastante interessante, mas infelizmente não consegui ficar até o fim…

Segundo Dia

O dia começou com o Keynote do Philippe Kruchten falando sobre Agilidade em contexto. Bastante interessante o tema pois trata do velho dilema de “ser ou não ser ágil”. Tem gente que quer uma métrica (algo do tipo CMMi nível 2, 3 ou 5) para agilidade. Tipo, a empresa A é MAIS ÁGIL que a empresa B. Bullshit! Depois tivemos o decepcionante jogo do Brasil X Portugal. A transmissão estava em excelente qualidade nos telões do evento.

Após o almoço marcamos de apresentar um Open Space sobre o programa de imersão ágil que implementamos na Agence nos últimos 6 meses, que foi a palestra que submetemos e não fomos aprovados para o evento. Infelizmente não tivemos público :( , mas de qualquer forma ainda pretendo escrever um pouco mais detalhadamente sobre o assunto.

Conteúdo do nosso Open Space

Depois disso participei do Open Space com o Philippe Kruchten sobre Débito Técnico. O bate-papo foi muito produtivo gerando vários exemplos e casos reais bastante interessantes. Esse Open Space durou bastante sempre renovando o pessoal que participava o que enriqueceu ainda mais a discussão!

Open Space com Philippe Kruchten

Por fim tivemos o Keynote do Klaus Wuestefeld com o tema Beyond XP, um título bastante polêmico visto que o que pode estar além do Extremo!? Brincadeiras de lado, foi uma excelente palestra que está resumida de forma bastante objetiva no blog do Klaus. Na verdade ele fechou o evento com chave de ouro explicando que Agilidade não é seguir XP ou SCRUM ou qualquer outro método com um nome bacana. Agilidade é uma nova maneira de pensar, de agir e de fazer software de qualidade.

Na minha opinião, este foi o melhor evento que tive oportunidade de participar! É um evento que converge todas as tecnologias, linguagens, tipos de empresa e pessoas de uma forma muito democrática, sem nenhum tipo de fanatismo ou verdade absoluta. Para aqueles que perderam, tem bastante material na web sobre o assunto, inclusive um diretório de reviews compilado pelo pessoal da SEA.

Porto Alegre!

Sinceramente gostei muito de Porto Alegre! No Hostel que ficamos tinha várias pessoas de outros países com quem pude trocar várias experiências e “desenferrujar” meu inglês! Além disso demos um rolê pela cidade conhecendo Pubs, Churrascarias (CTG!) e Bares! Gostei muito da estadia e recomendo fortemente a cidade, mesmo com um frio de 10ºC quase todos os dias!

June 18th, 2010

Hoje foi publicado meu artigo de estréia no InfoQ Brasil. Falei sobre um post do Scott Berkun desta semana, daqueles que te deixam humilhado e com a sensação de que você está no caminho errado!

Confiram e comentem! http://www.infoq.com/br/news/2010/06/programador-artista

May 20th, 2010

Muito interessante essa proposta do google para uma revista ficticia usando todos os recursos de vídeo, design, interatividade e compartilhamento.

Para o desenvolvimento do projeto, foi usado: CSS Animation, Embedded Fonts, Drag & Drop, HTML5 Video, Geolocation, Web Workers, App Cache, Web DB, Feeds, Google Maps API, Google Buzz API, Rails e claro, tudo sem flash.

Visto no blog do Leonardo Moreira

April 28th, 2010

Hoje fizemos a primeira reunião para organização do Ruby User Groups do Mato Grosso do Sul. Estamos envolvidos na iniciativa: Daniel Pinto, Kristopher Murata e Rodrigo Toledo. Com isso, eu me desliguei da coordenação do JUG-MS para me dedicar integralmente ao projeto.

Nossa proposta inicial é divulgar a tecnologia Ruby no estado por meio da participação (e eventual organização) de eventos, projetos open-source, DOJOs, blog e lista de discussão.

Em breve estaremos passando maiores novidades e abrindo as inscrições da lista de discussão e repassando as ações que pretendemos botar em prática no ano de 2010.

April 1st, 2010

Começamos um novo projeto na Agence esta semana e decidimos usar o Git na máquina de desenvolvedor e SVN como repositório central. A idéia é facilitar o desenvolvimento local usando branches para cada funcionalidade desenvolvida e enviar para o repositório central (SVN) ao término do seu trabalho. Temos também a vantagem de poder compartilhar repositórios locais como já comentado aqui.

Para que isso seja possível, você usará o comando git-svn, que já vem na instalação do git para MacOSX mas, não está no PATH do seu sistema. Para usá-lo você deve incluir o diretório /usr/local/git/libexec/git-core/ no PATH. Para fazer isso, coloque a linha abaixo no final do seu arquivo ~/.bash_profile:

export PATH=$PATH:/usr/local/git/libexec/git-core/

Se você usa linux, o apt-get (debians like) ou yum (red hat like) tem os pacotes para instalação.

Para começar, faça o clone do seu repositório do SVN usando o comando:

$ git-svn clone {endereço do repositório SVN}

Se seu repositório for autenticado ele vai pedir usuário e senha sem grandes complicações. Após isso, basta seguir a sequência básica de uso:

1. Crie um branch para trabalhar em sua funcionalidade:

$ git checkout -b {nome da sua funcionalidade/estória/caso de uso/ticket/etc...}

2. Escreva seu código e faça commit no seu repositório local (você pode fazer o commit várias vezes antes de terminar o trabalho, inclusive, recomendo que você faça isso):

$ git commit -am "sua mensagem do commit"

3. Quanto terminar o desenvolvimento (não esqueça de comitar), faça checkout no branch master:

$ git checkout master

4. Faça o merge do seu branch com o master (o parâmetro –squash transforma todos os commits do seu branch em apenas um commit, bem legal):

$ git merge --squash {nome da sua funcionalidade/estória/caso de uso/ticket/etc...}

5. Comite no branch master:

$ git commit -am "sua mensagem do commit"

6. Envie para o SVN:

$ git-svn dcommit

Para manter sua cópia de trabalho atualizada use o comando:

$ git-svn rebase

Não tive problemas até o momento com essa abordagem. Algumas pessoas questionaram o motivo de criar um branch para cada funcionalidade. Eu considero isso muito importante quando você volta e meia tem que fazer algum ajuste em outra coisa no sistema bem no meio do desenvolvimento. Com isso, basta você criar outro branch, fazer suas alterações e comitar no SVN, não influenciando no trabalho que você ainda está fazendo. Pra mim, no dia-a-dia essa é a maior vantagem do uso do git.

Este artigo foi inspirado/baseado nas referências abaixo:

March 28th, 2010

Participei ontem da mesa redonda no 3º Workshop do PHPMS na qual o tema foi: “O perfil do programador PHP no MS“. O Bruno PorKaria foi quem coordenou e contamos também com a participação do Zé Ricardo. Tivemos várias perguntas dos participantes e os assuntos foram divididos em tópicos para facilitar a discussão. Vou resumir o que disse para cada assunto:

Perfil do Programador

Nesse assunto não é novidade, quem quer ser um bom programador precisa antes de tudo gostar de programar e se dedicar para melhorar sempre. Atitudes que se destacam:

  • Leitura de livros, notícias, blogs, twitter, sobre programação;
  • Participação de eventos (regionais, nacionais e internacionais), fóruns ou listas de discussão, grupos de usuário e comunidades;
  • Desenvolvimento de projetos open-source e/ou pessoais, invista nas suas idéias;
  • Aprender inglês (não somente técnico) e pelo menos uma nova de linguagem de programação por ano;
  • Escreva um blog pessoal ou no blog da sua empresa ou em um blog coletivo;

Hoje todas as empresas querem ser “Ágeis” e para ser um desenvolvedor Ágil você vai precisar de muitas habilidades multifuncionais como: Análise de requisitos, falar com o cliente, saber testar, desenvolver dirigido por testes, trabalhar em equipe (e pares!), se divertir!, além de uma constante vontade de melhorar sua forma de trabalho.

Marketing Pessoal

Divulgue o que você anda fazendo, abra um tópico em um fórum para obter feedback sobre alguma técnica nova que você está usando ou sobre alguma idéia. Participe de eventos, conheça pessoas, troque idéia com os palestrantes, siga mais pessoas interessantes no twitter (crie um se você ainda não tiver), atualize seu perfil no linked in, submeta palestras em eventos.

Ninguém vai saber que você é bom se não te encontrarem! ;)

Salário

No nosso estado, posso dizer que a média de salários para programadores iniciantes gira em torno de R$ 500,00 a R$ 1.000,00 para estagiários de 8 horas (metade do valor para 4 horas) e de R$ 1.000,00 a R$ 2.000,00 para programadores recém-formados. Conforme sua experiência for crescendo é natural que seu salário acompanhe. Só defina bem claramente quais são seus objetivos e suas especialidades. Tenha em mente que não é correto que um programador que queria ganhar mais tenha que virar um gerente de projeto ou algo do tipo. Seja um ótimo programador e gere valor para sua empresa que com certeza você será valorizado. Se não for, procure outro lugar para trabalhar!

Empreendedorismo (freelancer)

Neste ponto, haviam várias dúvidas sobre o quanto cobrar pelo seu serviço de freelancer. Pense no seguinte, um freelance geralmente será feito no seu tempo livre, logo, você está abrindo mão de outras atividades para ganhar um dinheiro extra. Pense também que esse tipo de serviço poder acarretar em um cliente no seu pé durante muito mais tempo que você previa. A recomendação é: Cobre 3 ou 4 vezes mais do que você ganha (ou ganharia) em um emprego fixo. Se você ganha R$ 1.000,00, seu valor hora gira em torno de R$ 6,00, logo recomendo que você cobre de R$ 20,00 a R$ 25,00 por hora. Calcule quanto tempo você deve terminar o serviço e deixe uma margem para os famosos ajustes após o término do projeto.

Sobre abrir o próprio negócio, aí os vôos já são maiores. Procure empresas que você possa se espelhar, que faça alguma coisa que você ache muito legal e acima de tudo, estude seu mercado e estude empreendedorismo. Saiba onde você vai pisar e não tenha medo de tentar. Você não precisa sair do seu emprego atual para abrir seu próprio negócio, considere fazer isso no seu tempo livre e teste se suas idéias funcionam!

Finalmente, você também pode dar aulas. Procure empresas que dão cursos sobre alguma área que você entende e faça contato com eles. Ofereça novos cursos, novas idéias, forme grupos para dar aula gratuitamente. Isto é, mete a cara!

Lembre-se de sempre priorizar trabalhos onde você aprenda alguma coisa. Não adianta nada você fazer sempre o mesmo serviço como um robô. Invista em projetos usando alguma coisa que você não conheça, se arrisque!

Ainda sobre o evento, gostaria de recomendar a palestra do Gabriel Novaes sobre WordPress SEO que realmente foi bastante informativa e relevante dando exelentes dicas sobre o assunto! O Gilherme Blanco também falou muito bem sobre seu trabalho com o Doctrine, mas os papos nos intervalos foram muito mais bacanas, o cara tem bastante experiência para dividir!

PS: O pós-evento, tradicionalmente conhecido como #PHPINGA foi histórico. Acompanhe o twitter do pessoal do grupo que você verá as fotos e acontecimentos!

March 26th, 2010

Hoje fiquei em dúvida sobre como trabalhar em um projeto com vários branches remotos no git. Gostaria de fazer checkout de um dos branches e trabalhar nele a partir daí.

Encontrei a solução no stack overflow (o meu problema era mais simples que o do link):


$ git clone {endereço do seu projeto}

# agora vou listar todos os branches, locais ou remotos
$ git branches -a

# agora vou fazer checkout de um branch em específico
$ git checkout {servidor, geralmente origin}/{nome do branch}

Com isso ele já atualiza os arquivos para a revisão do branch em questão! Espero que essa dica seja útil para alguém, pois pra mim servirá como um ótimo lembrete!

March 22nd, 2010

Muito tem se falado sobre desenvolvimento ágil como uma forma de aproximar mais a equipe de desenvolvimento do seu cliente/usuário. O objetivo é sempre um feedback mais rápido obtido por meio de entregas mais rápidas.

Porém, muitas pessoas do mercado (leia-se: donos de empresa) não entendem muito bem o que é um feedback do cliente. Não procurei nenhuma pesquisa sobre o assunto, mas tenho certeza que sempre haverá clientes regularmente satisfeitos, ou insatisfeitos mesmo, com seu produto. Destes, uma parcela mínima se dará ao trabalho de te passar esse feedback.

Pense no seu dia-a-dia usando vários softwares em seu computador. Eu tenho certeza que a maioria das pessoas tem pequenas sugestões que poderão fazer uma diferença enorme no quesito produtividade, satisfação ou (melhor ainda) admiração pelo seu produto.

Estou escrevendo isso após analisar um episódio que aconteceu comigo recentemente que gostaria de transcrever aqui para exemplificar o que estou falando:

Há pouco mais de três meses tenho usado um software on-line que me deixou bastante satisfeito, visto que já havia tentado várias soluções similares, mas não havia encontrado algo que me atendesse. Animado com o produto, e após alguns meses de uso, percebi que poderia colaborar com algumas pequenas sugestões que facilitariam muito meu uso e até mesmo algumas delas seria eliminar algumas coisas que na minha opinião não estavam me ajudando.

Resolvi mandar um e-mail para o pessoal de suporte me oferecendo para colaborar com sugestões e até mesmo atuar como beta-tester de novas versões. Segue a mensagem:

Olá!
Venho usando o software de vocês* há 2 meses e estou gostando muito do sistema. Também sou desenvolvedor de software e gostaria de fazer uma proposta para vocês: Como estou usando o sistema, tenho percebido várias melhorias que facilitariam bastante minha vida, e me ofereço para trabalhar com vocês como beta tester e sugerindo melhorias. Naturalmente, peço em troca a isenção da mensalidade**, o que acredito não ser um grande problema para vocês!
Aguardo contato!

Dois dias depois recebi a seguinte resposta:

Olá Saulo,
Ficamos muito contentes que esteja gostando do sistema. Por enquanto não estamos precisando de beta testers pois já temos pessoas trabalhando nesta área e nossa lista de funcionalidades a serem implementadas já está definida para mais um mês de trabalho. Então sugestões neste momento não serão de grande valia pois estas funcionalidades tem prioridade por agora.
De qualquer forma agradeço a proposta.

Realmente, as pessoas (leia-se: donos de empresa) reclamam bastante quando perdem clientes, ou não cumprem suas metas, mas deixam ótimas oportunidades de relacionamento com clientes passar bem na sua frente. Tenho aprendido que as pessoas querem fazer parte do negócio, mesmo sem ganhar nada. Nós queremos indicar para todos os amigos aquele produto bacana que acabamos de descobrir.

Li hoje no blog do Paulo Vasconcellos, alguns trechos do livro REWORK da 37 signals (já pedi o meu!). Gostaria de citar um deles que fala exatamente sobre isso:

Todas empresas têm clientes. As sortudas têm fãs. Mas as mais felizardas têm uma audiência. E audiência pode ser sua arma secreta.

Ao invés de correr atrás de pessoas, você quer que as pessoas venham atrás de você. Uma audiência sempre retorna – por vontade própria – para saber o que você tem a dizer. E este é o mais receptivo grupo de clientes ou clientes potenciais que você vai ter.

Se eles gostarem do que você tem a dizer, muito provavelmente gostarão também do que você tem a vender.

Quando você constrói uma audiência, não tem que pagar pela atenção dela – ela a dá para você. E isso é uma baita vantagem.

Asterísticos…:

* Retirei o nome da empresa por motivos de confidencialidade, quero contar o milagre, mas sem citar o santo ;)
** A mensalidade custa R$ 12,00, resolvi “pedir” algo em troca como forma de valorizar meu trabalho e ter um maior comprometimento com minha proposta.

March 17th, 2010

Estou trabalhando em um projeto que pretendo usar Magento e o sistema de Pagamento do pagseguro. O legal é que existe um módulo para integração do PagSeguro com o Magento, o ruim é que esse módulo só é compatível com a versão 1.3 do magento, que atualmente está na versão 1.4.

OK, vamos instalar o último release da versão 1.3, que é 1.3.2.4. O detalhe é que não é tão simples assim, mas nada que uma boa pesquisa não resolva. Segue abaixo o procedimento para fazer a instalação dessa versão específica via SSH (siga os passos dentro do diretório public_html – ou algo semelhante – do seu servidor):

wget http://www.magentocommerce.com/downloads/assets/1.3.2.4/magento-1.3.2.4.tar.gz
tar -zxvf magento-1.3.2.4.tar.gz
mv magento/* magento/.htaccess .
chmod o+w var var/.htaccess app/etc
chmod -R o+w media
./pear mage-setup .
./pear install magento-core/Mage_All_Latest-1.3.2.4
rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
rm -rf magento/ magento-1.3.2.4.tar.gz

Solução encontrada em http://www.magentocommerce.com/boards/viewthread/77205/ com pequenas adaptações feitas.

March 2nd, 2010

Estou começando a usar Git de verdade em um projeto da Agence e já de início me deparei com uma situação que o SVN não atenderia. Estamos desenvolvendo uma prova de conceito e ainda não está pronto para enviar ao servidor central, porém, gostaria de compartilhar minha versão com outro desenvolvedor que seguirá uma linha diferente da minha.

Com o SVN, enviaria pra ele um .zip do meu projeto, mas como estamos usando um DCVS podemos fazer isso com os recursos do Git. Primeiramente, devo rodar um processo na minha máquina que permitirá outra pessoa dentro da mesma rede acessar meu repositório usando o protocolo git. Existem outras opções para compartilhar repositórios, veja aqui mais detalhes. Para iniciar o git-daemon usei o comando abaixo:

git daemon --verbose --export-all --enable=upload-pack --enable=receive-pack --base-path=/Users/sauloarruda/Projetos/Users/sauloarruda/Projetos/sauloarruda.eti.br/libres/libres-php/.git

E o outro desenvolvedor simplesmente usou o comando abaixo para clonar meu repositório. O legal nesse caso é que ele consegue pegar minhas atualizações com git pull, mas quando ele faz um commit as mudanças não são feitas no meu repositório.

git clone git://172.20.12.180/sauloarruda.eti.br/libres/libres-php/.git

Referências: