Iteraciones
4 minutos · Por Marc Roure¿Sabes programar?
La respuesta a esta pregunta suele ser binaria. Sí o no. Si tu respuesta es que no, enhorabuena, aún estás a tiempo de adquirir este superpoder. La recompensa es mucho mayor de lo que puedas imaginarte. Si tu respuesta es que sí, sabrás cuánto de cierto hay en la frase anterior.
Aprender a programar es como aprender un nuevo idioma. No en vano, hablamos de lenguajes de programación cuando nos referimos a Javascript, Python, Swift, Kotlin o C++. Aprender a hablar inglés, por ejemplo, te permite comunicarte con otras personas que también lo hablan. Aprender un lenguaje de programación te permite comunicarte con quien también habla ese lenguaje: las máquinas.
Lo bueno de poder hablar con las máquinas es que ellas solo entienden la parte lógica del lenguaje. Simplificando, si las máquinas tuvieran cerebro, solo usarían el hemisferio izquierdo. Una máquina no se enfada porque le hayas dicho algo con sorna, la máquina no entiende la ironía ni intenta comprender tu expresión no verbal. La máquina vive en la absoluta literalidad. Por suerte la mayoría de los humanos no somos máquinas.
Un lenguaje de programación tiene su sintaxis y su semántica. Reglas mucho más sencillas que las de las lenguas. Objetivamente es mucho más fácil aprender a programar que aprender un nuevo idioma. Algo extraordinario que uno aprende al empezar a programar es que todo en el código —quizás también en la vida— se puede explicar a partir de cuatro recursos del lenguaje: los objetos, los condicionales, los bucles y las funciones.
El ejercicio de la tortilla es una práctica común en el aprendizaje de la programación. El ejercicio consiste en programar los pasos para hacer una tortilla. Coger (función) un huevo (objeto), golpear (función) el huevo contra el plato (objeto) mientras (bucle) el huevo no se rompa (condicional). Si el huevo se rompe (condicional), tirar el contenido del huevo en el plato y batir (función) mientras (bucle) la clara y la yema no estén mezcladas (condicional). Y así hasta el final.
Los condicionales y los bucles son los que hacen que las cosas pasen. Los primeros reflejan la toma de decisiones. Si pasa esto hago aquello, sino, hago lo otro. Los segundos permiten iterar múltiples veces sobre algo que pasa de un estado inicial a un estado final. Algo que avanza por repetición.
En el ámbito del producto digital, usamos constantemente la toma de decisiones y las iteraciones. El objetivo de un equipo de producto es tomar el mayor número de decisiones correctas que le permitan entregar y capturar el máximo valor a través del producto. Por definición, el futuro es incierto y la incertidumbre crece de forma exponencial: cuanto más lejos está algo en el tiempo, más incierto se vuelve. Esto lo saben los equipos de producto y los abogados matrimonialistas. Los primeros intentan minimizar el riesgo de tomar decisiones equivocadas a través de iteraciones en el desarrollo del producto que sean cortas e incrementales. La idea es sencilla, cada iteración es el resultado tangible de la toma de una o varias decisiones que afectan al producto. En cada iteración, por lo tanto, el producto cambia y cambia también la respuesta del usuario al producto. Es bueno aclarar que lo que cambia en cada iteración no es necesariamente el producto final, el resultado de una iteración pueden ser nuevas percepciones generadas por una investigación, un prototipo o una entrevista, por ejemplo. Las nuevas respuestas del usuario se incorporan como información en la toma de las siguientes decisiones y de esta forma se reduce el riesgo a fallar. En Agile a las iteraciones se le llaman sprints y originalmente estos fueron diseñados para hacer exactamente esto: entregar valor de forma temprana y continua.
Decidir e iterar es algo intrínseco en la lógica del ser humano. Casi nada sale bien a la primera y de la repetición se aprende. En el deporte a esto se le llama entrenamiento. En vida se le llama experiencia. Si aún sigues aquí, ¿sabes aquello que no acaba de salirte bien?
Vuelve a intentarlo.