
Introducción
Se nos ha dicho desde siempre, que para buenos programadores necesitamos tener muy buena lógica. Sin embargo, muchas veces podemos sentir que por mas que practiquemos, nos sintamos estancados y no terminamos de comprender como hacer algunas tareas de desarrollo. Nos damos cuenta que la lógica juega un papel fundamental, pero es obvio que nos hace falta algo que no sabemos articular.
Yo te hago la siguiente pregunta: ¿sabes cual es el super poder un un buen programador?
No solamente significa tener muy buena lógica; un buen programador puede "ver mas allá" de lo que el "ojo no educado" puede percibir. ¿Quieres saber de que se trata? y ¿Cómo puedes convertirte en uno? Quédate a leer el articulo.
El origen del problema
Las universidades y las academias tecnológicas nos ha enseñado que pongamos excesivo foco en que desarrollemos el pensamiento lógico, lo cual no esta mal, ya que nos permite resolver problemas e idear soluciones. Sin embargo, desde mi perspectiva trabajando como programador y mentor desde hace varios años, me he podido percatar que hay dos habilidades fundamentales que se dejan fuera y que lamentablemente solo las aprendes a desarrollar durante el transcurso de tu carrera profesional.
¿Cuáles son estas dos habilidades a parte de la lógica? El Pensamiento abstracto y el Pensamiento critico.
Aprendiendo a convertirse en un programador senior
Quizá pienses, ¿en que te beneficia aprender el pensamiento abstracto y el pensamiento critico? Veras, la principal diferencia entre un programador junior y un programador senior, muchas veces no es la cantidad de herramientas tecnológicas que conoce, mas bien un programador senior posee una amplia capacidad de análisis y sentido común que ha forjado a lo largo de los años.
Esta capacidad puedes desarrollarla, si dedicas tiempo a las habilidades que te he mencionado, así tengas pocos años en la industria.
Guillermo, pero aun no logro entender ¿Cómo esta eso, que si desarrollo mi pensamiento critico y mi pensamiento abstracto me convertiré en un programador senior?
Vamos a entender que significa cada uno de los diferentes tipos de pensamiento.
Pensamiento lógico
El pensamiento lógico es el tipo de pensamiento que nos permite establecer conclusiones a partir de una serie de razonamientos y suposiciones. Cuando hablamos de programación, lo utilizamos para entender la naturaleza del problema al que nos enfrentamos y plantear el camino mas obvio para crear una solución.
Pensamiento abstracto
El pensamiento abstracto es un tipo de pensamiento que nos da la posibilidad de crear ideas, modelar la realidad, imaginar sucesos e idear soluciones.
Pensamiento critico
En términos simples, el pensamiento critico es la capacidad que tenemos todos los seres humanos para analizar y cuestionar la información que recibimos.
Si comenzamos a prestar atención a estos tres elementos, será mas fácil que aprendas a pensar como un programador con experiencia, !lo harás como si fueras un super programador!
Aplicando esta metodología para resolver problemas de programación
Veamos como resolver un problema de programación utilizando esta metodología.
Descripción del problema
- Un departamento escolar de una preparatoria quiere modernizar sus procesos.
- La escuela tiene 100 estudiantes
- Desea conocer cuantos estudiantes son sobresalientes, es decir cuantos tienen un promedio mayor a 9.5 para otorgarles un reconocimiento.
- Imagina hacer esto de manera "manual"
¿Cómo lo resolvemos?
- Entender verdaderamente el problema a resolver (Pensamiento critico) ¿Para que? Para identificar claramente el objetivo que estamos buscamos y saber discernir lo que no ayuda.
- ¿Cuáles son los pasos mas obvios para llegar a la solución? (Pensamiento lógico) ¿Para que? Para entender los todos pasos intermedios que se deben completar para cumplir el objetivo (algoritmo) /identificar secuencias de decisión y repetición
- Crear una representación de la solución y del problema (Pensamiento abstracto) ¿Para que? Para identificar fácilmente los elementos del mundo que participan en el problema y escribir en código nuestra solución.
Aplicando el método
Paso 1 - Problema=objetivo: (Enfoque total en conocer el objetivo / utiliza tu pensamiento critico)
- ¿Conocer cuantos estudiantes con promedio mayor a 9.5 existen?
Paso 2 - Pasos obvios para llegar a la solución (Diseña tu algoritmo / utiliza tu pensamiento lógico):
- Realizar una comprobación para cada estudiante (secuencia repetitiva)
- Obtener su promedio
- Comparar si el promedio es mayor a 9.5 (secuencia decisión)
- Si es mayor, almacenamos la información del estudiante
- Si no, lo omitimos
- Llegamos al final de los estudiantes
Paso 3 - Representación de la solución y del problema (Identificar características de los actores /utiliza tu pensamiento abstracto)
¿Qué características tiene un estudiante?
- Nombre
- Apellido
- Edad
- Grado
- Promedio
¿Cuántos estudiantes tenemos?
- Mas de 100
Es importante realizar estos pasos en orden antes de codificar la solución.
Cuando tengas tu solución, dedica el tiempo necesario para realizar las representaciones. Esto facilitara transcribir tu solución en un lenguaje de programación.
Como buena practica, es recomendable que siempre que estés trabajando con muchas variables de un mismo tipo (n Estudiantes) utilices estructuras de datos como listas o arreglos.
Con esto estarás aplicando verdadero pensamiento de programador, ya has resuelto el problema. La mayoría de las personas se la pasa echando código como locos sin saber lo que hacen, ahora implementemos esta solución.
Puedes verificar el código fuente en Python en el siguiente enlace: https://bit.ly/3ErLJnH
¿Por que esta metodología? Citando a Albert Einstein: Los problemas no se pueden resolver en el mismo nivel de conciencia. Lo que propongo con esta metodología es elevar tu conciencia y capacidad de entendimiento para abordar de manera mas amigable todos los retos que como programadores podamos tener.
¿Qué tal te ha parecido? ¿Ya utilizas alguno de estos esquemas de pensamiento? Escríbeme en los comentarios, será un placer leerte