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

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

diciembre 8, 2022 0 Por RenzoC



Casi todas las semanas, 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: “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 en su haber.

No lo digo para quejarme.

¡Únete a TNW en Valencia!

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

Me gano la mitad de la vida explorando los pros y los contras de diferentes lenguajes de programación, marcos y modelos de IA aquí en Medium. Me beneficio mucho de las personas que tienen tales 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, solo tiene sentido preguntarse cuál es la correcta.

El hecho es que todo depende del problema a resolver.

Ninguna tecnología en sí misma es buena o mala; todo depende del tipo de problema que quieras resolver. Al final, la programación es solo eso: resolver problemas usando una computadora.

Por lo tanto, 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 «¿Cuál debo usar, Python o Julia?» La pregunta debería ser: «¿Cómo puedo solucionar mejor los problemas de software?» »

Cómo solucionar problemas

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

Dicho esto, los físicos son tan buscados como los informáticos. No es por su conocimiento de los neutrinos o los agujeros negros; es debido a sus habilidades para resolver problemas.

Según los informes, Abraham Lincoln dijo: «Dame seis horas para cortar un árbol y pasaré las primeras cuatro afilando el hacha».

Para programadores y científicos de datos, eso significa dedicar tiempo a comprender el problema y encontrar soluciones de alto nivel antes de comenzar a codificar. En una 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 resolviendo el problema.

1. Comprender el problema

¡No te saltes este paso, nunca!

La clave para saber si entiendes un problema es saber si puedes explicárselo a alguien que no lo sabe. Trate de escribirlo en inglés simple o en su idioma nativo; dibuja 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 debe hacerse son:

  • ¿Cuál es la entrada? ¿Cuál es la salida deseada?
    Por ejemplo, la entrada puede ser una matriz de datos y la salida puede 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é complica 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. Desglosar el problema

Cada gran problema se compone de muchos pequeños problemas. Dado nuestro ejemplo anterior con regresión lineal, es posible que desee considerar los siguientes subproblemas:

  • Limpiar datos
  • Descubra qué variables en los datos son significativas para la regresión y cuáles se pueden ignorar con seguridad
  • Encontrar la herramienta adecuada para realizar la regresión (aquí es donde entra la vieja pregunta sobre lenguajes de programación y marcos)
  • Evaluar sus resultados y verificar errores

Desglosar el problema le ayuda a establecer un plan apropiado para su trabajo.

También es más motivador, ya que alcanzarás hitos pequeños pero importantes en el camino. 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. Prueba si tu plan funciona o si tienes que adaptarlo debido a dificultades impredecibles.

Te ayuda a entender las partes difíciles. Muchos problemas parecen simples, pero cuando comienzas a construirlos, aparecen obstáculos.

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

Cuando arroja todos sus datos en la máquina, los ejecuta durante horas y luego se da cuenta de que el script se ha detenido a la mitad, se sentirá muy frustrado.

Créeme, ¡sucede a menudo!

Realice algunas pruebas pequeñas primero y asegúrese de que su solución funcione como lo imaginó.

4. Corre

Esta es la parte carnosa. Ahora puedes crear la solución a tu gran problema.

Tira todos tus datos en el código. Ejecute un modelo elegante. Haz lo que quieras.

Después de completar los tres pasos anteriores, ¡esto debería ir bastante bien!

Si hay algún error, es posible que deba volver a los pasos 1 a 3 para ver si ya lo ha resuelto todo y no se ha perdido ningún error.

5. Piensa

El hecho de que haya encontrado una solución no significa que haya encontrado la mejor solución. No huyas y llámalo un 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 conversar con sus colegas y preguntarles cómo resolverían el problema. ¿Es su enfoque diferente al tuyo?

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

Finalmente, considere cómo podría evolucionar su solución en el futuro. ¿Mejorarían su solución nuevos marcos de software o el uso de IA? ¿Cómo podría su solución ayudar a resolver problemas aún más complejos?

Últimas palabras famosas

La gente, incluido yo mismo, tiende a obsesionarse con los diferentes lenguajes de programación y el nuevo marco 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 gran programador. La otra mitad es la resolución de problemas.

No aprenderá 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 camino de llevar su carrera de buena a excelente.

Este artículo apareció originalmente en Medium. Puedes leerlo aquí.