blog

Si quieres ser Desarrollador debes pensar algorítmicamente!

El programador es normalmente un profesional dedicado a analizar y abstraer problemas del mundo real (en los campos más diversos) y sintetizar su posible solución (correcta y eficiente) empleando alguna forma de “computadora”.

Jose Gratereaux

Jose Gratereaux

Author

Si quieres ser Desarrollador debes pensar algorítmicamente!

El programador es normalmente un profesional dedicado a analizar y abstraer problemas del mundo real (en los campos más diversos) y sintetizar su posible solución (correcta y eficiente) empleando alguna forma de “computadora”. Es decir, la esencia de su tarea profesional se relaciona directamente con aquella definición genérica de Algoritmo.

¿Que es un algoritmo y como se relaciona con pensamiento Algorítmico? Un algoritmo es entonces una secuencia finita, ordenada y lógica de pasos para llegar al objetivo de resolver un problema. El “pensamiento algorítmico” es la capacidad/aptitud que tenemos para realizar el proceso de abstracción, modelización del problema, deducciones lógicas y síntesis de la solución que conduzca a escribir el algoritmo correcto.

Según (Futschek, 2006) este pensamiento incluye las siguientes capacidades:

  • analizar problemas dados;
  • especificar un problema de manera precisa;
  • encontrar las acciones básicas que son adecuadas para resolver el problema dado;
  • construir un algoritmo correcto para resolver un problema determinado, utilizando las acciones básicas;
  • pensar en todos los posibles casos tanto especiales como normales de un problema;
  • mejorar la eficiencia de un algoritmo.

¿Si soy programador, como influye pensar Algorítmicamente? Si comienzas a programar directamente, salvo que lo que vas a hacer sea algo realmente muy sencillo, lo más probable es que el algoritmo que crees no sea ni claro ni eficiente. Aprender a programar es mucho más que escribir código: implica aprender a pensar. De ahí la importancia de introducir la programación y el pensamiento computacional o algorítmico.

Que un programa funcione no significa que esté bien hecho. Seguramente todos podríamos construir una casa poniendo 10 columnas en medio del salón para que se sostenga, pero no sería eficiente ni estético.

En programación, los usuarios no van a ver las columnas que hay dentro de la casa, pero si tú como programador añades 10 columnas en medio del “salón” de tu programa, ese programa será muy difícil de mantener o de actualizar en el futuro.

Antes de empezar a programar o a resolver un algoritmo debes tener en cuenta lo siguiente:

  • Tener claro cuál es el problema que va a solucionar.
  • Planifica, establece un objetivo que permita medir la solución del problema.
  • Elaborar un algoritmo que solucione el problema.
  • Realizar pruebas al algoritmo para verificar los resultados.
  • Mide el tiempo de ejecución y resolución y busca mejoras

A lo que voy con “pensar algorítmicamente” es pensar con detalle preciso el proceso automático de como funciona algo, de como fluyen las cosas; y siempre es buscar la manera de como se solucionan los problemas de la manera más óptima posible, no es solo que funcione y ya!

En la programación y quiza en tu vida cotidiana también, si quieres dejar de funcionar por inercia y por que la “vida lo hizo así” siguiendo una monótona sintaxis llena de funciones que ni tú las entiendes, te recomiendo tener esto en cuenta para crear tu algoritmo en cualquier circunstancia:

  • Debe ser finito: Si tu algoritmo no termina resolviendo el problema para lo que fue creado entonces no sirve, debe cumplir un objetivo específico.

  • Las instrucciones deben estar bien definidas: Cada paso del algoritmo tiene que ser definido con precisión; las instrucciones se deben especificar sin ambigüedades para cada caso.

  • Debe ser eficaz: El algoritmo debe resolver el problema que fue diseñado para resolver. Y debe ser posible demostrar que el algoritmo converge con solo un papel y lápiz.

¿Entonces Como ejercito mi mente para poder pensar de esta manera? Lo primero es que te recomiendo como programador que tomes cursos (pueden ser de Udemy o YouTube) de Resolución de Algoritmos y estructura de Datos, pues es la base (No importa el lenguaje).

Inscríbete en una de estos portales y comienza a resolver problemas por diversión o reto. https://projecteuler.net/ o https://www.codewars.com/ Cuando tengas un proceso que automatizar, no te conformes con lo que te dan, valídalo, piensa en mejoras, busca soluciones que apoyen a la eficiencia del proceso.

Siempre debes estar dispuesto a proponer ideas que mejoren, siempre piensa en mejora continua.

Nunca pares de practicar, el cerebro es como un músculo y lo debes ejercitar para hacerlo más fuerte.

Jose Gratereaux

Jose Gratereaux

I'm a software engineer specialized in Laravel, building modern web applications and sharing what I learn along the way. If you enjoyed this post, consider following me on GitHub.