Qualidade com
Agilidade
para startups
about.me/paulochequeT2015-02-06
links,
dicas,
comandos
about.me/paulocheque
oss,
bibliotecas,
bootstraps
T
CodeArt.io
(em dev)
contato,
Concepção
Criação
Consolidação
Fases de desenvolvimento de uma startup
Ideia
Validação
Protótipos
Versões alfa
(descartáveis)
Concepção da startup
Criação da startup
Versão beta
em produção
(permanente)
Manutenção real
Momento de
decisões
importantes
consolidação
Consolidação da startup
Aumento de clientes e de
escala
Customizações
Mudanças de prioridades
Sistemas em evi...
Estratégia 1: go horse
Desleixo
Qualidade
Produtividade
manutenção
bugs
competitividade
progresso
Criação Consolidação
Qua...
Estratégia 2: perfeição
competitividade
progresso
Criação Consolidação
Perfeccionismo
Qualidade
Produtividade
Tempo
Estratégia 3: equilíbrio
Criação Consolidação
Tempo
Qualidade
Produtividade
Interessante
Qualidade
Produtividade
retrabalh...
O que é qualidade?
correção
desempenho
escalabilidade
segurança
manutebilidade
usabilidade
flexibilidade
...
Qualidade com agilidade
otimizar o todo
adiar
comprometimentos
entregar rápido
boa priorização
equilíbrio
evitar desperdíc...
Implantação
Backend: deploy e rollback
Mobile: geração dos binários, pacotes etc
Script automático e rápido
○ 1 comando ou...
Ferramentas:
○ Fabric (python)
○ Rake (ruby)
○ Gradle (java, scala)
○ xcode-build (iOS)
○ Vagrant
○ Docker
○ ...
Heroku
gi...
Fabric
fab staging deploy
fab production deploy
Implantação: exemplo
Implantação suave
Sem migrações críticas de dados
○ sem risco de perda de dados
Deploys seguros
○ sem derrubar a aplicação...
Qualidade do código
Compare:
A
B
C
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ác...
Dica: Testes de unidade
Testes automatizados ajudam na
criação do design das classes
Está difícil de testar?
Algo está err...
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 implem...
Não desperdice tempo com testes de
baixa qualidade
Testes de código bagunçado devem
ser simples e pouco específicos
(até o...
Testes: exemplos
Arquitetura: crítico!
Arquitetura bagunçada:
○ módulos e classes muito acopladas
○ replicação de código
(copy and paste)
○...
Não adie refatorações
Uma refatoração
de cada vez
Faça rápido,
evite merges
Dicas de arquitetura
APIs
Siga padrões estabelecidos (ex: Rest)
○ Seja consistente com seus padrões
Sua API irá evoluir: versione
/v1/resource/...
APIs
Documentação simples
○ no máximo, casos de teste
Documentação completa e detalhada
somente se ela for aberta para uso...
Dados: crítico!
Dados inválidos geram bugs em
lugares inesperados
Opte por um significado por campo
Não procastine correçã...
Sempre salve horários em UTC
Avalie salvar dinheiro em centavos: é
mais fácil trabalhar com inteiros
Explicite as unidades...
Investimos tempo em
prevenção e qualidade
Não fomos
perfeccionistas nem
desleixados
Código está fácil de
refatorar
Retrosp...
Deploy ágil
Dados coerentes
Retrospectiva: seu sistema está robusto!
Boa manutenibilidade
Gerenciamento de senhas do sistema
e controle de acesso dos usuários
Executar testes de segurança
○ prioridade por nível d...
Processamento pesado? Grande uso
de memória? Use tarefas assíncronas
Muito uso da rede? Otimize e
compacte as mídias
Taref...
Desempenho
Profilers e testes de carga local
Configure servidores Web e de bancos
de dados
Otimize queries, denormalize da...
Com exceção de situações de
emergência, não escale desempenho
ruim causado por erros de código, os
corrija
Mantenha o depl...
Tenha dashboards com tabelas e
gráficos
Faça projeções
Identifique pontos de melhoria
Não desperdice tempo
Meça e acompanhe
Incentive seus
funcionários
CLT Artigo 473 (IV): O empregado poderá deixar
de comparecer ao serviço sem prejuízo do salári...
Próximos SlideShares
Carregando em…5
×

Qualidade com Agilidade para Startups

213 visualizações

Publicada em

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
213
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Qualidade com Agilidade para Startups

  1. 1. Qualidade com Agilidade para startups about.me/paulochequeT2015-02-06
  2. 2. links, dicas, comandos about.me/paulocheque oss, bibliotecas, bootstraps T CodeArt.io (em dev) contato,
  3. 3. Concepção Criação Consolidação Fases de desenvolvimento de uma startup
  4. 4. Ideia Validação Protótipos Versões alfa (descartáveis) Concepção da startup
  5. 5. Criação da startup Versão beta em produção (permanente) Manutenção real Momento de decisões importantes
  6. 6. consolidação Consolidação da startup Aumento de clientes e de escala Customizações Mudanças de prioridades Sistemas em evidência
  7. 7. Estratégia 1: go horse Desleixo Qualidade Produtividade manutenção bugs competitividade progresso Criação Consolidação Qualidade Produtividade retrabalho Tempo
  8. 8. Estratégia 2: perfeição competitividade progresso Criação Consolidação Perfeccionismo Qualidade Produtividade Tempo
  9. 9. Estratégia 3: equilíbrio Criação Consolidação Tempo Qualidade Produtividade Interessante Qualidade Produtividade retrabalho Qualidade Produtividade Interessante
  10. 10. O que é qualidade? correção desempenho escalabilidade segurança manutebilidade usabilidade flexibilidade ...
  11. 11. Qualidade com agilidade otimizar o todo adiar comprometimentos entregar rápido boa priorização equilíbrio evitar desperdício trabalhar preventivamente
  12. 12. Implantação Backend: deploy e rollback Mobile: geração dos binários, pacotes etc Script automático e rápido ○ 1 comando ou 1 click ○ demore segundos ou poucos minutos
  13. 13. Ferramentas: ○ Fabric (python) ○ Rake (ruby) ○ Gradle (java, scala) ○ xcode-build (iOS) ○ Vagrant ○ Docker ○ ... Heroku git push heroku master heroku releases heroku rollback v46 Implantação: exemplo
  14. 14. Fabric fab staging deploy fab production deploy Implantação: exemplo
  15. 15. Implantação suave Sem 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
  16. 16. Qualidade do código Compare: A B C
  17. 17. 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
  18. 18. Dica: Testes de unidade Testes automatizados ajudam na criação do design das classes Está difícil de testar? Algo está errado O código está coeso?
  19. 19. 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
  20. 20. 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
  21. 21. Testes: exemplos
  22. 22. 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
  23. 23. Não adie refatorações Uma refatoração de cada vez Faça rápido, evite merges Dicas de arquitetura
  24. 24. APIs Siga padrões estabelecidos (ex: Rest) ○ Seja consistente com seus padrões Sua API irá evoluir: versione /v1/resource/ Mantenha a flexibilidade
  25. 25. APIs Documentação simples ○ no máximo, casos de teste Documentação completa e detalhada somente se ela for aberta para uso de terceiros
  26. 26. 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
  27. 27. 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
  28. 28. 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?
  29. 29. Deploy ágil Dados coerentes Retrospectiva: seu sistema está robusto! Boa manutenibilidade
  30. 30. 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
  31. 31. 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
  32. 32. Desempenho Profilers e testes de carga local Configure servidores Web e de bancos de dados Otimize queries, denormalize dados
  33. 33. 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
  34. 34. Tenha dashboards com tabelas e gráficos Faça projeções Identifique pontos de melhoria Não desperdice tempo Meça e acompanhe
  35. 35. Incentive seus funcionários CLT 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! paulocheque@gmail.com Desenvolver software de qualidade é criar conhecimento Invista em sua equipe

×