“Cada vez más empresas tradicionales se dan cuenta de que, para competir y crecer en un mundo digital, deben parecer, pensar y actuar como empresas de software.” - McKinsey
Una organización es un conjunto de personas que piensan; de forma grupal e individualmente. Pensamos para lograr objetivos personales, profesionales y organizacionales. Lo hacemos para resolver, en cada uno de esos tres niveles, numerosos tipos de problemas; simples, complejos, recurrentes, únicos, con alto impacto, con bajo impacto… Necesitamos elegir a diario qué dirección seguir; dónde invertir nuestro limitado tiempo.
El reto de la toma de decisiones constantes
¿Podemos pensar y plantearnos cada acción que realizamos?
Imposible. Sabemos que nuestro cerebro consume energía al afrontar nuevos retos, por lo que está de algún modo programado para ponerse en modo ahorro ante situaciones conocidas y familiares. Y en las organizaciones, creamos estructuras con roles bien definidos, para optimizar nuestras tomas de decisiones. Hay numerosas herramientas para repartir estas responsabilidades de modo eficiente y bien delimitado. Esto nos permite focalizarnos solo en una cantidad determinada de retos a resolver diariamente. Pero tiene sus riesgos.
Sentirnos demasiado cómodos en nuestro ámbito de actuación y dejar de hacer preguntas que se salgan de nuestra parcela, hará que se pierdan oportunidades, personales, profesionales y organizacionales.
Por ejemplo, si te planteas utilizar la matriz RACI para delimitar la toma de decisiones de tu equipo, puede que el siguiente artículo de McKinsey te resulte interesante, en donde se propone dar voz, y por lo tanto animar a pensar y realizar cuestiones, a todos los integrantes del equipo antes de la toma de decisión, aunque la última palabra o voto recaiga en unos pocos o un solo individuo.
Veamos un ejemplo ilustrativo de esto; las hormigas legionarias.
Las hormigas legionarias son conocidas por su comportamiento de caza en masa, que es muy eficiente y suele garantizar el éxito. Su modus operandi es formar grandes columnas de hormigas que se desplazan en busca de presas. Durante estas expediciones de caza, las hormigas siguen un camino determinado por feromonas dejadas por las anteriores, formando una especie de “autopista” de hormigas.
El problema surge cuando estas columnas de hormigas se encuentran con un obstáculo insuperable, como un cuerpo de agua o un obstáculo vertical. En tales casos, las hormigas continúan siguiendo ciegamente a las anteriores, sin cuestionar la viabilidad del camino, incluso cuando este comportamiento puede llevar a que gran número de hormigas avancen sin encontrar una solución y llegando a un final horrible; en contra de la supervivencia de la organización.
Dejarse llevar por la inercia de una solución que ha funcionado anteriormente, es un riesgo real en un entorno complejo y cambiante como el que viven las organizaciones hoy en día. La capacidad de pensar de cada uno de los engranajes que conforman su maquinaria es un intangible que no se puede subcontratar.
Nuestra aliada disruptiva
Siendo realistas, no todos contamos con las capacidades, e incluso información, para tomar decisiones acertadas. Pero es indiscutible, todos sumamos y es importante que aprendamos a distinguir cuándo es necesario utilizar el pensamiento crítico y lógico, para romper con el bucle de <<siempre se ha hecho así>>.
Indiscutiblemente, la tecnología, y en concreto, las computadoras junto con las soluciones de software, están siendo las protagonistas de los negocios más disruptores y desafiantes de los modelo de negocio existentes, cada vez a una mayor velocidad. El código nos permite crear mundos y productos accesibles desde diferentes dispositivos con un par de clics. Se generan redes de personas, máquinas o una sinergia de ambas a lo largo y ancho de nuestro globo terráqueo gracias a la conectividad de internet y programas informáticos. Ahora incluso, con inteligencias artificiales nuevas emergiendo cada día.
El sentimiento de vértigo es inevitable. No nos gusta lo que no conocemos o controlamos. Y es que, ya dijo Arthur C. Clarke que “toda tecnología lo suficientemente avanzada es indistinguible de la magia”. Pero no debemos olvidar que todo esto ha sido creado por el hombre, no hay nada más humano que la habilidad de diseñar herramientas que nos ayuden a ser mejores para lograr los objetivos que nos proponemos. Y también, la transferencia de conocimiento de cómo utilizarlas. Esto es porque somos mejores avanzando juntos, colaborativamente.
Y ahora hemos creado una compañera de viaje, que nos libera de las tareas repetitivas, es capaz de realizar grandes cálculos en milisegundos, puede procesar volúmenes ingentes de datos, y además, almacenar toda la información que sea necesaria. Necesitamos aprender a comunicarnos en el nuevo ecosistema que se ha creado por su llegada.
El código es el nuevo lenguaje universal. Computational Thinking va más allá.
Marc Andreessen, creador de Nestcape -o lo que fue para muchos de nosotros, nuestro primer navegador web- ya nos avisó con su sentencia “el software se está comiendo el mundo”. Ahora “el software es el mundo y los datos la energía más valiosa”.
Es el momento de que aprendamos a comunicarnos en este nuevo ecosistema en el que la información crece exponencialmente y para ello necesitamos habilidades y herramientas nuevas. Y no, no es necesario aprender a programar para conseguirlas. Aunque puede ser una vía útil para conseguir entender cómo lograr crear negocios y soluciones en el nuevo mundo digital, no es algo trivial y el coste beneficio no tiene sentido en muchos casos. Hay más formas de comunicación, además del lenguaje. Y podemos entender el entorno, sin aprender a codificar con lenguajes de programación.
Computational Thinking es un conglomerado de todos los aprendizajes y buenas prácticas que las ciencias computacionales han logrado adquirir hasta el día de hoy, permitiéndonos entender y crear nuevas soluciones que den respuesta a los retos complejos en este nuevo mundo.
Recuperemos, la idea de que es un conjunto de varios aprendizajes y veamos cuáles son;
- Es un mindset que permite tener perspectivas y expresar ideas estructuradamente favoreciendo su entendimiento.
- Es una macrohabilidad compuesta de cuatro pilares; abstracción, descomposición, reconocimiento de patrones y diseño de algoritmos. Imprescindibles para entender problemas complejos y diseñar soluciones eficientes y reproducibles en el nuevo mundo digital.
- Es un grupo de herramientas y conceptos que proveen un vocabulario y forma de trabajar homogéneo que fomentan la colaboración y cooperación.
1. Computational Thinking: mindset
La característica más notable de las computadoras es que pueden almacenar, gestionar y analizar grandes cantidades de datos, además de su capacidad de cálculo, lo que es muy útil para tomar decisiones informadas, analizando la gran cantidad de información que generamos y recopilamos hoy en día.
¿Significa esto que tenemos que empezar a pensar como las máquinas? No tiene nada que ver con esta idea. Los ordenadores no son más que una herramienta que replica muy bien parte de nuestras habilidades cognitivas. Incluso nos superan en la realización de las tareas que acabamos de comentar.
Pero, necesitan que les indiquemos exactamente lo que tienen que hacer, de forma inequívoca y sin ambigüedad. Y ello significa que para sacarles partido, hemos tenido que aprender a diseñar las soluciones siguiendo algunos estándares, principios y buenas prácticas para lograr maximizar su utilidad. Hasta tal punto, que hemos creado comunidades de personas que han estudiado cómo es el mejor modo de expresar y representar las soluciones para que sean mantenibles tanto por diferentes personas, mejorando su legibilidad, como a lo largo del tiempo, buscando soluciones con visión de futuro y permitiendo su adaptabilidad y mejora continua.
2. Computational Thinking: macrohabilidad
Jeannetter M. Wing acuñó el término Computational Thinking y quiso destacar en su paper del mismo nombre, que es una actitud y un set de habilidades que todo el mundo, sea programador o no, debería tener. ¿Qué habilidades son? ¿Y en qué nos ayudan?
- Abstracción: nos ayuda a tener una foto completa del problema complejo, filtrando solo la información que es realmente relevante, para evitar el ruido. Esto nos permite tener una visión global para poder afrontar el reto priorizando las tareas a la vez que nos ayuda a entender cuáles son los elementos que componen el sistema y sus relaciones.
- Descomposición: es el proceso por el que dividimos un problema complejo en retos más pequeños y manejables. Esto ayuda a evitar la parálisis a la vez que nos permite focalizar nuestro esfuerzo y recursos en una tarea realizable.
- Reconocimiento de patrones: identificaremos si hay algún patrón que se da entre los diferentes subproblemas que tenemos, es decir, si hay algunos que sean iguales o similares donde se pueda reutilizar una solución ya implementada. Esto permite optimizar los recursos.
- Diseño de algoritmos: esta habilidad facilita el diseño de un paso a paso que nos indique cómo resolver el problema de forma eficiente ayudándonos a planificar para tener claros cuáles son las acciones a realizar y el orden de las mismas.
3. Computational Thinking: herramientas y conceptos
Al afrontar problemas complejos, necesitamos tener una estrategia que evite la parálisis y nos ayude a accionar una solución. Y para poder transferir las habilidades anteriormente descritas, son necesarias herramientas y conceptos que nos ayuden a aplicar las habilidades y un vocabulario común que nos permita entendernos. A lo largo de los años de desarrollo, las ciencias computacionales y todas las personas involucradas en su evolución, han generado un toolkit bien extenso y según la naturaleza del problema complejo, será más útil decidir utilizar unas u otras.
Conocer y utilizar todas estas habilidades, herramientas y conceptos nos ayuda a comunicarnos y colaborar en el nuevo mundo digital. Computational Thinking pone a nuestra disposición así, un modo en el que poder afrontar todos los nuevos retos complejos y cambiantes del ecosistema en el que ordenadores y softwares son grandes aliados. Y no es necesario saber programar para aportar valor y comprender las soluciones.