Archive for August, 2009
Retrospectiva
Após alguma reflexão me dei conta de que as coisas andam um pouco “waterfall” por aqui.
Chegou a hora de fechar a primeira iteração, 7 meses depois.
Sendo este post uma retrospectiva desta primeira etapa e também o planejamento daquilo que vem por aí.
Nestes 7 primeiros meses de blog deixei por aqui 34 posts.
O que resulta em uma média de 5 posts por mês. Um número razoável, que só tentarei melhorar tendo certeza de não reduzir a qualidade dos textos.
No formato atual da nuvem de tags, 7 posts abordam Agile (5 deles abordando Scrum), 7 posts expõem algumas Reflexões, e 6 são Reviews de livros. Destancando-se ainda 5 posts sobre Testes, 4 sobre Asp Net MVC e outros 4 sobre Ruby on Rails.
A quantidade de visitas ao blog vem crescendo e o público começa a ganhar forma.
O ritmo do crescimento de visitas é modesto, mas constante.
Nesta retrospectiva ”presto contas” comigo e com os leitores, colocando em evidência os assuntos até então abordados e outros assuntos que passarei a abordar por aqui.
Já mencionei a minha jornada para uma nova tecnologia web, Ruby on Rails.
Um mês depois, tenho trabalhado diariamente com esta tecnologia, devo dizer que estou bastante satisfeito com a minha escolha.
Também já escrevi sobre o porquê Ruby on Rails ter me interessado em outras oportunidades.
O que é importante colocar é que nos próximos meses passarei a escrever menos sobre a plataforma .net (as dicas de asp net mvc ficarão para trás), e mais sobre Ruby on Rails.
O que não significa que estarei me fechando dentro da toca de Ruby on Rails.
Fechar-se a uma comunidade ou plataforma em específico é um erro cometido por muitos desenvolvedores de software.
E já que toquei no assunto, fica aqui a dica para um podcast gravado por uma comunidade de .net (da qual participo) que está de olhos atentos a aquilo que acontece ao redor dela.
Gosto bastante de escrever sobre modelagem e boas práticas no desenvolvimento de software.
Estes textos provavelmente passarão a ter como pano de fundo Ruby on Rails.
Mas boa parte do conteúdo do blog vem sendo agnóstico à tecnologia de minha escolha (vide os textos abordando processos ágeis e também as reflexões sobre desenvolvimento de software em geral).
É provável também que eu passe a escrever mais sobre o meu trabalho diário, o que deve agregar bastante valor ao conteúdo do blog.
Menciono ainda a possibilidade de escrever mais textos em inglês e menos em português, o que espero não ser um problema para você.
Concluindo a retrospectiva, volto a trabalhar duro objetivando aumentar a qualidade deste material e atingir um número cada vez maior de leitores.
Manter um blog sério exige uma grande dedicação.
No entanto, fato é que este trabalho já teria ficado para trás se desempenhá-lo não fosse algo prazeiroso para mim.
Tão importante quanto escrever um texto, é ler o que os outros andam escrevendo.
Além da necessidade de acompanhar outros tipos de materiais, o que aos poucos vou aprendendo a fazer.
E o resultado de tudo isso é imensurável.
Aproveito a oportunidade para convidá-lo a me seguir no Twitter, onde costumo escrever coisas aleatórias quase diariamente. Vez ou outra eu também divulgo por lá algum material de leitura interessante.
Caso você não seja um leitor assíduo de meu blog, conheça mais sobre mim aqui.
Esta é também uma boa oportunidade para você comentar sobre a qualidade daquilo que escrevi nestes primeiros meses.
Até o próximo post!
Restful Web Services – Review
Bloguei menos do que gostaria de ter blogado nas últimas semanas.
Tenho pelo menos meia dúzia de tópicos separados para dissertar sobre, e passarei a me policiar para não deixar de publicar ao menos um texto por semana.
Para não deixar o mês fechar em branco escrevi um review, sobre este excelente livro que li há algumas semanas.

Restful Web Services é um livro de referência não apenas para aqueles que desejam expor web services baseados no conceito REST.
Podemos encará-lo também como um importante material para qualquer desenvolvedor de software que atua com a plataforma web.
Isto porque aquilo que está em questão é o correto aproveitamento da infra-estrutura da web, sobretudo do protocolo http.
Portanto é também da correta utilização da infra-estrutura da web que este material trata.
Além disto, há quem diga que ao aplicar conceitos REST, estamos trabalhando também na modelagem do sistema em desenvolvimento.
Uma idéia que vem fazendo total sentido para mim.
O texto possui um alto enfoque prático, o que facilita bastante o entendimento das idéias apresentadas.
É apresentado ao leitor o conceito de ROA, resource-oriented architecture, envolvendo um conjunto de boas práticas no design de uma arquitetura web.
Aprenda e aplique importantes convenções.
Entenda o que temos a ganhar com e de que maneira implementar este conjunto de práticas.
Saiba como contar com a infra-estrutura da web ao seu favor.
Construa sites e web services mais intuitivos, ajudando aqueles que utilizarão ou trabalharão em cima de seu produto.
Faça da web um lugar melhor!
Iteratividade
Você não precisa fazer um estudo científico para modelar um software (ao menos na maioria dos casos).
E acaba sendo bobagem tentar antever todo e qualquer tipo de problema que seu software deverá atender.
Enquanto você está pensando, o concorrente já pensou, fez e entregou.
Trabalhe e entregue iterativamente, ao invés de construir um frankstein e apresentá-lo ao mundo 12 meses depois.
Realizando entregas parciais você reduz o risco de errar no escopo.
Risco que por muitas vezes nem mesmo é levado em consideração.
Mas os problemas decorrentes desta desatenção são mais comuns do que você imagina.
(Siga este link e veja o gráfico do Standish Group antes de continuar).
Por meio de entregas parciais, as idéias mais exóticas do cliente ficarão pelo caminho.
Porque a cada nova entrega ele aumentará a percepção da quantidade de valor de negócio (e portanto da importância) que estas representam.
Ou seja, a iteratividade ajuda a elucidar qual o próximo passo, aquilo que de fato precisa ser incorporado ao produto.
Me parece óbvio dizer, portanto, que ser iterativo fatalmente resultará em aumento de assertividade, e talvez em redução de desperdício (e custos).
Em pararelo aos ganhos comerciais que a iteratividade pode trazer, existem também benefícios técnicos.
Para realizar entregas parciais, sua equipe trabalhará em features.
Eles se comprometem a entregar uma feature em determinado prazo, direcionando a este trabalho o seu foco.
Através do trabalho em conjunto os problemas vão sendo resolvidos. Em alguns casos, um a um.
O benefício técnico decorre do alinhamento de foco da equipe.
Poucos problemas serão desapercebidos, e todas as expectativas serão colocadas em discussão.
O que gera aumento de percepção de negócio e apropriação conjunta de conhecimentos dentro da equipe.
Refletindo diretamente na qualidade do código escrito pelos desenvolvedores.
Falando em qualidade de código, ela gera ótimos resultados comerciais, também.
Mas escrever sobre isto fica para uma outra oportunidade.
Concluindo.
Trabalhar iterativamente pode aumentar o envolvimento da equipe com o projeto.
Gerando também aumentos de apropriação do produto e de qualidade e efetividade dos trabalhos realizados.
Entregas iterativas aumentam as chances de atender as expectativas do cliente.
Se eu te peço um produto hoje e você me entrega daqui um ano, por que diabos você tem tanta certeza de que eu ainda quero exatamente o mesmo produto?
(Se é que você entendeu perfeitamente aquilo que eu pedi).
Ah, eu já ia me esquecendo.
Acabei de vender para você idéias ágeis, completamente contidas em um negócio chamado Scrum.
Mas seria um equívoco pedir para você adotar Scrum, sem te explicar, sem maiores cerimônas, o que é Scrum.
Você nem mesmo precisa chamá-lo de Scrum.
É melhor nem tentar
Então você escolheu trabalhar como programador.
Me permita falar um pouco sobre você.
Você adora tecnologia e é autodidata, além de gostar de estudar.
Por isto muitas vezes se pega estudando alguma coisa nova, sendo que não existe momento inapropriado para isto.
Você se fascina a cada desafio encontrado.
Porque superar desafios é o que você sabe fazer.
E a sensação de deixá-los para trás é a mesma da conquista de uma medalha de ouro.
Você acabou tendo que ficar fluente em inglês, porque sem isto seria extremamente difícil acompanhar as tendências da indústria.
E estudar inglês foi um ótimo desafio.
Você sabe aonde encontrar referências quando precisa encarar o desconhecido (algo que vez ou outra acontece).
E sabe que não será nada fácil estar um dia entre os melhores.
Mas você quer estar lá.
Porque você gosta do que faz.
E você não se contenta em fazer as coisas de qualquer jeito.
Porque você se preocupa com seu trabalho.
Se é para fazer, que seja bem feito.
Quando você se deparar com um colega de trabalho incompetente, você lamentará.
Por mais uma pessoa que escolheu a profissão errada.
Em um país de disparidades, há quem se seduza ao enxergar um mercado atraente e ainda em amadurecimento.
O que estas pessoas esquecem, é que existe muita coisa em jogo na escolha da profissão.
Você passou longe de ter este problema.
Porque você gosta de sentar no computador e transformar as idéias do seu cliente em algo palpável.
Porque no final do dia não importa quantas idéias malucas o seu cliente teve, nem quantos obstáculos se colocaram na sua frente.
O que importa é que você passou mais um dia fazendo aquilo que você sabe e gosta de fazer.
Se você escolheu recentemente atuar como programador e eu deduzi corretamente o seu perfil, mergulhe de cabeça nesta profissão, e em pouco tempo você saberá se deve ou não seguir em frente.
Caso contrário, é melhor nem tentar.
É melhor nem tentar porque você será infeliz trabalhando em algo exigente, que não tem a ver com você.
Ofuscando e envergonhando aqueles que escolheram a profissão pelo motivo certo.
Se você não possui o perfil e tentou antes de ter a chance de ser avisado, quem sabe ainda esteja na hora de reconsiderar.
A não ser que para você tudo o que importa é o depósito do final do mês.