¿Leer código de otra persona es bueno para aprender?

Sí.

Te contaré un cuento corto. En HackerRank intentaba hacer un desafío que involucraba cierta manipulación de matrices. Fue una tortura. Simplemente no pude entenderlo. Pasé al menos 4 horas sin llegar a ningún lado y finalmente decidí darle un descanso. El descanso no duró demasiado porque al día siguiente volví a hacerlo. Después de otras 3 horas finalmente lo resolví y estaba muy feliz. No me importó que fuera el código más desagradable y confuso porque estaba orgulloso de haberlo resuelto. Naturalmente, verifiqué el código de otros pueblos pero no pude encontrar uno de Java. Así que decidí mirar a C ++ o algún otro lenguaje que no entendiera. Mientras me desplazo, no sé qué está pasando, pero veo una cosa.

.ordenar()

Ni siquiera estoy exactamente seguro de qué era, pero puedo decir que contenía “orden” y en ese instante supe cómo resolver el problema sin esfuerzo. Esto no fue debido al código de esta persona, sino porque algo hizo clic.

Volví y cambié todo mi código. Me tomó 15 minutos y lo resolví. 7 horas vs. 15 min.

Así que sí, lee el código de otros. Nunca sabrás lo que aprenderás. También descubrí tres cosas ese día.

  1. Cada problema tiene más de una solución. Siempre trata de encontrar una mejor manera de resolverlo. Te enseñas a ti mismo en el camino.
  2. Si bien la solución es muy satisfactoria, el proceso es el más importante. Ahí es cuando aprendes.
  3. Debería haber comenzado a usar ArrayLists mucho antes.

Sí, es una de las mejores maneras de aprender. No hagas lo que hacen los demás. La mayoría de la gente escribe las cosas de manera incorrecta. Incluso yo, me imagino.

Pero mira por qué la gente hace lo que hace. ¿Por qué da salida a lo que hace? ¿Qué pasa si cambias esta línea o eso?

Leo el código todo el tiempo. Contribuir a proyectos de código abierto es una forma increíble de aprender, y me avergüenzo un poco de mi perfil de github debido a mi falta de contribuciones al código abierto.

Encuentre un gran proyecto de código abierto en el idioma que usa. Lee la mierda fuera de esto. Te volará la mente, pero será una gran exposición. Eventualmente podrá contribuir, lo cual es excelente por una variedad de razones, incluso para su cartera.

Algunos ejemplos de proyectos de código abierto en los principales idiomas.

C ++:

  • Git
  • NodeJS

Pitón:

  • Django
  • Simpatía

Javascript:

  • Reaccionar

DO#:

  • .net core

Estos son solo algunos que pensé en la cabeza. Hay otros cientos para cada idioma, y ​​los más pequeños serán mejores para que los principiantes contribuyan. Pero solo leer y tratar de entender el código fuente cambiará su carrera.

Absolutamente

Uno de los principales inconvenientes de contratar a alguien que no tiene mucha experiencia es que no pueden leer y entender una base de código existente. Esto hace que sea muy difícil para ellos comenzar a contribuir de inmediato sin tener que sostener la mano.

También hay muchos casos en los que, si desea aplicar bibliotecas de código abierto a sus productos, necesita una muy buena comprensión de lo que sucede debajo del capó. A menudo, esto solo se puede hacer si puede leer el código.

También hay mucho que aprender, algunas bases de código están escritas por docenas o incluso cientos de ingenieros asombrosos, leer este código puede permitirle comprender la arquitectura del software.

Como asistente de enseñanza, he leído y calificado muchos códigos. Yo también soy un estudiante, así que escribo código también. Por experiencia, obtengo el mayor provecho por escribir dinero y resolver problemas. Me obliga a descomponer el problema, considerar casos de prueba, escribir el pseudo código, luego el código real, y finalmente probarlo.

En comparación, leer un montón de código me ha ayudado a mejorar en la depuración. Soy capaz de detectar errores más rápido.

Para comparar el código de escritura y el código de lectura, me resulta más útil escribir mi código cuando trato de aprender cosas nuevas y cuando intento enseñar en clase. Me permite pasar por el mismo proceso de pensamiento y cometer los mismos errores que mis alumnos, lo que a su vez me ayuda a relacionarme con los alumnos y enseñar mejor el material.

En otras palabras, leer el código es bueno, escribirlo es mejor y hacer ambas cosas es lo mejor. Leer código y aprender de ejemplos te dará un ejemplo para trabajar. Escribir código le permitirá aplicar lo que ha aprendido y experimentar todos los pasos usted mismo.

Si le resulta útil, es probable que sea bueno para su aprendizaje.

Más en serio, sí, leer el código de otra persona suele ser una buena forma de aprender. Sin embargo, no debes parar en solo leerlo. Debe intentar hacer uso de lo que aprende en su propio código. Trate de hacer algo similar, pero no exactamente lo mismo. Cuanto más hagas eso, más aprenderás.

Las revisiones por pares de código no son solo para el beneficio del autor. A veces, el revisor descubrirá una mejor manera de hacer algo o aprenderá una nueva técnica que no ha visto antes.

Puede ser, pero sospecho que hay más código “malo” que mirar que código “bueno”. Si está aprendiendo, es posible que no pueda detectar la diferencia. Así que no intentes aprender solo mirando el código que encuentres. Consigue expertos respetados que te recomienden un código para que lo veas.