¿Los libros de programación son más útiles para aprender a codificar que los cursos electrónicos?

La velocidad para aprender a programar es más lenta cuanto más abandonas los medios basados ​​en texto. Es más lento cuanto más abandonas el entorno basado en texto sobre todo. Por lo tanto, en realidad solo hay una forma de aprender a programar: hacerlo. Aprender haciendo es la única forma en que funciona. Si no puede hacer algo por su cuenta, no podrá hacer nada por nadie más.

Por lo tanto, obtenga cualquier recurso que pueda obtener, comience su proyecto, aprenda en el camino. Y tenga en cuenta que ese proyecto será más o menos una mierda al final, fue solo el recipiente para aprenderlo.

Entonces, la forma de aprender cosas es más rápida leyendo. Luego, deja que alguien te muestre, luego mira películas sobre personas que se lo muestran a otras personas. La última forma es la más fácil de obtener pero la más lenta de aprender.

Mi manera es esta: tengo un proyecto en mente. Algún problema simple pero solucionable. Luego empiezo a leer la especificación del lenguaje completo y también busco en las bibliotecas estándar, leo algunos ejemplos para entender cómo se hace.

Y no estoy hablando de algo que fue hace 30 años, todavía lo hago de esta manera, justo en este momento, nuevamente. Luego empiezo a programar mi problema hasta que estoy atascado, releo la especificación, busco ejemplos, aprendo, repito mi enfoque, tal vez elimine todo lo que he hecho, programe. Hasta que funcione.

Luego pienso en otro problema, en el caso óptimo, algo, que es vagamente un problema básico de la visión mayor que quiero hacer, esa es la razón por la que estoy aprendiendo.

Siempre hago referencias cruzadas de mis fuentes para evaluar y reevaluar la calidad de la fuente que tengo.

Como ejemplo real, estoy profundizando mi conocimiento sobre Intel Assembly en este momento. Conozco cinco o seis ensambladores y muchos otros lenguajes de computadora, pero ese es bastante complicado. Porque es complicado, es barroco, está lleno de contradicciones y es algo que casi nadie está haciendo en este momento, nunca más. Porque realmente tienes que ser bueno en lo que estás haciendo, para sacarle provecho.

Esa es mi motivación. Reprograme algunas de las rutinas más pequeñas, la reducción de números de los programas que he escrito y estimo que obtendré el factor 2 a 5.

Por lo tanto, mi objetivo es escribir bucles de números pequeños con matemática, números, multiprocesamiento y tal vez el uso de GPU (que caería en la misma visión, pero eso ya está cubierto, así que lo dejo por ahora).

Verifiqué lo que hay que tener en Youtube, que no es nada, que no puedes aprender en 1 o 2 horas de un libro, pero pasarás días enteros viendo, eso es lo que yo llamo aprendizaje ineficiente. Puede ser bueno para algunas personas, no es bueno para mí.

Revisé todos los libros que están disponibles sobre eso y la mayoría a finales de 2005, la mayoría está escrita sobre 8086 entre 1985 y 1995. Después de eso se está volviendo difícil.

Así que obtenga las especificaciones (unos pocos miles de páginas, más de 10k que a 1k y comience a evaluar, qué partes son interesantes para mí. Me deja con aproximadamente 5k páginas para leer realmente. Está bien para una tarea como esta.

El problema con todo lo que es “escolarizado” es que ya he superado eso. Ya no tengo que pensar en bucles simples ni en qué es un registro. Lo básico fue cubierto en algún lugar de 1982 más o menos para mí.

Así es como lo hago. Realmente haga su tarea y luego, programa, programa, programa. Aprenda sus herramientas, vuelva a aprender las herramientas, ya que han cambiado, todo ha cambiado, verifique qué dice Intel (o en este caso AMD) sobre la optimización y qué comandos son FotM y cuáles no.

No hay ningún libro que me ayude con esto. Lo prometo. Esto solo se puede hacer al hacerlo. Y es por eso que hay tan pocas personas alrededor que pueden hacerlo. Pero todo este proceso es lo que tienes que hacer para aprenderlo. Y luego, una vez que mis rutinas están listas, empiezo a evaluar su calidad yo mismo. Estoy escribiendo puntos de referencia contra C / C ++, los reescribo de una manera diferente y verifico el resultado. Y aprende qué camino es el mejor.

Y aunque esto es algo que no recomendaría a un principiante que haga, todos los que comienzan a aprender programación tienen que hacerlo. Tal vez no en esta etapa épica, pero hice lo mismo con cada idioma que he aprendido a lo largo de los años y funciona para mí. Haga su tarea, programe pequeños problemas hacia su visión, combínelos, verifique su calidad usted mismo.

De este modo, puede aprender algo tan fácil como Python en un mes, sin sudar. Quizás no tenga la última iteración sobre ser eficiente, pero sabrá lo que está haciendo.

Y siempre verifique los algoritmos. Algoritmos, algoritmos, algoritmos. Y con eso bibliotecas, bibliotecas, bibliotecas. Porque si no lo haces, terminas reinventando la rueda y terminas frustrado. Haga algunas cosas rápidas y sucias para darse algo que se logró. No tiene que ser bueno, solo tiene que funcionar. Así que date una recompensa por tu trabajo.

Tal vez compita con otros muchachos y gane una u otra batalla. Eso también es bueno para la motivación y para tu ego. Y necesitarás mucho ego para mantener esto, porque la computadora siempre, siempre te dice que eres una mierda, que cometes muchos errores, que no entiendes y que eres un estudiante miserable.

Las computadoras son maestros brutales. Pero te dejan más listo y más fuerte cuando los dominas. Y eso es una prueba, que llevarás a través de tu vida y eso es algo que la mayoría de la gente nunca hace. Todos intentan evitar el trabajo duro. Sigue así, sumérgete en eso y obtendrás lo que quieres.

Eso también es cierto sobre las computadoras. Nunca niegan su victoria, nunca niegan trabajar al final, cuando lo hizo, cuando entendió el problema y lo convirtió en código. Trabajarán con eso, para siempre. Así que son maestros brutales pero no dejan nada menos que gemas atrás. Las gemas y el resto se dedican a los estudios de género o algo así.

No puedes estafar y engañar a una computadora. Puedes estafarte en la universidad o en cualquier otra parte del mundo. Pero no puedes hacerlo, si eres un codificador. Eres real o no lo eres. Todo se reduce a eso, muy duro, como el diamante. Las computadoras te dejarán huella y tú serás uno de sus sacerdotes. Sacerdotes de la lógica y el pensamiento recto.

Y conocerás personas que son mejores que tú. Y la mayoría de esas personas pensarán que eres mejor que ellos. Porque todos los humanos somos pequeños, muy pequeños si realmente se esfuerzan por lograrlo. Estamos llenos de fallas y defectos, somos vagos y descuidados.

Y la computadora nos enseñará a ser más que eso. Así que este no es solo un campo que puedes estudiar. Es un viaje en el que sacrificarás tu vida y tal vez encuentres algo sobre ti y el mundo en ese camino. Puede que hoy no sea más que un pequeño bucle en el que lograste ahorrar un ciclo o dos, pero hazlo durante mucho tiempo, aprende y conviértete en algo mejor de lo que eres y estarás tan lleno de conocimiento que comenzarás a ver el mundo desde un ángulo diferente.

Es lo mismo de lo que están hablando todas esas personas “iluminadas”, pero en lugar de toda esa mierda esotérica, esta es real. Puedes medir tu camino, puedes “ls” la pared del código fuente que codificaste en tu viaje y vivirás para siempre con eso en la red, en github o en cualquier otro lugar. Y puedes medirte a ti mismo y valorar lo que se ha convertido en ti en ese viaje y te convertirás en algo más grande y dejarás el mundo mejor que ella cuando naciste.

Y eso es algo que llamo motivación. Este campo es tan grande y difícil de aprender, tan implacable que necesitas algo como una visión para mantenerlo. Agárrate a algo para creer que te hace seguir. No puede hacerlo “por el dinero” porque hay formas mucho más fáciles de estafar a la riqueza que esto. No puede hacerlo “para el éxito” porque no tendrá ninguno y casi nadie entenderá lo que hace su programa y cuánto trabajo tuvo que poner en eso. No recibirás apoyo de tu entorno, porque nadie más entenderá lo que haces y la mayoría de tus amigos con los que una vez empezaste, se habrán dado por vencidos y se habrán alejado.

Pero algún día estarás solo en esta cumbre y verás el mundo desde una perspectiva donde nadie más lo ha visto. En la claridad y rectitud que le muestra su código de trabajo. Y por un momento sabes: “He hecho el bien”.

Y esta es la recompensa. El único. Eso te importa.

Y te mantiene en marcha, si has alcanzado tu primera cumbre, puedo prometerte eso. No te rindas antes de haberlo alcanzado al menos una vez en tu vida.

Y si tiene mucha suerte, otras personas encontrarán útil su código. Y luego, en un momento, encontrará su código en algo grande y eterno, como el kernel de Linux, y se quedará sin aliento cuando vea su nombre y su código. Y no lo creerás cuando se quede y no desaparezca. Esto significa que hiciste algo. Incluso si nada es realmente eterno y en algún momento su código se reparará, usted es parte de algo más grande.

Y todo este trabajo es para algo. Y esto le dará las respuestas a las preguntas que todos tenemos: ¿Por qué estoy aquí? De donde vengo ¿A dónde iré cuando termine?

Eres un codificador. Vivirás para siempre en tu código. Si es lo suficientemente bueno.

La forma más efectiva y eficiente de aprender a programar es codificar tanto como pueda. Después de aprender los fundamentos, que es más rápido lograr leyendo libros que tomando cursos electrónicos, uno debe comenzar un proyecto lo antes posible.

Es mucho más fácil manejar el ritmo cuando lees los libros. Tomar un curso es útil cuando no sabes casi nada sobre ese tema.

Honestamente depende del estilo de aprendizaje de la persona. Algunas personas prefieren libros, mientras que a otros les gustan los video cursos / cursos electrónicos. Me gusta seguir un curso en línea, pero tengo un libro de referencia y otra explicación de una habilidad. Un problema con los libros es que se desactualizan rápidamente, mientras que los cursos se pueden actualizar casi al instante.

En mi experiencia personal y si eres nuevo en informática y programación, creo que vale la pena tomar cursos en línea o asistir a una capacitación práctica profesional sobre programación. Confía en mí, leer el libro solo no te lleva a ninguna parte. Lo más probable es que ni siquiera entiendas lo que estás leyendo (a menos que fueras un programador nato).

Espero que esto ayude.