56 puntos por kciter1 2023-08-16 | 10 comentarios | Compartir por WhatsApp

El software existe para resolver algún problema. Por eso, los desarrolladores entienden el problema, lo diseñan de acuerdo con él y luego lo implementan. En ese proceso, el pensamiento abstracto y el pensamiento estructural son herramientas muy poderosas para comprender el problema y diseñar la solución.

Normalmente, el pensamiento abstracto y estructural suele explicarse de forma difícil de entender o demasiado vaga. Pero sí existen metodologías concretas para pensar de esta manera. En esta presentación se introducen métodos concretos para que los desarrolladores piensen de manera abstracta y estructurada, y cómo usar ese tipo de pensamiento para diseñar software en áreas como modelado de dominio, refactorización y arquitectura.

  • El trabajo de un desarrollador es crear programas
  • La razón para crear programas es resolver problemas específicos, y la razón para resolver esos problemas es servir al negocio
  • Al crear un programa, hay cuatro etapas
    • comprensión / análisis -> diseño -> implementación -> retroalimentación
  • A medida que un desarrollador se vuelve senior, no solo escribe código, sino que participa en todas estas etapas
  • Un senior resuelve problemas rápidamente mediante intuición basada en la experiencia
  • Pero la intuición puede ser riesgosa. Por eso es importante aprender metodologías
  • El pensamiento abstracto y estructural es la base de esas metodologías
  • La abstracción consiste en extraer lo común o lo que interesa de los elementos
  • Por eso, la abstracción puede verse como simplificar algo y luego reinterpretarlo
  • Se puede simplificar y reinterpretar mediante un pensamiento reduccionista de los elementos
  • No solo los elementos, también las acciones pueden abstraerse
  • La abstracción tiene niveles
    • Hay que decidir el nivel de abstracción adecuado.
    • Una abstracción excesiva no es buena porque ya no permite entender la entidad real.
  • El pensamiento estructural consiste en organizar el contenido sin solapamientos y sin vacíos
    • Similar al framework MECE
  • Lo importante no es que siempre deba organizarse sin solapamientos y sin vacíos a toda costa
  • La estructuración, al igual que la abstracción, también tiene niveles. Permite observar desde un paso más atrás
  • Existen métodos concretos para pensar de forma abstracta y estructurada
    • top-down y bottom-up
    • modelos
      • Classification
      • Abstraction
      • Generalization
    • pensamiento basado en frameworks
  • Es posible aplicar el pensamiento abstracto y estructural al diseño de software
  • Si dividimos en tres grandes partes la etapa de implementación del software, podemos separarla en modelado de dominio, arquitectura y escritura de código
  • El modelado de dominio permite extraer los requisitos de forma abstracta y expandirlos gradualmente
  • La arquitectura representa la forma de trabajar
    • cómo se trabaja, cómo se divide
  • La arquitectura sigue el proceso de requisitos -> concepto -> implementación -> retroalimentación
  • Es posible concretar gradualmente conceptos arquitectónicos abstractos
  • Un paradigma de programación es una forma de ver los componentes del software
  • La lógica puede verse desde tres aspectos: Function, Usecase, Aspect
  • El azúcar sintáctico es una sintaxis de programación abstraída
    • también puede volverse perjudicial
  • La refactorización puede analizarse desde seis perspectivas: paradigma, tamaño del código, propiedad, duplicación, posibilidad de modificación y dependencias
  • Existen tres métodos de refactorización: abstracción, estructuración y generalización
  • Para desarrollar la capacidad de pensar de forma abstracta y estructurada, es bueno tener experiencias diversas
  • Hacer diagramas es de gran ayuda
  • La intuición es un pensamiento empirista. Puede ahorrar tiempo, pero también puede ser riesgosa
  • Los patrones ayudan a aprender el pensamiento abstracto
  • Lo abstracto y estructural no lo resuelve todo

10 comentarios

 
gguimoon 2023-08-18

Gracias por las diapositivas y el resumen del contenido.

 
bbulbum 2023-08-17

¡Por el ID, veo que usted es el propio ponente! No pude entrar por no haber salido sorteado para Infocon, pero muchas gracias por compartir los materiales de la presentación :)

 
kciter1 2023-08-17

Gracias. :D ¡Espero que mi material te haya sido útil!

 
kuroneko 2023-08-17

Gracias por el resumen detallado.

 
kciter1 2023-08-17

El resumen tomó más tiempo de lo que esperaba ^^;; ¡Gracias por verlo!

 
rlwnd1104 2023-08-17

¡Gracias por el buen artículo y el resumen!

 
kciter1 2023-08-17

Gracias por verlo con buenos ojos :D

 
holyachon 2023-08-17

¡Lo leí con gusto!

Hay que definir un nivel adecuado de abstracción.
-> Aquí hay un error tipográfico :)

 
kciter1 2023-08-17

Gracias por verificarlo. :) Pero parece que una vez que publicas, ya no es posible editarlo :(

 
holyachon 2023-08-17

Ah, no lo sabía. ¡Gracias por confirmarlo!