TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection...

34
Globalcode – Open4education Trilha – Java Paulo Soares Software Architect at McKinsey Digital Labs

Transcript of TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection...

Page 1: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Trilha – JavaPaulo Soares

Software Architect at McKinsey Digital Labs

Page 2: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Convention Over Configuration

RoteiroMotivação

Exemplo prático

Resultados

Conclusão

Considerações finais

Page 3: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Motivação

Produtividade

Page 4: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Motivação

Produtividade Dev Time = # Decisions * Mean Implementation Time

Page 5: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Motivação

Produtividade Dev Time = # Decisions * Mean Implementation Time

Menos decisões

Page 6: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Motivação

Produtividade Dev Time = # Decisions * Mean Implementation Time

Menos decisões

Page 7: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Motivação

Produtividade Dev Time = # Decisions * Mean Implementation Time

Menos decisões

Mais experiência

Page 8: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático

Problema: Construir um ETL (Extract Transform Load)

Page 9: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático

Problema: Construir um ETL (Extract Transform Load)

EntradaPlanilha CSV com dados de clientes

Page 10: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático

Problema: Construir um ETL (Extract Transform Load)

EntradaPlanilha CSV com dados de clientes

Resultado esperadoDados dos clientes devem ser salvos em uma base de dados

Page 11: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático

Problema: Construir um ETL (Extract Transform Load)

EntradaPlanilha CSV com dados de clientes

Resultado esperadoDados dos clientes devem ser salvos em uma base de dados

ContextoFormato do CSV e db schema são negociáveis.

Page 12: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v1

Page 13: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v1

Page 14: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v1

Page 15: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v1

Page 16: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v1

Page 17: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v1

Page 18: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v2

Page 19: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v2

Page 20: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v2

Page 21: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Exemplo prático – v3

ScaffoldingModelos e repositórios gerados automaticamente:

Page 22: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

Total de linhas de código (5 colunas/classe)

Classes Linhas v1 Linhas v2 Redução (%)1 202 246 -22%2 315 328 -4%3 428 410 4%4 541 492 9%5 654 574 12%6 767 656 14%7 880 738 16%8 993 820 17%9 1106 902 18%10 1219 984 19%

Page 23: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

Linhas adicionadas quando há uma nova entidade

Linhas v1 Linhas v2 Redução (%)113 82 27%

Page 24: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

Linhas escritas usando scaffolding

Linhas v1 Linhas v3 Redução (%)113 2 98%

Page 25: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

Complexidade do código

Page 26: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

Complexidade do códigoAumentou devido ao uso de reflection e scaffolding

Page 27: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

Complexidade do códigoAumentou devido ao uso de reflection e scaffolding.

Mais difícil de tornar o código mais flexível (e.g.: aceitar relacionamentos de modelos)

Page 28: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

Segurança

Page 29: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

SegurançaDeve-se ter cuidado com os usos de reflection

Page 30: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

Extensibilidade

Page 31: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Resultados

ExtensibilidadeExige menos tempo para que um desenvolvedor adicione novas entidades com as convenções esperadas.

Vai exigir um pouco mais de tempo para aceitar outros tipos de entradas (e.g.: FK)

Page 32: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Conclusão

Há ganhos consideráveis de produtividade, especialmente se a técnica de scaffolding for utilizada.

Adicionar novas entidades pode ter o custo de executar um comando, porém isto exige que haja um investimento inicial maior de tempo.

Exige-se um planejamento maior (prever mudanças futuras) para não deixar o código inflexível.

Aspectos como segurança e complexidade devem ser considerados.

Page 33: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

Globalcode – Open4education

Considerações finais

O que vai ser feito no futuro e com qual frequência?

Quais são os impactos em segurança e flexibilidade?

O investimento é válido?

Page 34: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration