Qualidade com Agilidade para Startups

35
Qualidade com Agilidade para startups about.me/paulocheque T 2015-02-06

Transcript of Qualidade com Agilidade para Startups

Page 1: Qualidade com Agilidade para Startups

Qualidade com Agilidadepara startups

about.me/paulochequeT2015-02-06

Page 2: Qualidade com Agilidade para Startups

links, dicas,

comandos

about.me/paulocheque

oss, bibliotecas, bootstraps

TCodeArt.io (em dev)contato,

Page 3: Qualidade com Agilidade para Startups

Concepção

Criação

Consolidação

Fases de desenvolvimento de uma startup

Page 4: Qualidade com Agilidade para Startups

Ideia

Validação

Protótipos

Versões alfa(descartáveis)

Concepção da startup

Page 5: Qualidade com Agilidade para Startups

Criação da startup

Versão betaem produção(permanente)

Manutenção real

Momento de decisões importantes

Page 6: Qualidade com Agilidade para Startups

consolidação

Consolidação da startup

Aumento de clientes e de escala

Customizações

Mudanças de prioridades

Sistemas em evidência

Page 7: Qualidade com Agilidade para Startups

Estratégia 1: go horse

Desleixo

Qualidade

Produtividade

manutençãobugs

competitividadeprogresso

Criação Consolidação

Qualidade

Produtividade

retrabalho

Tempo

Page 8: Qualidade com Agilidade para Startups

Estratégia 2: perfeição

competitividadeprogresso

Criação Consolidação

Perfeccionismo

Qualidade

Produtividade

Tempo

Page 9: Qualidade com Agilidade para Startups

Estratégia 3: equilíbrioCriação Consolidação

Tempo

Qualidade

Produtividade Interessante

QualidadeProdutividade

retrabalho

Qualidade

Produtividade Interessante

Page 10: Qualidade com Agilidade para Startups

O que é qualidade?correção

desempenho

escalabilidade

segurança

manutebilidade

usabilidade

flexibilidade

...

Page 11: Qualidade com Agilidade para Startups

Qualidade com agilidadeotimizar o todo

adiar comprometimentos

entregar rápido

boa priorização

equilíbrio

evitar desperdício

trabalhar preventivamente

Page 12: Qualidade com Agilidade para Startups

ImplantaçãoBackend: deploy e rollbackMobile: geração dos binários, pacotes etc

Script automático e rápido○ 1 comando ou 1 click○ demore segundos ou poucos minutos

Page 13: Qualidade com Agilidade para Startups

Ferramentas: ○ Fabric (python)○ Rake (ruby)○ Gradle (java, scala)○ xcode-build (iOS)○ Vagrant○ Docker○ ...

Heroku

git push heroku masterheroku releasesheroku rollback v46

Implantação: exemplo

Page 14: Qualidade com Agilidade para Startups

Fabric

fab staging deployfab production deploy

Implantação: exemplo

Page 15: Qualidade com Agilidade para Startups

Implantação suaveSem migrações críticas de dados

○ sem risco de perda de dados

Deploys seguros○ sem derrubar a aplicação○ manter duas versões em execução

simultâneamente○ evitar incompatibilidades de versões

Page 16: Qualidade com Agilidade para Startups

Qualidade do códigoCompare:A

B

C

Page 17: Qualidade com Agilidade para Startups

Clareza e simplicidade do código evita desperdício de tempo

Mas o mais importante é a coesão e o design

Código coeso é fácil de refatorar

Qualidade do código

Page 18: Qualidade com Agilidade para Startups

Dica: Testes de unidadeTestes automatizados ajudam na criação do design das classes

Está difícil de testar? Algo está erradoO código está coeso?

Page 19: Qualidade com Agilidade para Startups

Testes não são para encontrar erros, são para prevenir erros

O código de um teste deve ser simples, curto, fácil de implementar, independente e rápido

Testes de unidade

Page 20: Qualidade com Agilidade para Startups

Não desperdice tempo com testes de baixa qualidade

Testes de código bagunçado devem ser simples e pouco específicos(até o código ser refatorado)

Dicas sobre testes

Page 21: Qualidade com Agilidade para Startups

Testes: exemplos

Page 22: Qualidade com Agilidade para Startups

Arquitetura: crítico!Arquitetura bagunçada:○ módulos e classes muito acopladas○ replicação de código

(copy and paste)○ gambiarras○ bugs○ difícil manutenção

Page 23: Qualidade com Agilidade para Startups

Não adie refatorações

Uma refatoraçãode cada vez

Faça rápido,evite merges

Dicas de arquitetura

Page 24: Qualidade com Agilidade para Startups

APIsSiga padrões estabelecidos (ex: Rest)○ Seja consistente com seus padrões

Sua API irá evoluir: versione/v1/resource/

Mantenha a flexibilidade

Page 25: Qualidade com Agilidade para Startups

APIsDocumentação simples○ no máximo, casos de teste

Documentação completa e detalhada somente se ela for aberta para uso de terceiros

Page 26: Qualidade com Agilidade para Startups

Dados: crítico!Dados inválidos geram bugs em lugares inesperados

Opte por um significado por campo

Não procastine correção de dados○ Dados obsoletos se tornam uma incógnita

Page 27: Qualidade com Agilidade para Startups

Sempre salve horários em UTC

Avalie salvar dinheiro em centavos: é mais fácil trabalhar com inteiros

Explicite as unidades dos campos: cents_of_dollar, area_m2, distance_cm

Dicas de persistência

Page 28: Qualidade com Agilidade para Startups

Investimos tempo em prevenção e qualidade

Não fomos perfeccionistas nem desleixados

Código está fácil de refatorar

Retrospectiva: evitamos desperdício

E o desempenho? escalabilidade? segurança?

Page 29: Qualidade com Agilidade para Startups

Deploy ágil

Dados coerentes

Retrospectiva: seu sistema está robusto!

Boa manutenibilidade

Page 30: Qualidade com Agilidade para Startups

Gerenciamento de senhas do sistema e controle de acesso dos usuários

Executar testes de segurança○ prioridade por nível de gravidade○ injeção de código, cross-site scripting,

clickjacking

Segurança

Page 31: Qualidade com Agilidade para Startups

Processamento pesado? Grande uso de memória? Use tarefas assíncronas

Muito uso da rede? Otimize e compacte as mídias

Tarefas lentas e repetidas? Use cache

Desempenho

Page 32: Qualidade com Agilidade para Startups

DesempenhoProfilers e testes de carga local

Configure servidores Web e de bancos de dados

Otimize queries, denormalize dados

Page 33: Qualidade com Agilidade para Startups

Com exceção de situações de emergência, não escale desempenho ruim causado por erros de código, os corrija

Mantenha o deploy simples

Escalabilidade

Page 34: Qualidade com Agilidade para Startups

Tenha dashboards com tabelas e gráficos

Faça projeções

Identifique pontos de melhoria

Não desperdice tempo

Meça e acompanhe

Page 35: Qualidade com Agilidade para Startups

Incentive seus funcionáriosCLT Artigo 473 (IV): O empregado poderá deixar de comparecer ao serviço sem prejuízo do salário:por 1 (um) dia, em cada 12 (doze) meses de trabalho, em caso de doação voluntária de sangue devidamente comprovada;

Obrigado! [email protected]

Desenvolver software de qualidade é criar conhecimento

Invista em sua equipe