Programação Eficaz - Agile Trends Floripa 2016

92
Programação Eficaz Agile Trends Floripa 2016 Sebastian Ferrari (a.k.a. Sebas) [email protected]

Transcript of Programação Eficaz - Agile Trends Floripa 2016

Page 1: Programação Eficaz -  Agile Trends Floripa 2016

Programação EficazAgile Trends Floripa

2016Sebastian Ferrari (a.k.a. Sebas)

[email protected]

Page 2: Programação Eficaz -  Agile Trends Floripa 2016

Sebastian FerrariCTO e Co-fundador da Tallersebas5384

Page 3: Programação Eficaz -  Agile Trends Floripa 2016

+10 anos programando

+4 anos com Ágilvivendo o pós Ágil

Page 4: Programação Eficaz -  Agile Trends Floripa 2016
Page 5: Programação Eficaz -  Agile Trends Floripa 2016

~10 anos atrás

CPU 300 MHZRAM 128 MB640 x 480 px

Page 6: Programação Eficaz -  Agile Trends Floripa 2016
Page 7: Programação Eficaz -  Agile Trends Floripa 2016

RAMAC 305 - ano 1956

Page 8: Programação Eficaz -  Agile Trends Floripa 2016
Page 9: Programação Eficaz -  Agile Trends Floripa 2016
Page 10: Programação Eficaz -  Agile Trends Floripa 2016

68 cores = 8 bytesmicroSDHC 8 billion

bytes

Page 11: Programação Eficaz -  Agile Trends Floripa 2016

1 bilhão de vezes mais

bytes, em menos espaço

Page 12: Programação Eficaz -  Agile Trends Floripa 2016

IBM 305 RAMAC de 1956, considerada um

SUPER computadorcom 5 Megabytes de

HDD

Page 13: Programação Eficaz -  Agile Trends Floripa 2016

multiplicaçõespodiam demorar entre

60 ms a 190 ms

Page 14: Programação Eficaz -  Agile Trends Floripa 2016

IBM 650FORTRAN

Page 15: Programação Eficaz -  Agile Trends Floripa 2016
Page 16: Programação Eficaz -  Agile Trends Floripa 2016
Page 17: Programação Eficaz -  Agile Trends Floripa 2016

HOJEano 2016

Page 18: Programação Eficaz -  Agile Trends Floripa 2016

MOTO X2

Page 19: Programação Eficaz -  Agile Trends Floripa 2016

CPU Quad Core de 2.5 GHz.GPU Adreno 330, 26 frames por segundo.Memória de 32 GB e 2 GB de RAM.Alta Resolução de 1080 x 1920 pixels.Velocidade de download de 150 Mbps.

Page 20: Programação Eficaz -  Agile Trends Floripa 2016

+10.000 vezesem 60 anos !!

Page 21: Programação Eficaz -  Agile Trends Floripa 2016

Capacidade de hardware

melhorou muito !

Page 22: Programação Eficaz -  Agile Trends Floripa 2016

Mas …

e a maneira comoprogramamos ?

Page 23: Programação Eficaz -  Agile Trends Floripa 2016

E a qualidade?

… melhorou?

Page 24: Programação Eficaz -  Agile Trends Floripa 2016
Page 25: Programação Eficaz -  Agile Trends Floripa 2016

procurouno Google ?

Page 26: Programação Eficaz -  Agile Trends Floripa 2016

treta vixe

Page 27: Programação Eficaz -  Agile Trends Floripa 2016
Page 28: Programação Eficaz -  Agile Trends Floripa 2016
Page 29: Programação Eficaz -  Agile Trends Floripa 2016

:(

Page 30: Programação Eficaz -  Agile Trends Floripa 2016

Por que ?

Page 31: Programação Eficaz -  Agile Trends Floripa 2016

Softwares complexos

Page 32: Programação Eficaz -  Agile Trends Floripa 2016

Manutenção muito cara

Page 33: Programação Eficaz -  Agile Trends Floripa 2016

Novas funcionalidades

Page 34: Programação Eficaz -  Agile Trends Floripa 2016
Page 35: Programação Eficaz -  Agile Trends Floripa 2016

Priorizamos a eficiência

Page 36: Programação Eficaz -  Agile Trends Floripa 2016
Page 37: Programação Eficaz -  Agile Trends Floripa 2016

Software frágil

Page 38: Programação Eficaz -  Agile Trends Floripa 2016
Page 39: Programação Eficaz -  Agile Trends Floripa 2016

Programamos demaneira familiar

Page 40: Programação Eficaz -  Agile Trends Floripa 2016

Experiência doprogramador é

péssima

Page 41: Programação Eficaz -  Agile Trends Floripa 2016
Page 42: Programação Eficaz -  Agile Trends Floripa 2016
Page 43: Programação Eficaz -  Agile Trends Floripa 2016
Page 44: Programação Eficaz -  Agile Trends Floripa 2016

O que estamos fazendo deerrado?

Page 45: Programação Eficaz -  Agile Trends Floripa 2016

Softwarecomplexo!

Page 46: Programação Eficaz -  Agile Trends Floripa 2016
Page 47: Programação Eficaz -  Agile Trends Floripa 2016

Programação imperativa é um paradigma de

programação que descreve a computação como ações,

enunciados ou comandos que mudam o estado (variáveis)

de um programa.

Page 48: Programação Eficaz -  Agile Trends Floripa 2016

Lógicas escondidase

overload de abstrações

Page 49: Programação Eficaz -  Agile Trends Floripa 2016

Estados internosmutáveis

espalhadospelo sistema

Page 50: Programação Eficaz -  Agile Trends Floripa 2016

Mutabilidadetorna o sistema

imprevisível

Page 51: Programação Eficaz -  Agile Trends Floripa 2016

Refatoraçãoquase impossívelou muito custosa

Page 52: Programação Eficaz -  Agile Trends Floripa 2016

Side effectsfora de controle

Page 53: Programação Eficaz -  Agile Trends Floripa 2016
Page 54: Programação Eficaz -  Agile Trends Floripa 2016

Testes automatizados

são muito caros eprecisam de muito

mock

Page 55: Programação Eficaz -  Agile Trends Floripa 2016

Acoplamentodificulta

interoperabilidade

Page 56: Programação Eficaz -  Agile Trends Floripa 2016

A soma das partes é maior do que o resultado final.

Entropia

Page 57: Programação Eficaz -  Agile Trends Floripa 2016

Alto risco e esforçoperante as mudanças

Page 58: Programação Eficaz -  Agile Trends Floripa 2016

Carregamosum elefante nas

costas

Page 59: Programação Eficaz -  Agile Trends Floripa 2016

Alto conhecimento do todo para realizar

uma mudança

Page 60: Programação Eficaz -  Agile Trends Floripa 2016

Overloadcognitivo

para entender

Page 61: Programação Eficaz -  Agile Trends Floripa 2016

De onde vemesse campo?

Page 62: Programação Eficaz -  Agile Trends Floripa 2016

Quem está trocando o texto desse botão?

Page 63: Programação Eficaz -  Agile Trends Floripa 2016

Porque não está funcionando?

Page 64: Programação Eficaz -  Agile Trends Floripa 2016

Porque está funcionando?

Page 65: Programação Eficaz -  Agile Trends Floripa 2016

Não temos mais as mesmas restrições

Page 66: Programação Eficaz -  Agile Trends Floripa 2016

Podemos usar outros

paradigmas

Page 67: Programação Eficaz -  Agile Trends Floripa 2016

Programaçãofuncional e reativa

λlamba

Page 68: Programação Eficaz -  Agile Trends Floripa 2016

Simples e declarativo que

aumenta o entendimento do

código

Page 69: Programação Eficaz -  Agile Trends Floripa 2016
Page 70: Programação Eficaz -  Agile Trends Floripa 2016

Familiar vs. Legibilidade

pessoas novas no time podem entender o que o

código faz

Page 71: Programação Eficaz -  Agile Trends Floripa 2016

Funções purassão previsíveis,fácil de testar

e sem estado interno

Page 72: Programação Eficaz -  Agile Trends Floripa 2016

Funções de ordem superior,

evita herança a favor da composição

Page 73: Programação Eficaz -  Agile Trends Floripa 2016

Funções recursivasevita side-effects

dentrode loops

Page 74: Programação Eficaz -  Agile Trends Floripa 2016

Imutabilidademudanças se tornam

declarativas

Page 75: Programação Eficaz -  Agile Trends Floripa 2016

Código fácil de seraciocinar

Page 76: Programação Eficaz -  Agile Trends Floripa 2016

Programação reativa

eventos no sistemaunidirecional

Page 77: Programação Eficaz -  Agile Trends Floripa 2016

Não precisausar linguagensfuncionais puras !

Page 78: Programação Eficaz -  Agile Trends Floripa 2016

from: mobiltec.com.br

Page 79: Programação Eficaz -  Agile Trends Floripa 2016

Tendência:

Page 80: Programação Eficaz -  Agile Trends Floripa 2016

Não é a soluçãodefinitiva ou

absoluta

Page 81: Programação Eficaz -  Agile Trends Floripa 2016

… e o que tem a ver com Ágil ?

Page 82: Programação Eficaz -  Agile Trends Floripa 2016

A empresa ondevocê trabalhaé um sistema

Page 83: Programação Eficaz -  Agile Trends Floripa 2016

A qualidade do resultado, depende

dobom funcionamentoentre as partes do

sistema

Page 84: Programação Eficaz -  Agile Trends Floripa 2016

Se os desenvolvedoresgeram software

de baixa qualidade

Page 85: Programação Eficaz -  Agile Trends Floripa 2016

●Código frágil.●Código que não

escala.●Refatoração de alto

risco.●Manutenção cara.●Mudanças são

lentas.

Page 86: Programação Eficaz -  Agile Trends Floripa 2016
Page 87: Programação Eficaz -  Agile Trends Floripa 2016

O que é ágil ?ou agilidade

Page 88: Programação Eficaz -  Agile Trends Floripa 2016

“ It’s not what happens

that counts…it’s how you react.

Page 89: Programação Eficaz -  Agile Trends Floripa 2016

Bruce Lee

Page 90: Programação Eficaz -  Agile Trends Floripa 2016

Sua empresa vai precisar de:mais gerenciamento,

mais negociações,mais contratos complexos,

mais disciplinas,…. mais … mais …

Page 91: Programação Eficaz -  Agile Trends Floripa 2016

Referências:

Alan KayRobert C. Martin (Uncle Bob)Joe ArmstrongRich Hickey

Page 92: Programação Eficaz -  Agile Trends Floripa 2016

Obrigado :)

Sebastian [email protected]