Post on 29-Nov-2014
description
VELOZES E FURIOSOS
COM EXTREME
PROGRAMMING! Essa palestra é para empresas de pequeno e médio porte que querem aumentar a velocidade sem perder a qualidade! Entregando sempre o maior valor agregado ao seu clientes.
Mobile & Cloud Systems
Mobile & Cloud Systems
Quem sou?
• Binhara@gmail.com
• Mestre em Tecnologia (UTFPR)
• Bacharel em Processamento de Dados
• Desenvolvedor a mais de 18 anos....
• Mono Hacker desde 2003
• Linguagens Fluente: C#, Java, PHP,
• Outras: C++, C , Pascal, Python, Ruby, Boo, etc..
• Mobile Xamarin Authorized Consulting Partner para o Brasil
• Atualmente atua como desenvolvedor/consultor/parceiro:
Mobile & Cloud Systems
Foco da Palestra
• Como aumentar a velocidade com Qualidade ?
• Falar sobre alguns conceitos de XP
• Depoimentos sobre situações ocorridas na prática.
• O que se deve fazer .
• O que não devemos fazer.
• Falar de algumas Pérolas encontradas no caminho
Mobile & Cloud Systems
Inicio do XP no Brasil
• Por volta de 2001 com o primeiro Evento XPBrasil
• Divisor de águas primeiro o Prevayler, XP, Sneer..
• O que vem depois???
• Criado pela A Lenda Brasileira:
• Klaus Wuestefeld
Mobile & Cloud Systems
Como Você define XP ????
• Lançando a campanha !!!
• Pergunte ao Klaus!!!!
Mobile & Cloud Systems
Como eu definiria XP hoje?
• Atitude
• Garra para vencer
• Disciplinado
• Organizado
• Interativo
• Comprometido
• Rotineiro
• Comportamental
•
Mobile & Cloud Systems
Caso Vivenciado
• Decisões da empresa afetam direto o andamento do
projeto.
• Projeto novo:
• Duas equipes separadas em cidades diferentes
• Equipe técnica e cliente em uma cidade, equipe de
desenvolvimento em outra
• Equipe nova de 12 pessoas e crescendo
• Problemas de gestão
• Problemas de comunicação
• Problemas de especificação
Mobile & Cloud Systems
Como aumentar a velocidade sem perder
qualidade
• Primeiros passos, escolha bem sua equipe:
• Cuidado com um time muito inexperiente.
• Cuidado com pessoas experientes e indisciplinadas.
• Cuidado com a formação de panelinhas.
• Não contrate grupos desertores.
• Polarização da equipe pode levar a Motim.
• Cuidado com as distorções das práticas e conceitos
• Cuidado com pessoas experientes mas com vícios
• Pessoas Resistencia a tecnologias
Mobile & Cloud Systems
Como começar com XP ???
• XP é comportamental, é preciso começar a praticar .
• Iniciar com algumas práticas e manter a atitude no uso
das práticas.
• Evitar a estrutura comando e controle, buscar o
desenvolvimento de liderança.
• Parta do principio que ninguém conhece as práticas
• Valorize os rituais!!!
• Se não sabe por onde começar, comece pelo testes
automatizados.
• Vá agregando as práticas e medido os resultados.
VALORES DE XP
Mobile & Cloud Systems
Velozes e Furiosos com XP
• Como aumentar a velocidade sem perder qualidade?
• Reforçar diariamente os valores de XP
• Simplicidade
• Comunicação
• FeedBack
• Coragem
• Usando mais práticas de XP em conjunto fazendo com que uma
reforce a outra.
• Automatize tudo que você puder. E o que vocês não puder,
descubra como automatizar.
Mobile & Cloud Systems
Simplicidade
• Não confunda simplicidade com “simplismos”, não
confunda liberdade com libertinagem.
• Pérola: “Não vamos usar interface por que XP diz que deve se
fazer simples!”
• Ser simples não quer dizer que será fácil ou que será
rápido.
• Pérola: “Não usar fabricas porque XP tem que ter o código
Simples!
• As tarefas simples irão naturalmente geral um sistema
complexo. Mas que no fundo é simples.
• Perola: “Para um problema complexo, temos que ter uma solução
complexa!!!”
Mobile & Cloud Systems
Comunicação
• Comunicação do cliente com a equipe
• Descrição das histórias
• Testes de aceitação
• Integração as equipes remotas
• TV com Web Conferencia – Janela do Além
• Board de atividades eletrônico
• Falta de comunição e interação é um grande vilão na
geração dos problemas da equipe.
Mobile & Cloud Systems
Coragem
• Para aceitar a orientação dos mais experientes
• Para assumir que os problemas existem
• Para continuar a escrever teste
• Pérola: “Não vai dar tempo de escrever o mocks, tira os mocks”
• Para trabalhar em parecer
• Para manter a rotina diária
Mobile & Cloud Systems
FeedBack
• O retorno do cliente é chave para aumentar o ânimo da
equipe e fazer o projeto avançar.
• Falta de tempo por parte do cliente em dar feedback
atrapalha e muito o andamento correto do projeto.
• Quando mais rápido o feedback é melhor.
• Quando mais próximo cliente melhor
• Feedback rapido com o clientes
PRÁTICAS DE XP
Mobile & Cloud Systems
Planning Game
• É o planejamento do jogo
• Planejamento das Interações
• Planejamento das StartUP Meeting
• Medição da velocidade da equipe
• Formação dos pares
• Distribuição das Tarefas
• Cuidado com as abordagens do passado
• Modelo de Dados, Documentação hostensiva
Mobile & Cloud Systems
Testes Automatizados
• Teste tudo que for possível.
• TDD, Teste de unidade,
• Realizar testes em camadas
• Testar Rotas das aplicações web
• Testar chamadas dos controles ao Model
• Testar o Model e regras de negócio
• Fazer teste de Integração
• Fazer testes unitários
• Teste de Interface (Ex: Selenium)
• Meta para cobertura de testes
Mobile & Cloud Systems
Pair Programing
• Difícil de implementar
• Puxa outras práticas
• Propriedade coletiva de código
• Aumenta foco e concentração
• Menos bugs
• Cuidado com PairSleep!!!
Mobile & Cloud Systems
Move People Around
• Mover as pessoas nas equipes
• Torne o ambiente divertido
• Ajudas as pessoa a manter o foco
• Socializar o conhecimento da equipe
• Cuidado com a disposição do ambiente
• Não perde tempo ao trocar as pessoas
• A propriedade coletiva também se aplica as cadeiras
Mobile & Cloud Systems
Small Release
• São planejado pequenos releases.
• Este são disponibilizados ao clientes
• Recolhido um FeedBack Rápido
• O cliente tem a opção de priorizar, remover ou adicionar
funcionalidades
• O cliente pode a mudar de idéia.
Mobile & Cloud Systems
Cliente mais perto possível
• Se possível sendo um membro da equipe.
• Busque feed back o mais breve possível.
• E quando o cliente é o dono da empresa que desenvolve
o software?
• Ter cliente próximo significa que ele também tem que
trabalhar!!!!
• Dono da empresa de software quer os resultados mas
nem sempre está interessado em seguir as práticas de
XP.
PADRÕES DE PROJETO
E FERRAMENTAS
Mobile & Cloud Systems
Padrões de Projetos
• Boas praticas podem facilitar deixar a aplicação mais
flexível e aumentar a produtividade e aumetar a
qualidade do código.
• IoC – Inversão de Controle
• DI - Injeção de Dependências
• Factory
• Mocks
Mobile & Cloud Systems
Padrão IoC
• "Devemos delegar a tarefa de criação de um objeto (classe Pedido) a uma outra entidade como uma outra classe, interface, componente, etc. de forma a termos um baixo acoplamento e minimizar a dependências entre os objetos.“
• SRP - Single Responsability Principle que diz o seguinte:
• "Deve existir um e somente UM MOTIVO para que uma classe mude"
Mobile & Cloud Systems
Padrão IoC
• Uma classe deve ser implementada tendo apenas um
único objetivo.(uma única responsabilidade)
• Quando uma classe possui mais que um motivo para ser alterada
é por que provavelmente ela esta fazendo mais coisas do que
devia, ou seja, ela esta tendo mais de um objetivo.
• inverter o controle na classe Cliente e em vez de deixar a
responsabilidade da criação da classe Pedido para a
classe Cliente vamos dar a ela esta dependência.
• Inverter o controle utilizando a injeção de
dependência.
Mobile & Cloud Systems
Mocks
• São objetos que simulam o comportamento de objetos
reais de forma controlada.
• São Objetos Fake, criados para testar um pedaço de
código. Objeto
Real
MOCK
Mobile & Cloud Systems
Numa equipe XP
• 2 duplas estão iniciando 2 novas atividades.
• Mas a atividade 2, depende da atividade 1.
• O que fazer nesse caso?
• 1) A equipe A trabalha e equipe B sai de folga .
• 2) A equipe A trabalha e equipe B documenta a atividade 2
• 3) Equipe B pega uma outra atividade que não dependa da
atividade 1
• 4) Chama o gerente por que ele priorizou errado as tarefas
• 5) Não sei. Pergunta pro Klaus.
Mobile & Cloud Systems
Cobertura de Testes
Mobile & Cloud Systems
Git + GitHub
• Versionamento distribuído
• Trabalho com múltiplos branches.
• Grande aumento de produtividade.
Mobile & Cloud Systems
Redmine
• Plug-in para scrunm
Mobile & Cloud Systems
TeamCity
• Suporte Java, C#, Ruby
• Notificações por : Email, jaber, Windows Tray
Mobile & Cloud Systems
Build Server...
Mobile & Cloud Systems
Build Server...
Mobile & Cloud Systems
Commit , após teste!
Mobile & Cloud Systems
TeamCity
• Configuração do build
Mobile & Cloud Systems
Código duplicado
Mobile & Cloud Systems
Cobertura de Testes
Mobile & Cloud Systems
Histórico de Builds
Mobile & Cloud Systems
Integração com GIT
Mobile & Cloud Systems
Mobile & Cloud Systems
Duvidas???? Pergunte pro Klaus...
• Obrigado!!!
Mobile & Cloud Systems
Sorteio....