Cómo aprender a programar (y de CS50x).

Dec 15 2022
¿Cuál es la mejor manera de aprender a programar? ¿Cómo lo hago para poder aprovechar al máximo los cursos que tomo? ¡Este artículo tiene una explicación detallada que responderá estas preguntas y más! Al aprender a codificar, si recién está comenzando, es probable que tenga algunos conceptos erróneos. Espero que los puntos de estos artículos ayuden a aclarar estos conceptos erróneos y evitar que cometas los mismos errores que yo.

¿Cuál es la mejor manera de aprender a programar? ¿Cómo lo hago para poder aprovechar al máximo los cursos que tomo? ¡Este artículo tiene una explicación detallada que responderá estas preguntas y más!

Al aprender a codificar, si recién está comenzando, es probable que tenga algunos conceptos erróneos. Espero que los puntos de estos artículos ayuden a aclarar estos conceptos erróneos y evitar que cometas los mismos errores que yo.

I. Cómo abordar el aprendizaje de la programación (y el aprendizaje del curso CS50x):

1. No te apresures:

Este podría ser el consejo más simple pero crucial que podría dar a los alumnos.

Cuando estaba aprendiendo C, como la mayoría de los estudiantes, era competitivo. Quería ser el primero entre mis compañeros y compañeros de estudios en "completar" C. Traté de acelerar las lecciones y completar los conjuntos de problemas tan pronto como pude.

Al final de la tercera semana de conferencias (en CS50x), me sentí frustrado por mi incapacidad para resolver los problemas sin problemas en una hora (un objetivo poco realista). Tuve que tomar un descanso para despejar mi mente y no ser acosado por el objetivo de "completar" C tan pronto como pudiera.

Fue más tarde, cuando volví a hacerlo y realicé el Conjunto de problemas 4 (en CS50x) con paciencia, que me di cuenta de que lo estaba haciendo de manera incorrecta.

No "completa" C o cualquier otro lenguaje de programación como lo haría con un tema en una materia escolar. El conocimiento que obtiene al aprender C lo ayudará durante bastante tiempo, y debe abordarlo con esto en mente.

Además, no se sumerja en ningún ejercicio de codificación o conjunto de problemas, comparándolo con un problema. La velocidad a la que completa un conjunto de problemas tampoco indica una mayor comprensión del tema.

Los conjuntos de problemas en CS50x no son problemas. Cada conjunto de problemas te enseña algo, desde la construcción de la lógica hasta la comprensión de las representaciones de mapa de bits de las imágenes (y cómo manipularlas).

Se supone que los conjuntos de problemas son programas o proyectos que se dan a los alumnos para que aprendan, una conferencia en sí mismos. Intenta aprender algo nuevo de cada ejercicio de codificación que hagas. Se sorprenderá de cuánto pueden enseñarle estos conjuntos de problemas aparentemente pequeños.

La codificación no es algo que se aprende más rápido entrenando más y más rápido. Requiere práctica constante, paciencia y concentración. No puede esperar diseñar códigos de solución para conjuntos de problemas súper rápido solo porque entiende un concepto bastante bien.

Por lo tanto, aprenda y codifique con paciencia. Revise el contenido que le dieron en CS50x (o cualquier otro material al que se refiera) varias veces si es necesario para que entienda algo.

Al hacer cualquier ejercicio de codificación, nunca busque soluciones solo porque no pudo pensar en una respuesta o porque su programa falló varias veces. Pruebe el programa varias veces. Si aún no lo obtiene después de algunos intentos (y comienza a ser frustrante), le sugiero que se tome un descanso de ese problema. Ir al siguiente tema o ejercicio.

Más tarde, vuelva al mismo problema de nuevo. Si aún no puede encontrar una respuesta, entonces puede buscar una solución. Sin embargo, debe leer y comprender el código de la solución y, una vez que lo haya entendido, volver e intentar codificar el programa por su cuenta, sin mirar la solución.

Puede completar los temas más rápido si se apresura. Sin embargo, siempre tendrá dudas rezagadas y es posible que no tenga plena confianza en los temas que ha aprendido. Para mí, esto parece desastroso y no recomiendo que nadie aprenda de CS50x ni de ningún otro curso de esa manera.

2. Hasta el infinito:

Una serie de conjuntos de problemas requieren una lectura previa para ayudarlo a comprenderlos mejor. Deberías investigar mucho sobre esto.

Las tareas complejas que podrían realizar las computadoras parecen difíciles de imaginar para nosotros. ¿Cómo podría un ser humano crear una computadora, una máquina con un poder de procesamiento tan enorme? Los esfuerzos y el conocimiento invertidos para construir estas cosas parecen increíblemente intrincados y complicados. No nos atrevemos a pensar que jamás seremos capaces de comprenderlo en el poco tiempo que tenemos.

Sin embargo, todas estas funciones complejas que las computadoras pueden llevar a cabo en estos días son el resultado de la lógica desarrollada y aplicada por los humanos. Esta lógica y el conocimiento detrás de ella están a nuestro alcance, y somos capaces de aprender y eventualmente comprender este conocimiento. Cuando logras este cambio mental, se desarrolla un deseo de aprender y comprender más.

Este paso ayudará a explicar cómo logré obtener este cambio y cómo llegué a ver la codificación de la manera en que lo hice.

El conocimiento comienza a sentirse al alcance a medida que realiza una investigación y una educación más independientes. Nos damos cuenta de que, de hecho, somos capaces de aprender y, finalmente, comprender cosas que antes nunca podíamos comprender. Esto se debe a que obtiene una perspectiva más amplia sobre la codificación, cómo se ha desarrollado (con sus propios errores durante su creación, ya que fue hecha por humanos) y los impactos en el mundo real que puede tener cada concepto que aprende.

Busque "problema Y2K" en su navegador, lea sobre él, y tal vez sea el primer paso para comenzar una investigación independiente. Una vez que lo hayas leído, ¿qué opinas? En última instancia, las computadoras son desarrolladas por humanos como nosotros, aquellos capaces de cometer errores (como lo ilustra el problema Y2K), aquellos que aprenden y crecen. ¿Sientes ahora una conexión más fuerte con el código que estás aprendiendo? ¿Tiene una idea del posible impacto inmediato que podría tener tanto en su vida como en la vida de los demás?

Una ilustración sucinta de los efectos del desastre Y2K. Fuente de la imagen: whysurfswim.com

Aprendí esta lección cuando estaba haciendo el conjunto de problemas 4. Te permite codificar un programa capaz de diferenciar objetos en una imagen. Siempre había creído que una tarea desafiante como esa sin duda estaba más allá de mi capacidad antes de comenzar este programa. Supuse que requería alguna "cosa" de inteligencia artificial sofisticada que probablemente me freiría el cerebro si intentaba entenderlo. Sin embargo, hice el programa, entendí la lógica detrás de él y me sentí mucho más cerca de la codificación en ese momento.

Al aprender, ¡el cielo es el límite! Fuente de la imagen: https://lovepik.com/images/png-book-hills.html

Una vez que seas consciente de cuánto más eres capaz de aprender y comprender, sentirás un celo por estudiar y adquirir nuevos conocimientos.

3. Haz tedioso y haz crecer tu caja de herramientas:

Una vez que haya terminado con un conjunto de problemas, siempre intente buscar soluciones más eficientes en Internet. Si bien esto puede parecer tedioso, le enseñará nuevas perspectivas y lógica para el mismo programa. Esto aumenta la "caja de herramientas" que tiene al codificar programas.

A medida que su "caja de herramientas" se amplíe, podrá visualizar múltiples caminos hacia su resultado o código de solución. De manera similar a las matemáticas, puedes resolver problemas de manera más rápida y efectiva si practicas más.

Conocer múltiples soluciones puede ser útil cuando se trata de problemas particularmente desafiantes que solo pueden resolverse utilizando un enfoque particular.

Por lo tanto, "hazlo tedioso", ¡y definitivamente llegarás a apreciarlo más tarde!

4. Toma notas:

Aunque tomar notas mientras escucha las conferencias es completamente opcional y una cuestión de preferencia personal, hará que su aprendizaje parezca más productivo y que esté progresando. Te hará ver la conferencia con mayor atención.

Puedes hacer notas compactas. Haga una lista de cualquier pregunta que tenga o información que haya encontrado particularmente novedosa e interesante. Luego, investiga un poco y trata de aclarar las preguntas o dudas que has anotado.

Cuando estoy aprendiendo, tomar notas me hace sentir más productivo y disfruto haciéndolo.

Resolver todos los conjuntos de problemas con diligencia, dando a cada uno una cantidad significativa de tiempo

II. Pasos a seguir al aprender de CS50x:

  1. Aprende de cada conferencia con paciencia, no te apresures. Opcionalmente, tome notas cuando escuche conferencias.
  2. Nunca te saltes los videos cortos antes de echar un vistazo a sus temas. Echa un vistazo a los cortos y, si crees que valen la pena, míralos. Los cortos contienen frecuentemente explicaciones más detalladas. A veces, los cortos también cubren temas que no se tratan en la conferencia principal.
  3. Resuelva todos los conjuntos de problemas con diligencia, dedicando a cada uno una cantidad significativa de tiempo, e intente resolverlos por su cuenta. Si no lo entiende, siga las pistas que le han dado. Si esto no es suficiente, mire el tutorial (esto facilita mucho la comprensión del problema). Está bien no entender el problema, no necesitas sentirte mal. Yo tampoco había entendido todos los problemas en mi primer intento. Una vez que todo no funcione, busque la solución y luego codifique la respuesta sin mirar la solución una vez que la entienda.
  4. Si encuentra errores en su programa y no puede identificarlos, utilice 'verificar 50' o 'enviar'. Estos dos comandos brindan un enlace una vez que se ejecuta el programa, y ​​la información en el sitio que abre el enlace es muy útil para resolver errores.
  5. Si todavía no has podido resolver el conjunto de problemas, tómate un descanso. Pase a la siguiente lección o conjunto de problemas y vuelva al mismo conjunto de problemas más tarde.