Arquitetura de Software: O conceito que parte do Bloco de notas!

@WellsSA

Wellington S. Almeida

  • TS Software Developer  at @Intelligence Bureau
  • Designer?
  • Speaker? @icarcal
  • Melhor portfólio \o/ @https://wellsadev.com

@WellsSA

@WellsSA

Antes de tudo

Feedbacks! \o/

@WellsSA

Então por quê não aproveitar isso?

@WellsSA

Agora com exemplos!

Resumindo:

@WellsSA

  • Lidar com o desconhecido
    • Nem sempre você vai saber de tudo
  • E eis o ponto!!
    • Separar problemas grandes
    • Facilita o foco

Como assim foco?

@WellsSA

  • We are humans

Temos limites!

@WellsSA

  • A parte biológica importa

Existem técnicas

@WellsSA

  • Já diziam os sábios do SCRUM

E eis que chega nossa área <3

@WellsSA

  • E é nisso que se baseiam os Paradigmas de programação

Agora vem o segredo:

Código não importa!*

*No geral

@WellsSA

Mas calma lá!

Antes de vocês usarem o slide passado como desculpa pra fazer gambiarras...

Vamos às explicações!

@WellsSA

Vamos parar pra pensar

@WellsSA

Farmácia

Padaria

Oooou seja:

@WellsSA

No fundo o código é o mesmo

+

O que muda é o quê você faz com ele!

=

O que importa é a idéia!

E como ninguém pensou isso antes?

@WellsSA

E a resposta é: pensaram!

@WellsSA

Nos tempos em que o Chicão era Chiquinho...

@WellsSA

Declaração

Uso

Programação estruturada

Mas pera lá...

@WellsSA

  • Se código não é tão importante...
  • Precisamos dar um jeito de organizar a informação que é relevante
  • nossa regra de negócio

Orientação a Objetos! \o/

@WellsSA

 [

    int,

    String,

    int

 ]

 

Array/Structure

 {

    nome,

    preço,

    estoque

 }

 

new Produto();

Informação relevante juntinha

@WellsSA

Software

Software

Software

Software

Pacotinho

Pacotinho

Pacotinho

Maaaaais pra frente...

@WellsSA

"Ainda tem muito código aqui"

"Podiamos focar no que realmente importa "

"separar em funções e focar em o que ela faz, não em como ela faz"

Programação funcional

@WellsSA

....................................................................................................

 

----------------------------------------------------------------------------------

 

++++++++++++++++++++++++++++++++++++++++++++++

doThis();

doThat();

justDoIt();

Antes

Depois

doThis() {

return ................................ ...........................................;

}

História pra outro dia!

@WellsSA

...

...

Beleza! Convenci vocês que código não importa?

Então de volta ao mundo das idéias!

@WellsSA

O que um desenvolvedor faz? 

Somos

entrada, processamento ou saída?

@WellsSA

Que tal uma outra perspectiva

Um médico:

 Recebe os sintomas

Analisa com base no que estudou

Dá um diagnóstico

@WellsSA

Que tal uma outra perspectiva

Um artista gráfico:

 Recebe as especificações

Pensa em algo com base no que estudou

Retorna uma série de sketches

@WellsSA

Que tal uma outra perspectiva

Um arquiteto/engenheiro:

 Preciso mesmo dar esse exemplo?

 Acho que vocês já sacaram, né?

É exatamente isso!

@WellsSA

Notaram algum padrão

As profissões que mais dão dinheiro

São as que fazem uso do que você tem de mais importante:

Seu cérebro!

 

Nós somos o processamento!

@WellsSA

Então adivinhem

Programar é um processo criativo!

Você precisa pensar!

@WellsSA

Pensar é o principal!

Lembram que a parte biológica importa?

Poisé!

Pensar cansa!

@WellsSA

Você precisa poupar seu cérebro!

Quanto mais responsabilidade você tirar dele, melhor!

COMO!?!?

@WellsSA

Você precisa poupar seu cérebro!

Lembram do começo da talk?

FOCO!!!!

@WellsSA

Antes de tudo

Foque no que realmente importa

Código??

@WellsSA

Idéia!!

  • Organize as idéias!!
  1. O quê você quer fazer?
  2. Como você quer fazer?

@WellsSA

Sem uma linha de código!

E mais importante:

  • Querem um exemplo??

@WellsSA

Que tal um programa que calcula média?

Qual a minha idéia?? O que eu tenho que fazer??? 

+ Receber as notas dos alunos e mostrar a média

E o que eu preciso fazer, em etapas, pra isso acontecer??

# Receber os valores

e depois??

# Calcular a média 

e depois??

# Mostrar isso pro usuário
  • Então temos...

@WellsSA

Resumidamente

+ Receber as notas dos alunos e mostrar a média

# Receber os valores

# Calcular a média 

# Mostrar isso pro usuário
  • Agora temos uma visão geral

@WellsSA

E podemos elaborar um pouco mais

+ Receber as notas dos alunos e mostrar a média

# Receber os valores

# Calcular a média 
	- (soma das entradas) dividido por (quantidade de entradas)
    - fórmula: (entrada + entrada) / quantidadeDeEntradas
    - ex.: (10 + 5) / 2

# Mostrar isso pro usuário

Por exemplo:

  • E agora podemos entender melhor o cenário

@WellsSA

+ Receber as notas dos alunos e mostrar a média

# Receber os valores
	- 2 notas (de 0 a 10)
    
# Calcular a média 
	- (soma das entradas) dividido por (quantidade de entradas)
    - fórmula: (entrada + entrada) / quantidadeDeEntradas
    - ex.: (10 + 5) / 2

# Mostrar isso pro usuário

Quantos valores vamos receber?

1? 2? 3? vários?

  • E agora pensar um pouco mais em como deve ser o resultado

@WellsSA

+ Receber as notas dos alunos e mostrar a média

# Receber os valores
	- 2 notas (de 0 a 10)
    
# Calcular a média 
	- (soma das entradas) dividido por (quantidade de entradas)
    - fórmula: (entrada + entrada) / quantidadeDeEntradas
    - ex.: (10 + 5) / 2

# Mostrar isso pro usuário
	- Mostrar no console

Como vamos mostrar isso pro usuário?

Console? Página web?

  • Agora eu pergunto:

@WellsSA

Em qual linguagem fizemos isso?

Nenhuma!

Porque

O código

Não

Importa!

  • Agora que já mapeamos o problema

@WellsSA

Podemos pensar em qual é o melhor jeito de fazer isso

Não estamos presos à tecnologia nenhuma!

E focar em cada uma dessas etapas

  • Vocês concordam que...

@WellsSA

#Receber valores

Nós sabemos como procurar a informação em etapas!

Google:

  • Como receber valores em Java?
  • Como receber valores em Python?
  • Como receber valores em NodeJS?

 

  • Ou seja:

@WellsSA

Temos um guia de como fazer o projeto

Nós podemos aprender em etapas cada parte do projeto!

Isso nos possibilita descobrir o que precisamos para fazer o projeto em etapas

testar o que estamos fazendo em etapas para fazer o projeto

  • Fez? Testou? Funcionou? Próximo!

@WellsSA

  • Não sei receber entradas do usuário em python
  • Procurei no google, testei, aprendi, tá e agora?

Você tem um guia preparado e já pensou na próxima etapa!

  • Não importa o quanto seja difícil essa etapa, nem quanto tempo você passou focado nisso
  • A próxima etapa!

@WellsSA

  • Só checar o bloco de notas!
  • #calcular a média

Seu cérebro agradece!

  • Agora, senhoras e senhores

@WellsSA

Vocês aprenderam a aprender!

Mas não só isso!

  • Lembram do nosso guia?

@WellsSA

+ Receber as notas dos alunos e mostrar a média

# Receber os valores
	- 2 notas (de 0 a 10)
    
# Calcular a média 
	- (soma das entradas) dividido por (quantidade de entradas)
    - fórmula: (entrada + entrada) / quantidadeDeEntradas
    - ex.: (10 + 5) / 2

# Mostrar isso pro usuário
	- Mostrar no console

Aquele que foi feito em nenhuma linguagem?

  • Agora vocês estão livres pra pensar!!

@WellsSA

  • Eu tenho que mostrar a média no console:
    • qual a melhor linguagem/tecnologia pra mostrar algo no console?
  • Eu tenho que receber 2 valores:
    • qual a melhor linguagem/tecnologia pra  receber 2 valores? Ou, de repente, múltiplos valores?
  • Vocês percebem o poder disso!?

@WellsSA

Isso é muito mais do que simplesmente código

Programação é pensar!

E tudo que vocês precisam é de um bloco de notas!

@WellsSA

Obrigado!

@WellsSA

Sejam bem-vindos à Matrix!

Wellington S. Almeida

@WellsSA

Acharam que tinha acabado!?

Essa foi só a primeira parte!!

Vamos falar de pessoas!!!

@WellsSA

Sempre que falamos de pensar

Com certeza você pode sair por aí e conhecer pessoas que vão te falar de coisas e formas de pensar que você nunca nem tinha imaginado!

@WellsSA

Então participem de comunidades! Vão em eventos!

  • Google
    Google Developers Group
  • Facebook
    Facebook Developer Circles
  • Microsoft
    Microsoft InsidersDevTour
  • IBM
    Bluetalks/Bluehack
  • Oracle
    Oracle Openworld

 

@WellsSA

  • Comunidades! <3
    NodeBR
    NerdZão
    NerdGirlz
    FlutterNation
  • Eventos! <3
    The Developers Conference
    ABCDev

E pra finalizar...

Uma história engraçada sobre tudo que acabei de contar

@WellsSA

Agooooora

sim!

@WellsSA

Obrigado!

@WellsSA

Aceito Feedbacks! \o/

@WellsSA

Wellington S. Almeida

@WellsSA

Made with Slides.com