143

Road to Code: tips para mejorar tu pensamiento computacional

59140Puntos

hace 4 años

Estás a más de la mitad en tu camino de Road to Code, ya aprendiste a programar en Python y seguro estás buscando llevar muchas de las cosas que haces en el mundo real al código como: convertir unidades de medida o hacer cálculos matemáticos que a mano te tomarían más tiempo.

A medida que practicas entenderás mejor cómo funciona la programación en general, buscarás probar alternativas diferentes y poco a poco dominarás conceptos que al principio parecen complejos. En pocas palabras te estás convirtiendo en una programadora que desarrolla su pensamiento computacional.

Existen diversas formas de mejorar este aspecto de nuestra inteligencia, así que te compartiré algunos consejos que seguro podrás aplicar durante tu aprendizaje.

1. Aprende a resolver un problema

https://media.giphy.com/media/RNWkmkrpvW6t7em1mD/giphy.gif

Programar es algo que hacemos para lograr un objetivo, utilizando algoritmos para cumplir un objetivo y existen distintos métodos para antes de escribir código. El método de George Pólya se compone de 4 sencillos pasos para cumplir con nuestro objetivo:

  1. Comprende el problema: identifica lo que quieres lograr, cuales son las variables, condiciones asociadas y restricciones.
  2. Elabora un plan: una vez conociendo los datos presentes, el problema y recursos disponibles deberás trazar una ruta a seguir.
  3. Ejecuta el plan: realiza los pasos que definiste y valida sus resultados.
  4. Revisa y verifica la solución: ¿obtuviste lo que esperabas? ¿hubo necesidad de ajustes? ¿puedes transferir este conocimiento a otros problemas? son algunas de las preguntas que puedes hacerte para continuar.

2. Observa desde distintos ángulos

https://media.giphy.com/media/3o7WIDrb1l8bjVewZW/giphy.gif

Al momento de abordar un problema podemos hacerlo pensando de una forma convergente o divergente, siendo buena idea aplicar ambas para tener una mejor perspectiva a excepción de cuando las restricciones del mismo no lo permitan.

Al pensar de forma convergente observamos a un problema desde su exterior, de una forma analítica, racional y en el que existe una única solución aceptable. Esto permite que adquirir experiencia en situaciones donde identificamos un patrón, ejercitamos esa lógica para soluciones bien definidas.

Mientras en el pensamiento divergente observamos al problema desde su interior, buscando soluciones diversas, sin patrones definidos y realizando un trabajo más creativo. Hacerlo de esta forma te brindará más flexibilidad y adaptabilidad ante situaciones que son diferentes unas de otras.

Combinar ambas formas de pensamientos te brindará de mejores resultados cada vez y descubrirás que puedes aplicarlos en contextos que quizá pensabas no eran compatibles. Por ejemplo ¿de cuántas formas distintas puedes llegar a 64 en una operación de 2 números y cuántas con 3 números?

3. Divide y vencerás, pero no cómo te lo cuentan

https://media.giphy.com/media/3HEGGI98bwvWeXL9Qy/giphy.gif

Como proceso el pensamiento computacional consta de varias etapas por las cuales muchas veces pasarás de forma empírica:

  1. Descomposición: dividir un problema en partes más pequeñas.
  2. Evaluación: identificar potenciales resultados y errores.
  3. Generalización: identificar patrones y elementos en común.
  4. Abstracción: establecer y simplificar conceptos.
  5. Pensar de forma algorítmica: resolver el problema con los principios de un algoritmo.

El primer paso es crucial ya que define la base de etapas posteriores, siempre escucharás “divide un problema en problemas más pequeños para solucionarlos de forma individual” y esto es correcto pero hay algo que no suele mencionarse: piensa también en sus restricciones.

Identificar las restricciones de los elementos de un problema te permitirá identificar a cuales afecta. Si abordas al elemento con más restricciones evitarás cambios constantes en aquellos con menores, que en el sentido contrario tendrías que hacer ajustes para adaptar los elementos con menos restricciones a los que tienen más.

Por ejemplo, en un sistema de inventarios puedes tener varios productos con un identificador, nombre, marca, modelo, categoría, precio, etc. Seguramente tendrás una parte para calcular la venta de un cliente que tomará numero de artículos, precios y quiero que te imagines diseñando este segmento primero.

Recibes un precio, cantidad y calculas el total. Ahora programarás el producto, te das cuenta que es conveniente incluir nombre y marca en la salida del pago. Entonces deberás modificar la parte de venta. Después se añade un descuento a ciertas categorías de productos (que ya están en el producto), así que toca modificar la parte de venta una vez más… y así hasta terminar el caso de uso.

Una consideración importante es que incluso antes de escribir código y afrontar estos posibles cambios hay que definir cuales serán las características de tu proyecto para que exista una correcta adaptabiliad.

Live Session con tu profesor Facundo García

En Road to Code tienes una sesión en vivo o meetup cada semana para resolver dudas, interactuar con tus compañeros y el día de hoy 19 de octubre a las 5 pm COL/MEX estará Facundo García, profesor del Curso Básico de Python, resolviendo aquellas inquietudes que tengas al respecto de Python.

¡Te esperamos allá!

https://i.imgur.com/cYXlfs0.gif
Héctor Daniel
Héctor Daniel
Terranigma

59140Puntos

hace 4 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
6
9200Puntos

Yo tuve dificultades para desarrollar el algoritmo del ejercicio que me estaba planteando 🤔, Pero estoy segura que con el curso propuesto de esta semana lograré un mejor análisis del problema. 😊

#NUNCA_PARAR_DE_APRENDER 🤩

5
4677Puntos

El libro cracking the coding interview es demasiado bueno para mejor la algoritmia

2
4 años

he escuchado mucho ese libro … creo que lo leere… sabes si esta en español ?

1
4031Puntos
4 años

¿Ese libro está en español?

10
5755Puntos
4 años

Con todo respeto y buenas intenciones, creo que no deberian buscar versiones en español, les recomiendo que lo lean en ingles, asi no solo aprenden sobre algoritmos sino que ejercitan y pulen sus habilidades con el ingles para programacion

3
20457Puntos

Comprende el problema

Es interesante ver, tanto en informáticos como en otras carreras, le damos tanta prioridad a “ponernos en acción lo más pronto posible” que obviamos algo tan básico como entender que es lo que está ocurriendo.

Excelente publicación.

2
3439Puntos

Este reto es lo mejor que me paso, hace 1 año no tenia lógica de programación, me costaba mucho y pensé que esto nunca iba a ser para mi, hasta que vi este reto, puse mucho empeño y ahora puedo decir que he mejorado mucho. Muchas gracias platzi, son la mejor inversión que pude hacer :,3. Esta comunidad es la mejor, gracias a todos 😄

2
3296Puntos

“Soluciona primero el problema mano (o ten un esquema claro de como proceder) escribe el código después si lo haces al revés estás solucionando dos problemas a la vez”

2
51291Puntos

Si en la universidad siguen alguna carrera tipo ingeniería civil, mecánica, eléctrica, química, etc., usen python para hacer los cálculos. A veces pienso que es mejor que Excel y matlab. Además, esto nos hace mejorar nuestro pensamiento computacional también.

2
3304Puntos
4 años

Buen consejo, gracias.

1
4304Puntos

Muy útiles los métodos, he usado varios sin saber que ese era el procedimiento, pero ahora al tenerlos de guía es mas difícil perderse o divagar en un desarrollo desde 0.

1

Hola Hector. Esto de dividir y vencerás, tiene que ver con descomponer un problema en más pequeño, ahí es cuando aplicamos la factorización, ya hablando en términos matemáticos. ¿Es así? o ¿estoy diciendo cualquier cosa? Saludos

1
30222Puntos
4 años

Un ejemplo sería el uso de un algoritmo recursivo. Este parte el problema original hasta obtener la solución al mismo problema pero en un caso más sencillo(también llamado el caso base). En matemáticas es lo mismo a las funciones recursivas.

0
553Puntos

Buen articulo. Ademas, creo que me servira en mi trabajo 😃