56 pontos por kciter1 2023-08-16 | 10 comentários | Compartilhar no WhatsApp

Software existe para resolver algum problema. Por isso, desenvolvedores entendem o problema, projetam de acordo com ele e então implementam a solução. Nesse processo de compreender o problema e projetar, o pensamento abstrato e o pensamento estrutural são armas poderosas para o desenvolvedor.

Em geral, pensamento abstrato e estrutural costuma ser explicado de forma difícil ou vaga. Mas existem, sim, metodologias concretas para esse tipo de raciocínio. Esta apresentação introduz formas concretas de o desenvolvedor pensar de maneira abstrata e estrutural, e como usar esse tipo de pensamento para projetar software em áreas como modelagem de domínio, refatoração e arquitetura.

  • O trabalho do desenvolvedor é criar programas
  • A razão para criar programas é resolver um problema específico, e a razão para resolver problemas é atender ao negócio
  • Ao criar um programa, há quatro etapas
    • compreensão / análise -> projeto -> implementação -> feedback
  • Quanto mais sênior o desenvolvedor se torna, mais ele passa a participar de todas essas etapas, e não apenas da escrita de código
  • Sêniores resolvem problemas rapidamente por meio da intuição baseada em experiência
  • Mas a intuição pode ser perigosa. Por isso, é importante aprender metodologias
  • O pensamento abstrato e estrutural é a base dessas metodologias
  • Abstração é extrair, dos elementos, aquilo que é comum ou o que é de interesse
  • Por isso, abstração pode ser vista como simplificar algo e depois reinterpretá-lo
  • É possível simplificar e reinterpretar por meio de um pensamento reducionista dos elementos
  • Não apenas elementos, mas também comportamentos podem ser abstraídos
  • A abstração possui camadas
    • É preciso definir um nível adequado de abstração
    • Abstração excessiva não é boa, porque torna impossível entender a entidade real
  • Pensamento estrutural é organizar o conteúdo sem sobreposição e sem lacunas
    • Semelhante ao framework MECE
  • O importante não é que tudo seja, obrigatoriamente, organizado sem sobreposição e sem lacunas
  • A estruturação, assim como a abstração, também tem etapas. É possível observar de um ponto mais distante
  • Existem métodos concretos para pensar de forma abstrata e estrutural
    • top-down e bottom-up
    • modelo
      • Classification
      • Abstraction
      • Generalization
    • pensamento orientado a frameworks
  • É possível aplicar pensamento abstrato e estrutural ao projeto de software
  • Se dividirmos a etapa de implementação de software em três grandes partes, temos modelagem de domínio, arquitetura e escrita de código
  • A modelagem de domínio permite extrair requisitos de forma abstrata e expandi-los gradualmente
  • Arquitetura representa a forma de trabalhar
    • como se trabalha, como se divide
  • A arquitetura segue o processo requisitos -> conceito -> implementação -> feedback
  • É possível detalhar gradualmente conceitos arquiteturais abstratos
  • Paradigma de programação é a forma de enxergar os componentes do software
  • A lógica pode ser vista sob três aspectos: Function, Usecase, Aspect
  • Açúcar sintático é uma sintaxe de programação abstraída
    • também pode se tornar um veneno
  • Refatoração pode ser analisada sob seis perspectivas: paradigma, tamanho do código, propriedade, duplicação, possibilidade de modificação e dependência
  • Existem três formas de refatoração: abstração, estruturação e generalização
  • Para desenvolver a capacidade de pensar de forma abstrata e estrutural, é bom ter experiências diversas
  • Fazer diagramas ajuda bastante
  • Intuição é um pensamento empirista. Pode economizar tempo, mas pode ser perigoso
  • Padrões ajudam a aprender pensamento abstrato
  • O abstrato e o estrutural não são necessariamente uma solução universal

10 comentários

 
gguimoon 2023-08-18

Obrigado pelos slides da apresentação e pelo resumo do conteúdo.

 
bbulbum 2023-08-17

Pelo ID, parece que você é o próprio palestrante! Não consegui assistir por ter falhado no sorteio da Infocon,, obrigado por compartilhar os materiais da apresentação :)

 
kciter1 2023-08-17

Obrigado. :D Espero que meu material tenha sido útil!

 
kuroneko 2023-08-17

Obrigado pelo resumo detalhado.

 
kciter1 2023-08-17

O resumo acabou levando mais tempo do que eu esperava ^^;; Obrigado por ler!

 
rlwnd1104 2023-08-17

Obrigado pelo ótimo texto e pelo resumo~

 
kciter1 2023-08-17

Obrigado pela consideração :D

 
holyachon 2023-08-17

Li com prazer!

É preciso definir o nível adequado de abstração.
-> Há um erro de digitação aqui :)

 
kciter1 2023-08-17

Obrigado pela confirmação. :) Mas parece que, depois de publicar uma vez, não é possível editar T_T

 
holyachon 2023-08-17

Ah, eu não sabia disso. Obrigado pela confirmação!