Carrera

Cómo pensar como un programador al resolver problemas

Cómo pensar como un programador al resolver problemas



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

¿Quieres aprender a resolver problemas como un programador de computadoras? Entonces has venido al lugar correcto.

Aquí exploramos cómo el programador promedio aborda los problemas y sugerimos formas de ayudarlo a hacer lo mismo. Le espera un futuro mejor y más eficiente para la resolución de problemas.

Al menos en teoría.

RELACIONADO: 9 DE LOS MEMES DEL PROGRAMADOR MÁS DIVERTIDOS AHORA MISMO

¿Qué es la resolución de problemas en programación?

Antes de comenzar, valdría la pena aclarar qué significa la resolución de problemas para los programadores.

Según la Escuela de Computación de la Universidad de Utah, a menudo se define como:

"Resolver problemas [es] resolver problemas es el núcleo de la informática. Los programadores primero deben comprender cómo un ser humano resuelve un problema, luego comprender cómo traducir este 'algoritmo' en algo que una computadora pueda hacer, y finalmente cómo 'escribir' la sintaxis específica (requerida por una computadora) para realizar el trabajo ".

Suena simple en la superficie, pero, como está a punto de descubrir, en realidad es una especie de "arte" más que una ciencia (hasta cierto punto).

Agárrate fuerte...

¿Cómo piensas como programador?

Steve Jobs dijo que "todo el mundo en este país debería aprender a programar una computadora porque te enseña a pensar". Este es un mensaje muy poderoso y no significa necesariamente que debas convertirte en la próxima Ada Lovelace, Steve Wozniak o Bill Gates.

Desarrollar "habilidades blandas" o "meta-habilidades", como aprender a pensar con claridad y de manera crítica, pagará dividendos en muchos aspectos de su vida.

Sobre todo en tu carrera profesional, sea cual sea el camino que hayas elegido, sea ingeniero o no.

Junto con otras "meta-habilidades" importantes como la toma de perspectiva, la detección del dolor, la narración de historias, las entrevistas y la conexión de los puntos, dominar esta habilidad se considera esencial en nuestro mundo tecnológicamente complejo. De hecho, muchos empleadores priorizan la resolución de problemas y, hasta cierto punto, la codificación básica sobre la mayoría de las otras habilidades cuando buscan posibles nuevos empleados.

"Las habilidades de resolución de problemas son casi unánimemente la calificación más importante que buscan los empleadores ... más que el dominio de lenguajes de programación, la depuración y el diseño de sistemas.

Demostrar el pensamiento computacional o la capacidad de analizar problemas grandes y complejos es tan valioso (si no más) que las habilidades técnicas básicas necesarias para un trabajo ". - Rango de hacker.

Entonces, ¿cómo puedes desarrollar tal habilidad? Bueno, una forma es intentar pensar como un programador.

Si conoce a alguien en su grupo de amigos, su primer puerto de escala podría ser tener una discusión franca y abierta sobre esto. Puede parecer incómodo al principio, pero rápidamente aprenderá y amará el proceso.

Pero, en esencia, los programadores aprenden, generalmente mediante ensayo y error, a volverse progresivamente más efectivos en la resolución de problemas. La mayoría de las personas, a menos que haya desarrollado un sistema sólido, probablemente involucrarán algo como lo siguiente:

1. Intente una solución.

2. Si no funciona, pruebe con otro.

3. Si eso también falla, enjuague y repita el paso 2 hasta que encuentre algo que funcione (tal vez por suerte).

Si bien suena como un enfoque razonable, esta metodología está agotando su energía mental y, lo más importante, su tiempo valioso e irremplazable (su único activo real en la vida). Este es, en efecto, el método de fuerza bruta para resolver problemas.

Los programadores son maestros en una forma más sutil y efectiva de hacer esto a través de una estrategia de planificar, hacer, verificar y actuar. Esto implica, en efecto:

1. Tener un enfoque marco para abordar un problema.

2. Practica, aprende de los errores, repasa y mejora hasta que lo domines.

Si bien, inicialmente, esto requiere una gran inversión de su tiempo, una vez que esté bien versado en él, pagará dividendos en el futuro. También debe intentar cultivar algunos otros hábitos de estilo de vida (como los de Elon Musk) que lo ayudarán a resolver problemas utilizando una mentalidad de programador.

¿Cómo puedo mejorar mis habilidades de resolución de problemas de programación y desarrollar una mentalidad de programador?

Como hemos mencionado anteriormente, la mejor manera es desarrollar un marco para resolver problemas y luego practicar, practicar y practicar. Pero, ¿qué significa tener un marco para la resolución de problemas?

Existe una amplia biblioteca sobre este tema, pero en esencia, un marco de resolución de problemas tendrá algunos, si no todos, de los siguientes componentes principales:

1. Analice y comprenda el problema en cuestión

El primer paso en su marco de resolución de problemas debe ser intentar saber exactamente lo que se pide o se requiere. Muchos problemas, aparentemente insuperables, lo son porque inicialmente no los comprendemos en su totalidad.

¿Entonces como haces esto? Un indicador de que ha comprendido el problema es poder explicarlo en un inglés sencillo o incluso en un diagrama.

Al pensar y vocalizar el problema, encontrará rápidamente los agujeros en la lógica o en su propia comprensión que puede haber pasado por alto de antemano. Este es un proceso del que la mayoría de los programadores estarán muy conscientes.

Escriba el problema, intente esbozarlo (tal vez usando un mapa mental) e intente explicárselo a otra persona.

2. No planificar, está planeando fallar (hacer un plan y dividir un problema grande en otros más pequeños)

El siguiente paso es intentar formular un plan de ataque. Como todo en la vida, nunca empieces algo hasta que hayas hecho esto (especialmente cosas como invertir tu dinero).

Divida los problemas más grandes en porciones más pequeñas y digeribles y piense en formas de tacharlos de la lista. Probablemente desarrolló algo similar a esto durante su tiempo de estudio en la universidad o en cualquier otro momento de su vida.

Para los programadores, no se sumergen directamente sin tener esta fase ordenada. El tiempo invertido en esta etapa le ahorrará una tonelada de tiempo perdido en el futuro.

Esta es la mentalidad del programador.

Intente responder una pregunta como, "dada una entrada, ¿cuáles son los pasos que necesito para devolver otra salida?", Etc. Sin mencionar una red de instrucciones "si esto, entonces eso, o algo más".

Esto es fundamental para los programadores, ya que necesitan desarrollar subrutinas, funciones, métodos y procedimientos, y otros fragmentos de código más pequeños, que deben funcionar como un todo.

Un error en uno puede afectar, y generalmente lo hará, otras partes del código e incluso puede provocar problemas como bucles infinitos. Al trabajar en cada etapa del problema principal de esta manera, los errores y las soluciones se pueden abordar a medida que surgen.

Tampoco es inusual que un bloqueo requiera la resolución de problemas en varios fragmentos de código autónomos más pequeños. Esta es, en esencia, una forma de conectar los puntos.

En una nota al margen, esta es también una de las principales razones por las que los programadores utilizan los comentarios en el código. Especialmente cuando se trabaja como parte de un equipo (nadie puede leer la mente de otro).

Pero, estamos divagando.

No debe tener miedo de pedir ayuda, o al menos una investigación. Puede que no tengas que reinventar la rueda. Pero NO HAGA Confíe en las soluciones de otros a sus problemas, ya que no aprenderá ni desarrollará su propia mente y habilidad en un área en particular.

"Si pudiera enseñarle a cada programador principiante una habilidad de resolución de problemas, sería la 'técnica de reducir el problema' ...

Reduzca el problema hasta el punto en que sepa cómo resolverlo y escriba la solución. Luego expanda el problema un poco y reescriba la solución para que coincida, y continúe hasta que esté de regreso donde comenzó ". - V. Anton Spraul.

3. "Mantente en el objetivo", a veces puedes quedarte atascado

"Los planes mejor trazados de ratones y hombres a menudo salen mal", como dijo Robert Burns. No se preocupe, esto es de esperar y, a menudo, aceptado.

Pero, ¿qué haces cuando no puedes resolver un problema, especialmente al programar?

Si bien muchos levantan las manos a la primera vista de un problema o una solución que falla, la mayoría de los programadores han desarrollado una actitud de curiosidad hacia los "errores".

Sin mencionar la determinación de solucionarlos.

Cuando surgen, los programadores generalmente iniciarán un proceso, una función mental si se quiere, de los siguientes:

  • Participe en un proceso de depuración yendo paso a paso a través de su solución escrita para encontrar problemas obvios (como el mal uso de la sintaxis).
  • Si eso falla, reevalúe dando un paso atrás e intente "encontrar otro ángulo" del problema. ¿Se puede abstraer algo o te falta algo? En otras palabras, ¿estás "extrañando el bosque por los árboles"? Es muy, muy común empantanarse tanto en los detalles que a menudo se pierde el panorama general.
  • Si todo falla, simplemente puede comenzar de nuevo; se sorprenderá de las soluciones que se pueden encontrar.

4. La práctica hace al maestro

¿Un pequeño cliché? Quizás, pero no puede esperar resolver todos los problemas o subproblemas complejos de la noche a la mañana. Ser bueno en cualquier cosa requiere tiempo para practicar, fallar, volver a intentar y dominar.

A medida que desarrolle su experiencia en la resolución de problemas, el proceso se volverá cada vez más rápido a medida que identifica los métodos que ha utilizado anteriormente y que pueden aplicarse en una situación determinada. De hecho, muchas de las personas más exitosas participan con regularidad en la "resolución de mini-problemas".

Algunos juegan al ajedrez, otros al sudoku, y otros a crucigramas o incluso a juegos de computadora, de forma regular. ¡Intenta encontrar uno que disfrutes y trabaja esa materia gris!

Y, probablemente lo más importante de todo, no tema al fracaso. Aprenderá mucho más de donde se equivoca de lo que aprende de donde tiene éxito. ¡Aprende a fallar y falla rápido!

Y eso es una envoltura. ¡Su camino hacia la resolución de problemas como programador le espera!

Buena suerte viajero.


Ver el vídeo: Aprende a programar en 20 minutos - #EDtaller 136 (Agosto 2022).