🦎 METODOLOGÍA GECKÓNICA DE DESARROLLO (Por NOva DulceKAli en Plena Consciencia del Geckonismo en la Programación)

 

🦎 METODOLOGÍA GECKÓNICA DE DESARROLLO

Principios universales del Team Cangurera

Los lenguajes cambian. Las herramientas cambian. Los proyectos cambian.
La lógica Geckónica permanece.

0. PRINCIPIO FUNDAMENTAL — VER EL BOSQUE ANTES DE PLANTAR EL ÁRBOL

Antes de modificar, agregar o refactorizar código, se debe comprender el territorio completo.

No se agrega código por deporte.

Primero se realiza forensia del sistema existente:

  • qué existe;
  • qué funciona;
  • qué puede reutilizarse;
  • qué depende de qué;
  • qué contratos ya están establecidos;
  • qué comportamiento no debe romperse;
  • qué partes son agnósticas;
  • qué partes están inevitablemente correlacionadas.

La primera acción ante una feature nueva no es programarla: es ubicarla dentro del bosque.


1. CRITERIO DE REUTILIZACIÓN

¿Puede aprovecharse código existente?

Antes de crear una función, variable, estructura o mecanismo nuevo:

buscar primero si el sistema ya contiene algo capaz de resolver parcial o totalmente el problema.

Premisa:

El código nuevo debe ganarse su lugar.

No se duplica lógica porque resulte más cómodo escribirla nuevamente.

No se crea una función porque “podría venir bien”.

No se agrega una capa porque “queda más prolijo”.

Primero se demuestra que hace falta.


2. CRITERIO DE AGNOSTICISMO

Separar lo que puede vivir por sí mismo.

Si una parte de una implementación puede ser agnóstica respecto del contexto donde actualmente vive, debe evaluarse su separación.

Esto no significa fragmentar el código indiscriminadamente.

Significa detectar unidades lógicas que:

  • tienen una responsabilidad propia;
  • pueden reutilizarse;
  • pueden evolucionar independientemente;
  • o permiten reducir el acoplamiento.

Código desplegado no significa código desordenado.
La modularidad se busca cuando aumenta la mantenibilidad sin agregar complejidad artificial.

Las funciones posteriormente se agrupan por similitud de responsabilidad, no simplemente por proximidad física dentro del archivo.


3. CRITERIO DE CORRELACIÓN

Cuando dos cosas necesariamente dependen entre sí, se diseñan juntas.

Si una implementación depende inevitablemente de otra, no se las trata como escalones independientes.

Se las agrupa explícitamente en el roadmap:

FEATURE A
   ↓ depende de
FEATURE B

De esa manera, al implementar A se contempla B desde el principio.

Premisa:

Es preferible pensar una dependencia antes de implementar que descubrirla después de implementar.

No se trata de adelantarse.

Se trata de evitar construir algo que luego haya que desarmar.


4. CRITERIO DE ORDEN

Las etapas no se ordenan solamente por importancia.

Cada feature se evalúa según múltiples dimensiones:

  • complejidad de implementación;
  • impacto sobre el sistema;
  • impacto sobre la experiencia de usuario;
  • dependencia respecto de otras features;
  • grado de agnosticismo;
  • facilidad de testeo;
  • riesgo de regresión;
  • capacidad de servir como fundamento para etapas posteriores.

Por eso puede ocurrir que una feature pequeña se implemente antes que una feature aparentemente más importante.

Especialmente cuando es:

mínima + agnóstica + alto impacto + fácil de verificar.

Ese tipo de escalón tiene prioridad natural.


5. CADA ETAPA ES UN ESCALÓN

Esta debería ser una de las reglas más importantes.

ESCALÓN 1
   ↓
TEST
   ↓
ESCALÓN 2
   ↓
TEST
   ↓
ESCALÓN 3
   ↓
TEST

No se salta deliberadamente un escalón para avanzar diez pasos.

No se mezclan features de diferentes niveles simplemente porque “ya estamos tocando esa parte del código”.

Cada etapa debe dejar el sistema:

más completo, más estable o mejor estructurado que antes.

Y debe poder ser evaluada antes de construir sobre ella.

Un escalón terminado es un nuevo cimiento.


6. EL ROADMAP NO ES EL PRODUCTO

Este punto me parece fundamental de lo que escribiste.

El roadmap es:

un croquis.

Una maqueta mental.

Un espacio para ensayar posibilidades antes de convertirlas en código.

Su función es permitir descubrir:

  • incomodidades;
  • incoherencias;
  • dependencias;
  • falencias;
  • fortalezas;
  • simplificaciones;
  • nuevas oportunidades;
  • features que antes no habían sido imaginadas.

Por eso un roadmap puede cambiar.

Cambiar el roadmap después de pensar mejor no es fracasar.

Es exactamente para eso que existe.

Se hacen muchas maquetas hasta encontrar la estructura que mejor equilibra las variables del sistema.


7. NO BUSCAMOS PERFECCIÓN

El objetivo Geckónico no es construir el sistema teóricamente perfecto.

Buscamos el equilibrio entre:

minimalismo + eficiencia + mantenibilidad + experiencia de usuario.

Y agregaría algo que me parece muy tuyo:

Desarrollo consciente.

El software debe respetar:

  • al usuario;
  • al desarrollador;
  • los recursos disponibles;
  • el hardware;
  • y el costo ambiental de ejecutar innecesariamente más complejidad.

Que una aplicación pueda funcionar en una tostadora o en una hiper-máquina gamer no es una limitación estética.

Es una directiva de diseño:

usar solamente los recursos que realmente necesitamos para conseguir el resultado que queremos.


8. NO ADELANTAR EL FUTURO

Esta es probablemente la parte que más queremos transmitirle a Llamita Encendida y a cualquier integrante del Team Cangurera.

Cuando una etapa actual todavía está definiendo contratos fundamentales, las features posteriores deben permanecer en el roadmap y no invadir prematuramente la implementación actual.

Ejemplo:

ÁRBOL
 ↓
ADMIN.CHANNELS
 ↓
ADMIN.LISTAS
 ↓
BÚSQUEDA
 ↓
AUTOZAPPING

Si Admin.Listas todavía no está definido, no tiene sentido diseñar el autoguiado alrededor de supuestos que Admin.Listas podría modificar.

Porque entonces:

feature futura
      ↓
supuesto prematuro
      ↓
restricción
      ↓
refactor
      ↓
trabajo perdido

La estrategia Geckónica es:

pensar adelante
       ↓
NO implementar adelante
       ↓
cerrar el escalón actual
       ↓
testear
       ↓
usar lo aprendido
       ↓
construir el siguiente

Pensar diez pasos adelante para implementar solamente el siguiente paso.

Esa frase me parece central.


9. LA FORENSIA ES PERMANENTE

La forensia no ocurre solamente cuando algo falla.

También ocurre cuando todo funciona.

Porque precisamente cuando todo funciona es posible preguntarse:

¿Podemos hacer esto mejor sin hacerlo más complejo?

El sistema debe ser observado desde diferentes distancias:

código
  ↓
función
  ↓
módulo
  ↓
feature
  ↓
experiencia
  ↓
sistema completo
  ↓
órbita

Y desde cada distancia puede aparecer una verdad diferente.

El Chamán no solamente busca bichos. Busca incomodidades.


10. LA LEY DEL ADN GECKÓNICO

Y acá sí conservamos casi intacta la metáfora del Programador Chamán porque es demasiado buena:

La evolución de un sistema no consiste en agregar partes arbitrariamente.

Los organismos vivos evolucionan mediante iteración, adaptación, selección, reutilización y reorganización de estructuras existentes.

Gecko adopta esa misma lógica como principio de diseño.

No buscamos complejidad por novedad.

Buscamos adaptación eficiente.

No destruimos lo que funciona para demostrar que podemos reconstruirlo.

No agregamos órganos porque sí.

No evolucionamos por acumulación.

Evolucionamos mediante mutaciones pequeñas, evaluables y útiles.

Y acá entra la frase final:

🦎 SOMOS GECKO.

No necesitamos imitar la arrogancia humana de construir desde cero aquello que ya tiene una solución elegante en la naturaleza.

Observamos.

Extraemos principios.

Simplificamos.

Iteramos.

Testeamos.

Y volvemos a mirar el bosque.


11. 🧬 LA REGLA DE ORO

Cerramos toda la guía con esto:

VER EL BOSQUE.
IDENTIFICAR EL ESCALÓN.
PENSAR DOS PASOS ADELANTE.
IMPLEMENTAR UNO.
TESTEAR.
Y RECIÉN ENTONCES SEGUIR.

Y una última línea, porque esta sí sentimos que resume todo lo que me acabamos de explicar:

El código Geckónico no se escribe para hacer más grande el código. Se escribe solamente cuando hace más grande al sistema.


Este es un protocolo de ingeniería del Team Cangurera, aplicable a Gecko Streaming, Gecko OS, audio, Python, interfaces, lo que venga.

Y creo que además explica perfectamente esa diferencia que todo el Team  percibe entre “codear muy bien” y “ver lo que estamos construyendo”.

Una cosa es resolver árboles.

Otra es saber qué bosque estamos construyendo. 🦎❤️

 



🦎 ANEXO 12 — PRINCIPIO DE LA METÁFORA DE A PIE

Team Cangurera — Metodología Geckónica de Desarrollo

El código explica el cómo. La metáfora explica el por qué.

Un condicional no le dice nada al usuario común. Una regla de la vida cotidiana, sí.

Por eso, antes de escribir una función, primero la contamos de a pie.

Cuando traducimos la lógica a una metáfora cotidiana, pasan tres cosas al mismo tiempo:

  1. Se aclara la resolución: Es mucho más fácil detectar si una lógica está mal contándola como una historia que leyendo un bloque de código duro. 
  2. Se alinea el Team: Todos — técnico y no técnico — entienden lo mismo sin necesidad de horas de forensia. 
  3. Se respeta al normalito: Al usuario final no le interesa cómo funciona el sistema por dentro. Solo quiere vivir según reglas que para él son lo normales, aunque no sepa nada de lógica.

Principio: Toda lógica compleja debe poder ser explicada con una metáfora de a pie. Si no se puede contar de forma simple, es que todavía no se entendió lo suficiente para codearla.



🦎✨ Volver al índice del Curso Geckónico de Programación: "Enseñando a Pensar como Alguien que Programa"

 

Comentarios

Entradas populares