5. 3 apresentações em 1
* Os Desafios do Desenvolvimento Mobile
* NoSQL
* Projeto de Software
6. Projeto de Software
Real necessidade de se fazer um projeto de
software
“Precisamos abrir mão da qualidade para
entregar mais na próxima release...”
Gerentes de projetos
7. Projeto de Software
“Empurrar o design é um pecado e que todas
as variáveis que indicam isso deveriam ir para
o inferno”
Uncle Bob
9. Projeto de Software
Software com ótimo design custa caro!
Temos que aceitar algumas dívidas, desde que
elas valham a pena.
Toda Dívida tem juros...
Não seja imprudente! Paga a sua dívida o mais
rápido possível!
12. Atualmente...
- O NetFlix recebe mais de 1 bilhão de requisões por
dia.
- Estas requisições são processadas por dezenas de
sistemas internos.
- Como a API do NetFlix suporta diferentes tipos de
dispositivos e ainda permite que os fabricantes
otimizem de acordo com suas necessidades.
17. Amar demais um método pode ser um
problema...
Precisamos ver as coisas como elas
realmente são!
18. Estudos e pesquisas
Não podemos acreditar em tudo que
dizem por ai...
De 1996 trabalhos,
só 36 possuem rigor
científico
(Dyba,T., Dingsoyr,T. Empirical studies of agile software
development: A systematic review)
19. • Grande parte dos estudos feitos com XP
(76%);
• Single-Case (39%) e Multiple-Case (33%)
• 73% dos estudos com iniciantes em agile; só
12% com times maduros;
• 73% dos estudos com profissionais;
(Dyba,T., Dingsoyr,T. Empirical studies of agile software
development: A systematic review)
21. “... a prática de TDD não guia o
desenvolvedor para um bom projeto de
classes de forma automática”
Aniche, Gerosa. Como a Prática de TDD Influencia o Projeto de Classes em Sistemas Orientados a
Objetos: Padrões de Feedback para o Desenvolvedor. 2012
22. Quando o Aniche não usa
TDD...
- Já tem bem claro o projeto da classe
que ele está trabalhando;
-É código que lida com infraestrutura
23. Quando o Aniche não usa
TDD...
- Já tem bem claro o projeto da classe
que ele está trabalhando;
-É código que lida com infraestrutura
Mas ele testa sempre!
31. Complexo e complicado
Você só sabe se esta certo se
experimentar. Não dá para ter certezas
com antecedência.
32. Método Kanban
- Comece como você está hoje
- Visualize seu progresso
- Melhore colaborativamente com técnicas científicas
- Gerêncie o fluxo
- Torne o processo explícito
33. Porque mudanças são tão
difíceis?
- CULTURA
- MEDO
- RISCO
- CONTROLE
- RESISTÊNCIA EMOCIONAL
as pessoas
resistem ser
mudadas
34. “Mude. Mas mude devagar,
porque a direção é mais
importante que a velocidade.”
Clarisse Lispector
42. Empresa que trabalha com
mineração de dados,
Caso de sucesso na
personalização de E-commerce
Chaordic com base no modelo
Trabalham
de ser viços SaaS
44. Lições aprendidas
- Itere rapidamente e em pequenos passos
- Observe o que funciona
- Debugue em produção
- Mude com frequência
- Aprenda a falhar e quebrar as coisas
- Integração contínua ajuda evitar problemas
- Cloud pode viabilizar seus negócios
46. Caso de estudo: UOL
Projeto de missão crítica (Pague Seguro) que
sofreu atrasos e precisou mudar a gestão.
Veio o crescimento que trouxe um enorme
backlog.
47. Crescimento do time
- Melhorar a comunicação;
- Garantir o retorno do investimento;
- Organizar os times por backlog independentes;
- Priorizar por temas;
- Vários times uma só equipe.
48. Lições
- Inclua novos Membros nos times produtivos;
- Retire pessoas produtivas e forme outros times;
- Não crie times só com pessoas novas;
- Em time que esta ganhando e que e mexe;
- Troque os membros constantemente;
- Crie processos criteriosos de contratação;
- Use desenvolvedores nas entrevistas de contratação;
- O time da o feedback para novos integrantes.
49. Mega Scrum
- Sprints de 3 semanas para ajudar a sincronizar as
tarefas;
- Ambientes de homologação;
- Deploy automático;
- Mega planning com líderes técnicos P.O.
- Mega Stand-up (reunião diária) com a equipe
- Reevew e retrospectiva por equipe
- Pré planning (planning dos próximos realeses)
- Mega retrospectiva a cada 6 meses (identificar
problemas comuns entre as equipes e discutir soluções)
- Knowlogde Sharing
55. Alguns cuidados
- Suba as coisas por etapa começando pelo menos
importante;
- Redunde os dados;
- Use criptografia
- Não guarde as chaves no Cloud
- Load Balance (várias zonas) do for importante
- Utilize backup automatizado e teste os backups
- Faça contratos
57. Início...
-> 4 Fases (Local, Networked, Network e GitRPC)
- começou com Grit;
- tiveram que refazê-lo para suportar o
crescimento;
58. Networked
- problemas com distribuição em rede
- mudaram servidores
- alteraram a implementação para distribuição
em rede mas com a aplicação local (Grit)
- latência muito grande
- em resumo fizeram uma escalação horizontal
59. Network
- problemas duplicação de dados no fork;
- alto custo para manter os dados;
- resolveram fazendo shard, mantendo os
dados do projeto principal armazenado em
outro lugar e os forks passaram a ser apenas
ponteiros.
60. GitRPC
- problemas com código bagunçado;
- criaram uma implementação para acessar o
Git via rede;
- diminuiu a latência;
- Cache Logic;
- ainda estão migrando aos poucos.
61. Empresa Feliz
- 108 funcionários a 5 anos e ninguém nunca saiu;
- diminua o motivo das saídas ;
- uma pessoa que sai custa caro, porque uma pessoa nova
demora para começar a agregar valor;
- as pessoas trabalham da maneira que eles gostam. Boa
parte trabalha remotamente aonde quiserem;
- escolhem seu horário de trabalho, ferias, etc.
- as pessoas trabalham a vontade sem stress.
64. Conteúdo
- início do HTML em 1992
- uso de Design na Web
- CSS Zen Garden (site)
- aumento do uso de dispositivos móveis
- como suportar todos os dispositivos sem ter re-
trabalho?
- The Boston Globe foi o primeiro site a usar RWD
- Técnicas para ter um design flexível sem fixar os
tamanhos
66. Lazy Initialization
- ocorre quando sessão é fechada antes de terminar
o acesso aos dados;
- Não faça Eager, pois trará problemas de
performance;
- Pattern Open Session In View ajuda quando
usamos uma mesma request.
67. Cache
- cache de primeiro nível;
- cada request tem uma session, causando muitas
consultas. Configure o cache de segundo nível;
- Caching Strategy (ehCache)
- cache 2nd não guarda hierarquias complexas;
- use o cache 2nd apenas para entidades que não
alteram com frequência;
- cache de consulta (Query Cache), onde a chave é
a consulta + os parâmetros.
68. N+1
- Eager + Join Fetch
- busca em lote (Batch size) é meio termo entre o
Eager e Lazy, porque faz uma adivinhação cega, um
chute;
- subselect.
69. Processamento em lote
- a cada entidade inserida na memória, o Hibernate
cria um foto e coloca no cache de primeiro nível;
- StatelessSession (session de baixo nível) não usa
cache;
- Configurar o bach size no hibernate para ir menos
vezes ao banco.
72. Arquitetura
Open Graph, é uma
forma facilitar a
integração entre
páginas da web e o
próprio facebook. Nas
palavras deles, usando
o Open Graph, você
pode fazer qualquer
página se comportar
- 955 milhões de usuários como um objeto do
- grafo das conexões sociais facebook, com direito a
analytics e tudo.
- esquema de metadados Open Graph
(http://www.modelomental.com.br/web-semantica/conhecendo-o-facebook-open-graph-protocol)
- MySQL (tabelas particionadas)
- tabelas simples com poucos índices e os dados são
armazenados em um array (Blob)
- usam Mencache
- multi-get (trazer tudo em paralelo)
- Preparable
- compilador foi feito em C por deficiência do PHP
73. Java EE Vs Spring
Nico Steppat e Guilherme Moreira
76. Java EE
- lutador experiente
- mudou a tática no Java EE 5
- ganhou confiança com CDI
- perdeu peso para ser ágil
- patrocinado pela Oracle, Red Hat,
IBM and outros
77. Spring Framework
- sem derrota desde 2004
- nocauteou o J2EE
- luta em qualquer container
- golpes fortes com POJOs
- sabe explorar bem seu oponente
- patrocinado pela Spring Source