Olvídese de algoritmos y modelos: aprenda a resolver problemas primero


Casi semanalmente un amigo o conocido me pregunta: “Quiero aprender a programar; ¿Con qué idioma debo empezar?” Más o menos cada dos semanas recibo un DM en LinkedIn que comienza con: “Mi hijo debería comenzar a programar; ¿Cuál es el mejor idioma para él?

No se trata solo de personas que nunca han codificado antes. A menudo recibo estos mensajes de personas que tienen varios años de experiencia en codificación a sus espaldas.

No digo esto para quejarme.

¡Únete a TNW en Valencia!

El corazón de la tecnología llega al corazón del Mediterráneo

Me gano la vida investigando los pros y los contras de diferentes lenguajes de programación, marcos y modelos de IA aquí en Medium. Saco mucho provecho de la gente que tiene esas preguntas.

Las preguntas son bastante intuitivas. Después de todo, a todos les gustaría trabajar con las mejores herramientas posibles y desarrollar sus habilidades de software lo más rápido posible.

Y cuando observa que cada desarrollador parece usar una pila de tecnología diferente, tiene mucho sentido preguntarse cuál es la correcta.

La cosa es que todo depende del problema en cuestión.

Ninguna tecnología por sí sola es buena o mala; solo depende del tipo de problema que quieras resolver. Al final del día, la programación es solo eso: la resolución de problemas mediante el uso de una computadora.

Entonces, para las personas que desean comenzar a programar o mejorar sus habilidades en desarrollo de software o ciencia de datos, la pregunta no debería ser: “¿Qué debo usar, Pitón o Julia?” La pregunta debería ser: “¿Cómo puedo resolver mejor los problemas de software?”

Como resolver problemas

Para una divulgación completa, no soy un científico informático de oficio. Soy un físico de partículas que casualmente usa conceptos de programación y ciencia de datos porque trato con enormes cantidades de datos de colisionadores de partículas.

Dicho esto, los físicos son igualmente buscados como científicos informáticos. Eso no se debe a su conocimiento sobre neutrinos o agujeros negros; es debido a sus capacidades de resolución de problemas.

Se dice que Abraham Lincoln dijo: “Denme seis horas para talar un árbol y pasaré las primeras cuatro afilando el hacha”.

Para programadores y científicos de datos, esto significa dedicar tiempo a comprender el problema y encontrar soluciones de alto nivel antes de comenzar a codificar. En la entrevista de codificación promedio, se espera que los candidatos pasen menos de la mitad de su tiempo escribiendo código y el resto del tiempo entendiendo el problema.

1. Entender el problema

¡No te saltes este paso, nunca!

La clave para saber si comprende un problema es si puede explicárselo a alguien que no esté familiarizado con él. Trate de escribirlo en inglés sencillo o en su lengua materna; dibujar un pequeño diagrama; o cuéntaselo a un amigo. Si tu amigo no entiende de lo que estás hablando, debes volver al enunciado del problema.

Las preguntas clave que se deben hacer son:

  • ¿Cuál es la entrada? ¿Cuál es la salida deseada?
    Por ejemplo, la entrada podría ser una matriz de datos y la salida podría ser una regresión lineal de los datos.
  • ¿Qué suposiciones subyacen al problema?
    Por ejemplo, puede suponer que (casi) no hay ningún error de medición en sus datos.
  • ¿Qué está complicando este problema?
    Por ejemplo, los datos que tiene pueden estar incompletos o el conjunto de datos puede ser demasiado pequeño para sacar conclusiones claras.

2. Desglose el problema

Cada gran problema consiste en muchos problemas más pequeños. Dado nuestro ejemplo anterior con la regresión lineal, es posible que desee considerar los siguientes subproblemas:

  • Limpiando los datos
  • Averiguar qué variables en los datos son significativas para la regresión y cuáles se pueden ignorar con seguridad
  • Buscar la herramienta adecuada para hacer la regresión (aquí es donde entra en juego la vieja pregunta sobre los lenguajes de programación y los marcos)
  • Evaluación de sus resultados y comprobación de errores

Desglosar el problema te ayuda a hacer un plan adecuado para tu trabajo.

También es más motivador, porque logrará hitos pequeños pero importantes en el camino. Esto es mucho más satisfactorio que sentarse frente a una montaña de trabajo y sentir que no avanza.

3. Comienza con un ejemplo

El diablo siempre está en los detalles.

En lugar de comenzar con todo el proyecto, tome una pequeña parte de él. Pruebe si su plan funciona o si tiene que adaptarlo debido a dificultades imprevisibles.

Esto te ayuda a entender las partes difíciles. Muchos problemas suenan simples, pero cuando comienzas a construirlos, hay un obstáculo tras otro.

En nuestro ejemplo, en lugar de usar todas las variables relevantes, primero se podría realizar una regresión lineal en un par de variables. Esto no le dará ningún punto por completar el proyecto; sin embargo, encontrar errores en sus scripts cuando todavía está tratando con una pequeña cantidad de datos puede salvarle la vida.

Cuando está arrojando todos sus datos a la máquina, ejecutándolos durante horas y luego regresa y se da cuenta de que el script se colgó a la mitad, se sentirá muy frustrado.

Confía en mí, ¡esto sucede mucho!

Ejecute pequeñas pruebas primero y asegúrese de que su solución funcione como la imaginó.

4. Ejecutar

Esta es la parte carnosa. Ahora puede construir la solución para su gran problema.

Arroja todos tus datos al código. Ejecute un modelo elegante. Haz lo que quieras.

Habiendo completado los tres pasos anteriores, ¡esto debería funcionar sin problemas!

Si hay errores, es posible que deba volver a los pasos 1 a 3 para ver si ya entendió todo y no pasó por alto ningún error.

5. Reflexiona

El hecho de que haya encontrado una solución no significa que haya encontrado la mejor solución. No se escape y dé por terminado el día; piense en cómo podría optimizar su solución y cómo podría enfocarla de manera diferente.

Es posible que desee intercambiar con sus colegas y preguntarles cómo resolverían el problema. ¿Es su enfoque diferente al tuyo?

También podría intentar identificar los cuellos de botella más grandes de su solución, es decir, las partes que requieren más tiempo y recursos para ejecutarse. ¿Cómo puedes mejorarlos?

Finalmente, reflexione sobre cómo podría evolucionar su solución en el futuro. ¿Los nuevos marcos de software o el uso de IA mejorarían su solución? ¿Cómo podría su solución contribuir a resolver otros problemas aún más complejos?

Últimas palabras famosas

Las personas, incluyéndome a mí, tienden a obsesionarse con los diferentes lenguajes de programación y el marco más nuevo que podría hacer que todo sea 1000 veces más eficiente.

Vale la pena recordar que esto es menos de la mitad de lo que se necesita para convertirse en un excelente programador. La otra mitad es la resolución de problemas.

No adquirirá habilidades para resolver problemas de la noche a la mañana.

Pero si aplica estos pasos, hace las preguntas correctas y lo hace con frecuencia, está en el camino correcto para llevar su carrera de buena a excelente.

Este artículo fue publicado originalmente en Medium. Puedes leerlo aquí.


Source: The Next Web by thenextweb.com.

*The article has been translated based on the content of The Next Web by thenextweb.com. If there is any problem regarding the content, copyright, please leave a report below the article. We will try to process as quickly as possible to protect the rights of the author. Thank you very much!

*We just want readers to access information more quickly and easily with other multilingual content, instead of information only available in a certain language.

*We always respect the copyright of the content of the author and always include the original link of the source article.If the author disagrees, just leave the report below the article, the article will be edited or deleted at the request of the author. Thanks very much! Best regards!