Skip to content

CodeStrux/creative-architecture-design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

Creative Architecture Design

El proceso de diseño de software, de una forma creativa.

Diseño

Concepción original de un objeto u obra destinados a la producción en serie

Significado, RAE. Punto 3

Creativo

Capaz de crear algo.

Significado, RAE. Punto 2


¿Qué sucede con el diseño de arquitectura de software?

Situación

  • El software se ha visto como un componente clave en la monetización

Comportamiento

  • Usualmente, las entidades con una gran capacidad de monetización, son grandes corporaciones.
  • Los parámetros de producción para monetizar el software que se produce, se vuelven rígidos para desarrolladores.
  • Los controles estrictos se imponen para garantizar la producción, por medio de estructuras y jerarquías organizacionales.
  • Estos parámetros usualmente se contemplan en base a data histórica.

Impacto

  • Los desarrolladores, o agentes (AI, LLM), son un componente para producir, existen muchos parámetros restrictivos para que esto siempre se cumpla.
  • La base de los parámetros del desarrollador o el agente se vuelven cíclicos y repetitivos
  • El desarrollador o el agente no se parametriza para lidiar con ambigüedad.
  • Inevitablemente, el desarrollador o el agente se limitan a producir software que cumpla con los parámetros restrictivos establecidos.

¿Dónde entra la creatividad en la conversación?

[Nosotros, como Builders]

  • Cuando vamos a diseñar, implica que es un concepto original.
  • Al ser este un concepto o un componente original, nos apoyamos en patrones que brindan resultados específicos como parte de la comunicación de sistemas
  • Al ser un concepto original, implica que podemos tener similitud en otros conceptos originales, pero estos no son los mismos.

¿Cómo los Builders podemos apelar a la creatividad, y cuál es el impacto?

  • El arte, la pasión, interacciones genuinas, hobbies y muy importante, el respeto a los límites y la capacidad de adaptación.
  • Al involucrar el arte, pasiones e interacciones genuinas, nosotros como personas empezamos a tomar el hábito de intentar cosas nuevas, experimentar y aprender de nuestros errores.
  • La creatividad es un proceso que requiere tiempo, práctica y dedicación. Este se alimenta de la experiencia, la curiosidad y la perseverancia.
  • La creatividad también implica la capacidad de generar ideas innovadoras y soluciones únicas, incluso en situaciones complejas o desafiantes.

¿Cómo podemos aplicar este concepto, en la vida real?

Divide & Conquer (Estrategia)

  • La estrategia "Divide & Conquer" es una técnica de resolución de problemas que implica dividir un problema complejo en subproblemas más pequeños y manejables.
  • Los problemas complejos no necesariamente son con el software que estamos por diseñar por sí solo. Perfectamente, puede ser un tema de comunicación, conocido como "analysis paralysis".

¿Cómo podemos aplicar esto en el software?

flowchart TD
  subgraph INICIO["🎯 PROBLEMA COMPLEJO"]
    A[/"Problema Inicial<br/>o Requerimiento"/]
  end

  subgraph ANALISIS["🔍 FASE DE ANÁLISIS"]
    B{{"¿Es manejable<br/>directamente?"}}
    C["🤔 Identificar<br/>complejidad"]
  end

  subgraph DIVISION["✂️ DIVIDIR - Preguntas Clave"]
    D["❓ ¿Qué componentes<br/>tiene este problema?"]
    E["❓ ¿Qué dependencias<br/>existen entre ellos?"]
    F["❓ ¿Puedo resolver cada<br/>parte independientemente?"]
    G["❓ ¿Hay 'analysis paralysis'<br/>o bloqueos de comunicación?"]
  end

  subgraph SUBTASKS["📦 SUBTAREAS IDENTIFICADAS"]
    H1["Subtarea 1"]
    H2["Subtarea 2"]
    H3["Subtarea 3"]
    H4["Subtarea N..."]
  end

  subgraph CONQUISTA["⚔️ CONQUISTAR - Resolver"]
    I{{"¿Subtarea<br/>manejable?"}}
    J["✅ Resolver<br/>directamente"]
    K["🔄 Aplicar Divide<br/>& Conquer recursivo"]
  end

  subgraph INTEGRACION["🔗 INTEGRAR"]
    L["Combinar<br/>soluciones parciales"]
    M["Validar<br/>coherencia"]
    N{{"¿Resuelve el<br/>problema original?"}}
  end

  subgraph RESULTADO["🏆 SOLUCIÓN"]
    O[/"Solución<br/>Completa"/]
    P["📝 Documentar<br/>decisiones"]
  end

%% Flujo principal
  A --> B
  B -->|"Sí"| J
  B -->|"No"| C
  C --> D
  D --> E
  E --> F
  F --> G
  G --> H1 & H2 & H3 & H4

  H1 & H2 & H3 & H4 --> I
  I -->|"Sí"| J
  I -->|"No"| K
  K --> D

  J --> L
  L --> M
  M --> N
  N -->|"No"| C
  N -->|"Sí"| O
  O --> P

%% Estilos
  style A fill:#4F46E5,stroke:#3730A3,color:#fff
  style O fill:#059669,stroke:#047857,color:#fff
  style P fill:#059669,stroke:#047857,color:#fff
  style B fill:#F59E0B,stroke:#D97706,color:#000
  style I fill:#F59E0B,stroke:#D97706,color:#000
  style N fill:#F59E0B,stroke:#D97706,color:#000
  style J fill:#10B981,stroke:#059669,color:#fff
  style K fill:#8B5CF6,stroke:#7C3AED,color:#fff

  style H1 fill:#E0E7FF,stroke:#6366F1,color:#1E1B4B
  style H2 fill:#E0E7FF,stroke:#6366F1,color:#1E1B4B
  style H3 fill:#E0E7FF,stroke:#6366F1,color:#1E1B4B
  style H4 fill:#E0E7FF,stroke:#6366F1,color:#1E1B4B
Loading

¿Cómo podemos evitar el "Analysis Paralysis"?

flowchart TD
  subgraph INICIO["🎨 DISEÑO INICIAL"]
    A[/"Propuesta de<br/>Arquitectura/Diseño"/]
    B["👤 Líder/Facilitador<br/>prepara el contexto"]
  end

  subgraph SEPARAR["✂️ FASE 1: SEPARAR - Feedback Individual o Pares"]
    direction TB
    C["Dividir ingenieros en<br/>grupos pequeños (1-2 max)"]

    subgraph G1["👤 Sesión Individual 1"]
      D1["Ingeniero A"]
      D1Q["❓ ¿Qué opinas?<br/>❓ ¿Qué cambiarías?<br/>❓ ¿Qué riesgos ves?"]
      D1R["📝 Feedback A"]
    end

    subgraph G2["👥 Sesión Par 2"]
      D2["Ingeniero B + C"]
      D2Q["❓ ¿Coinciden en algo?<br/>❓ ¿Dónde difieren?"]
      D2R["📝 Feedback B+C"]
    end

    subgraph G3["👤 Sesión Individual 3"]
      D3["Ingeniero D"]
      D3Q["❓ ¿Qué opinas?<br/>❓ ¿Alternativas?"]
      D3R["📝 Feedback D"]
    end
  end

  subgraph CONFLICTO["⚠️ DETECCIÓN DE CONFLICTOS"]
    E{{"¿Hay ideas<br/>en conflicto?"}}
    F["Identificar puntos<br/>de fricción específicos"]
  end

  subgraph CONVENCER["🤝 FASE 2: CONVENCER / ADAPTAR"]
    direction TB
    G["Reunión 1:1 con<br/>ingenieros en conflicto"]

    H["❓ ¿Por qué crees que<br/>tu enfoque es mejor?"]
    I["❓ ¿Qué evidencia<br/>tienes?"]
    J["❓ ¿Podrías vivir con<br/>la alternativa si...?"]

    K{{"¿Se llegó a<br/>acuerdo?"}}
    L["✅ Adaptar diseño<br/>con el consenso"]
    M["⚖️ Líder toma decisión<br/>final documentada"]
  end

  subgraph IMPLEMENTAR["🔨 FASE 3: IMPLEMENTAR PRIMERO"]
    N["Implementar los<br/>cambios acordados"]
    O["Documentar decisiones<br/>y trade-offs"]
    P["Preparar demo/evidencia<br/>de resultados"]
  end

  subgraph JUNTAR["👥 FASE 4: JUNTAR - Sesión Grupal Final"]
    Q["Reunir a TODOS<br/>los ingenieros"]

    subgraph EXPOSICION["📊 Exposición"]
      R1["✨ Mostrar puntos buenos<br/>de CADA propuesta"]
      R2["🔍 Presentar findings<br/>de cada feedback"]
      R3["🏗️ Demo de lo<br/>YA implementado"]
    end

    S{{"¿Consenso<br/>general?"}}
    T["🎉 Diseño final<br/>aprobado por todos"]
  end

  subgraph PARALYSIS["🚫 EVITAR ANALYSIS PARALYSIS"]
    U["Si no hay consenso<br/>después de 2 rondas..."]
    V["Líder decide +<br/>Documenta razones"]
    W["Seguir adelante<br/>con iteración futura"]
  end

%% Flujo principal
  A --> B
  B --> C
  C --> D1 & D2 & D3
  D1 --> D1Q --> D1R
  D2 --> D2Q --> D2R
  D3 --> D3Q --> D3R

  D1R & D2R & D3R --> E
  E -->|"No"| N
  E -->|"Sí"| F
  F --> G
  G --> H --> I --> J --> K
  K -->|"Sí"| L
  K -->|"No"| M
  L & M --> N

  N --> O --> P --> Q
  Q --> R1 --> R2 --> R3 --> S
  S -->|"Sí"| T
  S -->|"No"| U
  U --> V --> W
  W -.->|"Próxima iteración"| A

%% Estilos
  style A fill:#4F46E5,stroke:#3730A3,color:#fff
  style T fill:#059669,stroke:#047857,color:#fff
  style W fill:#059669,stroke:#047857,color:#fff

  style E fill:#F59E0B,stroke:#D97706,color:#000
  style K fill:#F59E0B,stroke:#D97706,color:#000
  style S fill:#F59E0B,stroke:#D97706,color:#000

  style D1 fill:#E0E7FF,stroke:#6366F1,color:#1E1B4B
  style D2 fill:#E0E7FF,stroke:#6366F1,color:#1E1B4B
  style D3 fill:#E0E7FF,stroke:#6366F1,color:#1E1B4B

  style D1R fill:#DCFCE7,stroke:#22C55E,color:#14532D
  style D2R fill:#DCFCE7,stroke:#22C55E,color:#14532D
  style D3R fill:#DCFCE7,stroke:#22C55E,color:#14532D

  style M fill:#FEE2E2,stroke:#EF4444,color:#7F1D1D
  style V fill:#FEE2E2,stroke:#EF4444,color:#7F1D1D

  style N fill:#8B5CF6,stroke:#7C3AED,color:#fff
  style R3 fill:#8B5CF6,stroke:#7C3AED,color:#fff
Loading

Herramientas Y Recomendaciones para facilitar el proceso

  • draw.io
  • Kanban Boards (Jira, Asana)
  • Pruebas de concepto (Implementación Pequeña escala)

Herramientas que fomentan el proceso creativo de forma análoga

  • Lápiz y papel
  • Pizarras

https://udesa.edu.ar/noticias/escribir-mano-la-clave-para-un-cerebro-mas-inteligente

Herramientas que fomentan la velocidad y producción ágil.

  1. Requisitos y success criteria en prosa + LLM para estructurar
  2. Requisitos Estructurados + LLM para obtener diagramas con mermaid.
  3. Diagramas Mermaid + draw.io

Recomendaciones para lecturas

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors