Marcos Sousa’s Blog

Blog sobre desenvolvimento de software
  • rss
  • Home
  • Sobre

Comentários livros: Agile Sofware Development

Marcos Sousa | July 1, 2009

Nos últimos três meses tive a oportunidade de ler dois ótimos livros relacionados a desenvolvimento ágil. Com abordagem envolvente ambos os livros conseguiram manter minha concentração nas madrugas mesmo após dias estressantes no trabalho. Acredito após a leitura dos dois livros acabei aperfeiçoando minhas técnicas de desenvolvimento, tanto a nível de design de solftware quanto minha postura diante processos.

O livro Agile Software Development, Principles, Patterns, and Practices escrito pelo Robert Martin aborda alguns conceitos de XP e foca bastante em mostrar as vantagens de usar abordagens TDD com intuito de criar códigos mais legíveis e reutilizáveis. Particularmente, o primeiro estudo de caso foi o melhor, mostra detalhadamente passos de refatoração como nomes de métodos mais claros, extrair classes, métodos. Martin introduz cinco princípios:

  • SRP – Single Responsabity Principle
  • OCP – Open Closed Principle
  • LSP – Liskov Substitution Principle
  • DIP – Dependence Inversion Principle
  • ISP – Interface Segregation Principle

Se você deseja escrever códigos melhores, recomendo ler estes cinco princípios. Além destes cinco princípios, o livro aborda diversos patterns conhecidos da literatura, mas em uma abordagem diferente. E sempre com um estudo de caso para aplicar os patterns abordados. Muito bem estruturado.

Esta semana finalizei a leitura do livro Agile Software Development with Scrum. Quando eu comprei este livro, pensei que ele abordava os conceitos do Scrum. Por outro lado há dicas de algumas atitudes a serem tomadas Daily Meetings, Sprint Plannings que evitam situações que conduzem ao fracasso do projeto.

Do início ao fim do livro há relatos de estudos de casos de sucesso mostrando como o Scrum mudou o rumo de diversos projetos. Este livro ajudou a consolidar minha opinião de que para implantar o Scrum ou qualquer outro método ágil em um projeto é preciso de uma disciplina forte. São muitos mitos a serem quebrados, e dependendo da organização e da maturidade do time é uma tarefa um pouco complicada.

Exemplo: não é fácil reunir-se diariamente no mesmo horário e durante 15 minutos exatos. E por ser uma situação que evidencia para todo o time a produtividade do desenvolvedor, alguns profissionais começam a criar resistência (através de atrasos as reuniões) tornando-se um grande risco durante os primeiros projetos.

É como Ken Schwaber diz em em seu último parágrafo, em outras palavras: “Scrum não é para todos apenas para pessoas dispostas a matar ‘leões’ diariamente”.

Como a vida não pára, agora vou quero aprofundar um pouco mais os meus conhecimentos em Ruby principalmente em Rails. Além de artigos, o user guide, estou começando a ler o livro do Rodrigo Urubatan, e pelas primeiras páginas que já li, o livro parece ser bem legal, assim que finalizar a leitura deixo aqui meus 5 centavos. :)

Comments
2 Comments »
Categories
Agile, Scrum, TDD
Tags
Agile, Scrum, TDD, XP
Comments rss Comments rss
Trackback Trackback

Testes, porque não fazer?

Marcos Sousa | October 10, 2008

Observando o comportamento em vários projetos, pude perceber que grande parte das pessoas não dão muito valor aos testes, e quando valorizam atribui a responsabilidade de testar a outras pessoas. As coisas ainda ficam piores quando chega a pequenas empresas. Pergunte ao dono da padaria que você toma café todos os dias, se eles testaram alguma funcionalidade do software que eles tem antes de colocar em produção? Se a versão tiver algum problema e corromper os dados, a culpa sem sombra de dúvidas será do time de desenvolvimento.

O problema começa no modo como as pessoas projetam o software, dentro de um processo Waterfall, onde cliente não é parte do processo. Neste contexto, o cliente diz o que deseja e depois de 9 meses ele tem um resultado: um software produzido nas “coxas”.

Mesmo em projetos onde existem práticas de testes, muitos deles ainda são ineficientes. O usuário apenas valida as “telinhas” do sistema, e muito pouco em termos funcionalidades. Infelizmente, poucos destes usuários testam o comportamento de entradas de dados inválidos, por exemplo, um campo de CPF aceitar “-1″ como valor, ou um espaço em branco ser um conteúdo válido para um campo obrigatório. Como resultado, o sistema chega a produção, dados inconsistentes são inseridos e a culpa é do desenvolvedor.

Testes unitários é algo que muitos desenvolvedores ainda acham inútil, quando fala em integração contínua, aí acham exagero. Quer um exemplo, pergunte à um programador PHP se ele faz teste unitários. “Faço apenas sites, não sistemas, não preciso disso”, nem fazem idéia de que existe o PHPUnit para este propósito. Mesmo dentro de um obsoleto modelo cascata, cheio de casos de usos, porque não criar testes unitários pelo menos para validar os fluxos principais e alternativos? Pelo menos o fundamental pode ser controlado por um sistema de integração contínua.

Meu objetivo não é falar que práticas, como TDD, são perfeitas. O que eu quero chamar a atenção é importância que o teste tem dentro de um processo de desenvolvimento de software. Aparentemente, gastar algum tempo a mais fazendo testes, pode ser mais eficaz do que ter que corrigir uma falha que foi para produção por pura falta de atenção. Testar não é fácil e rápido, porém corrigir bugs pode ser mais demorado ainda. ;)

Comments
6 Comments »
Categories
TDD, Testes
Tags
Desenvolvimento, TDD, Testes, Waterfall
Comments rss Comments rss
Trackback Trackback

Núvens de tags

Agile Agile2009 Agile Conference Facelets GET Hibernate IDE incompatiblidades Itext Java Java EE Java Magazine Java Server Faces JavaServer Faces Java Vídeo Magazine Jboss jboss-seam-itext Jboss Developer Studio Jboss Seam JDBC type: 7 JPA JSF JSFUnit linux Microsoft No Dialect mapping for JDBC type: 7 Page Actions PostGreSQL RHDS rich:fileUpload Rich Faces RichFaces RichFaces 3.2 Scrum Seam-gen Seam Framework Seam PDF Spring Spring Framework TDD URL Rewrite URL User Friendly Vídeo Aula Variable Resolver XP

Meus últimos tweets

  • Man, NEVER register your domain at mapname.com. The worst site, ever, ever! I spent 2 hours a I didn't get my epp to transfer it! #megafail 22 hours ago
  • @rodrigoy Sabe-se lá, as vezes o cara quer fazer uns springs fora do horário horário comercial! Cliente é cliente hein? 1 day ago
  • Mockito is so simple to use and intuitive too. #mockito #win 2 days ago
  • It's boring when you have to ask someone a favor who doesn't like to help. 2 days ago
  • @gcaixeta Está indo para lá cara? Realmente lá tem estes dois problemas. Ainda falam lá em discada, 100k, 200k #ctbc #fail 2 days ago
  • http://bit.ly/9FJFeh New Blog. Developer Certification WTF? (via @unclebobmartin) 3 days ago
  • "Deve haver umas 50 maneiras de abandonar o seu navegador." Youtube tirando muita onda. http://twitpic.com/170sjn (via @peleteiro) #ftw #win 3 days ago
  • Esquecer a data de aniversário de um grande amigo, que nunca esqueceu do seu aniversário é #megafail #eumeodeio 3 days ago
  • @nepomucenobr EUA e Canadá também tem violência viu! Marca bobeira aí para ver se não assaltado também! 4 days ago
  • @jeveaux O pior de tudo é que 60% dos itens de um restaurante tem carne. Um bar resta pouco além de uma batata =( 4 days ago

Anúcios

Categorias

  • .net
  • Agile
  • Agile Conference 2009
  • Artigos
  • Atualidades
  • c++
  • cinema
  • Django
  • DRY
  • Eventos
  • Flex
  • Formula 1
  • Hibernate
  • IDE
  • Inutilidades
  • Java
  • Java EE
  • Java Server Faces
  • Jboss Seam
  • linux
  • Mac OS
  • Microsoft
  • Open-source
  • Palestras
  • Python
  • RAD
  • RIA
  • RichFaces
  • Scrum
  • Software Livre
  • Spring
  • Spring Annotations
  • TDD
  • Testes
  • Uncategorized
  • Vídeo Aulas

Links recomendados

  • AJ Soluções
  • Ary Júnior
  • Erko Bridee
  • Fragmental
  • Fragmental TW
  • Guilherme Chapiewski
  • Handerson Frota
  • Jeveaux
  • Juliano Carniel
  • Onipresente
  • Passes de Letra
  • PortalJava.com
  • Rafael Carneiro
  • Rafael Pontes

DevMedia Post’s

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox