Atrasado, mas em tempo: 1 ano de Lucidus
Pela falta de tempo estou um pouco atrasado, mas ainda em tempo. Desde novembro do ano passsado – passou muito rápido – tenho trabalhado fulltime no Lucidus. Todos os agradecimentos necessários foram feitos, então resta ressaltar a importancia deste projeto para mim, como desenvolvedor, profissional, pessoa.
Este projeto me mostrou como tdd e as boas práticas de programação são essenciais para manutenção da qualidade de um projeto de software, independentemente de qual metodologia de desenvolvimento está sendo utilizada. Antes de participar de um projeto onde essas práticas sejam largamente utilizadas e encorajadas é difícil perceber sua importancia. A partir do momento em que se desenvolve a cultura, ela se torna quase uma obsessão. Hoje o uso de testes e o refactoring estão no sangue e só serão substituídos por uma idéia melhor… quando ela for inventada ;)
O maior problema de todos nunca é técnico, tem relação com as pessoas e com a comunicação entre elas. Esse projeto me mostrou como melhorar a relação entre nós desenvolvedores na busca pela solução dos problemas. Confirmou que é possível um cliente presente e ativo no desenvolvimento de um projeto de software. Provou que XP não somente funciona, mas como é a melhor forma, a menos burocrática e a mais produtiva de se desenvolver software de qualidade em tempo aceitável.
Hoje estávamos discutindo sobre o projeto no fim do dia. Um dos questionamentos foi: este projeto estaria dando certo se estivesse na mão de outra equipe qualquer que não esta? A conclusão unânime foi: com uma probabilidade muito pequena este projeto daria certo na mão de outra equipe. Será que estamos sendo arrogantes? Não acho.
O fato é que há poucas opções. Esse projeto dificilmente seria pego por uma grande empresa, simplesmente pois uma grande consultoria é caro demais. E qual a situação da maioria das pequenas e médias consultorias de software? Caótica, com desenvolvedores mal qualificados tanto para o desenvolvimento quanto para a comunicação com o cliente. Resultado: softwares lixo! Eu já vivenciei isso!
Este com certeza é um projeto especial. Parabéns!
0 comentários : 26.03.2008 01:56 AM
Invente menos problemas!

O açucar União está com uma campanha publicitária chamada Viva Momentos de União, que possui mensagens que fazem alusão a situações de prazer e bem-estar, realçando a importancia da qualidade de vida e tudo mais. Não se preocupem, não vou escrever sobre açucar!
No projeto Lucidus os nossos sachês de açucar pro café são da União e cada um vem com uma mensagem, entre elas essa que eu achei brilhante:
Invente menos problemas.
E aí isso me remete, como desenvolvedor, ao nosso velho problema de querer sempre complicar as coisas. Há um bom tempo que estudo XP, mas foi somente nos últimos meses que tive a oportunidade de ver na prática como a coisa funciona. Desde que entrei para o projeto Lucidus meus conceitos sobre como desenvolver software mudaram muito, do meu ponto de vista para melhor, claro.
XP possui como um de seus valores a simplicidade. A idéia é implementar as coisas da forma mais simples possível, sem preocupar-se com o amanhã ou com tentar prever quais funcionalidades, métodos ou funções serão necessárias no futuro. É preocupar-se apenas em resolver o problema de agora de forma simples. Isso puxa(ou o inverso) uma das práticas do XP, o design incremental.
Quando estudei engenharia de software tradicional na universidade “aprendi” que o design deveria ser sempre feito antes da implementação. Então deveria-se planejar(o sistema, as classes, os patterns, a base de dados, os relacionamentos, etc) numa tentativa de prever o rumo que o projeto iria levar. Felizmente aprendi cedo de que isso na teoria é muito bonito, mas na prática não funciona. Quer queiram ou não, os projetos de software sempre sofrem mudanças na hora da implementação. Mudanças essas que podem ser drásticas a ponto de toda documentação/projeto que foi escrito não servir mais para nada, por não refletir a realidade do projeto.
Quando em XP dizemos que trabalhamos com design incremental do software, não estamos dizendo que não usamos patterns… Isso apenas quer dizer que decidimos que patterns utilizar na hora em que de fato precisarmos dele. O uso contínuo da refatoração nos leva aos patterns.
Há alguns anos atrás eu trabalhava(leia-se ganhava dinheiro) apenas com Java e, por coincidência ou não, muitas das pessoas com que trabalhei e empresas por onde passei possuiam essa mesma cabeça da engenharia de software tradicional e passavam meses projetando e montando o ambiente de trabalho antes de que qualquer linha de código útil fosse escrita.
Felizmente, mais uma vez, há 2 anos eu descobri o Ruby e o Rails. Descobri que as pessoas que trabalham com Ruby e Rails seguem fielmente a linha da simplicidade, dos princípios DRY e KISS. Descobri que Rails se encaixa como uma luva no XP. Então a frase do dia é:
Invente menos problemas. Use Rails!
2 comentários : 12.01.2008 03:55 PM
Algumas novidades
Parte 1
Hoje visitei o projeto Lucidus que está sendo tocado utilizando XP(Extreme Programming) pelo pessoal da Improve It. Pude ver de perto pela primeira vez um pouco de como é o dia-a-dia do projeto. Pena que não foi na segunda-feira para eu ver a reunião de planejamento semanal, mas não perdi a stand up meeting.
Nas paredes dois quadros brancos grandes e muitos (muitos! mesmo) post its coloridos colados por todos os lados, mas não de forma desorganizada. Realmente aplicar um projeto XP exige muita disciplina dos desenvolvedores e grande habilidade do coach para tratar dos impasses.
Tive oportunidade de participar de uma pequena rodada de pair programming, que se mostrou bem proveitosa, como eu mesmo já havia presenciado em outros momentos e era esperado.
Gostaria de postar aqui uma foto, mas infelizmente não levei a câmera, então essa eu fico devendo. Muito obrigado ao Vinícius e ao Novello pela oportunidade.
Parte 2
Liberei na área de Projetos o sistema de inscrição do Fórum de Software Livre do Rio de Janeiro. É o sistema que será utilizado a partir desse ano e está sendo desenvolvido utilizando Ruby on Rails. Quem quiser contribuir, basta entrar em contato.
Mais novidades para área de projetos em breve!
Parte 3
Todo list para até o fim da semana inclui:
- Deploy com Capistrano
- Desenvolvimento de interfaces administrativas com ActiveScaffold
Postarei sobre esses assuntos em breve!
1 comentário : 16.08.2007 02:05 AM
Meu primeiro TDD
A um mês aproximadamente estudo Extreme Programming e suas práticas. Das práticas que estão relacionadas à programação em si, o desenvolvimento guiado pelos testes é sem dúvida aquela que causa mais impacto em quem está habituado ao “desenvolvimento tradicional”. Estou convencido de que a utilização dessa prática é base para um software de qualidade, livre de bugs. Diante disso resolvi começar meu primeiro projeto usando TDD - Test Driven Development. A plataforma: Rails.
O desenvolvimento guiado por testes ainda não é uma prática muito comum, e na internet achar informação útil também não é tão simples, mesmo tendo o Rails um framework completo de testes embutido. Resolvi comprar o screencast sobre TDD do Peepcode. Além do screencast, o pacote também contém todo o código desenvolvido e alguns plugins. Então se você está começando agora com TDD e Rails vão algumas dicas.
autotest
Esse é essencial. para instalar como um gem:
sudo gem install ZenTest
Dentro do diretório do seu projeto Rails digite:
autotest
Ele fica monitorando quando algum arquivo é alterado e roda o teste necessário, se algum dos testes falha pode-se ver na mesma hora. Basta deixá-lo rodando num terminal a parte de forma que se possa colocá-lo em foreground com um Alt+Tab ou coisa assim.
O desenvolvimento fica bem dinâmico com ele. Você escreve o teste, escreve a funcionalidade e ao salvar o arquivo já está rodando no terminal o teste e você descobre na hora se tá ok ou não.
redgreen
Esse aqui é bom pois colore a saída de texto dos testes. Se algum teste falha ele mostra em vermelho. Se o teste passa ele exibe em verde, então identifica-se visualmente sem precisar ler de fato o retorno na tela.
sudo gem install redgreen
E acrescentar no fim arquivo config/environments/test.rb a linha:
require 'redgreen'
topfunky power tools
É um plugin muito legal pro Rails, que adiciona alguns atalhos para tasks de teste e também adiciona vários métodos de assert além dos que já estão disponíveis no Ruby e no Rails. Para instalar, dentro do diretório vendor/plugins
svn co http://topfunky.net/svn/plugins/topfunky_power_tools/
0 comentários : 30.07.2007 12:57 AM
Encontro do XP Rio
Participei pela primeira vez - na última quinta-feira, dia 17 de maio - do encontro do grupo XP Rio, que visa debater sobre a utilização da metodologia de desenvolvimento XP (eXtreming Programming). Na reunião, Vinícius Teles, junto com a equipe da Improve It e do Grupo Santa Isabel, apresentou o projeto Lucidus, que está sendo desenvolvido para o Grupo utilizando metodologia XP e Ruby on Rails.
Mais detalhes sobre XP você encontra no site da Improve It. Estão disponíveis também as fotos do encontro. E um podcast com o áudio de toda a reunião de duas horas e meia, além dos slides para acompanhamento.
0 comentários : 21.05.2007 12:59 AM


