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
Obrigado pelos slides da apresentação e pelo resumo do conteúdo.
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 :)
Obrigado. :D Espero que meu material tenha sido útil!
Obrigado pelo resumo detalhado.
O resumo acabou levando mais tempo do que eu esperava ^^;; Obrigado por ler!
Obrigado pelo ótimo texto e pelo resumo~
Obrigado pela consideração :D
Li com prazer!
É preciso definir o nível adequado de abstração.
-> Há um erro de digitação aqui :)
Obrigado pela confirmação. :) Mas parece que, depois de publicar uma vez, não é possível editar T_T
Ah, eu não sabia disso. Obrigado pela confirmação!