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
Gracias por las diapositivas y el resumen del contenido.
¡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 :)
Gracias. :D ¡Espero que mi material te haya sido útil!
Gracias por el resumen detallado.
El resumen tomó más tiempo de lo que esperaba ^^;; ¡Gracias por verlo!
¡Gracias por el buen artículo y el resumen!
Gracias por verlo con buenos ojos :D
¡Lo leí con gusto!
Hay que definir un nivel adecuado de abstracción.
-> Aquí hay un error tipográfico :)
Gracias por verificarlo. :) Pero parece que una vez que publicas, ya no es posible editarlo :(
Ah, no lo sabía. ¡Gracias por confirmarlo!