¿Por qué la gente está tan obsesionada con la idea de hacer cursos como la forma de aprender a desarrollar software?

Creo que hay una respuesta simple a esto.

Es duro y frustrante.

La gente está construyendo cosas, es por eso que están haciendo preguntas. Sin embargo, las cosas que están construyendo son difíciles, por lo que buscan la ayuda de otras personas. Esto es en realidad un comportamiento humano bastante normal y saludable.

Mira, de alguna manera estás en lo correcto. Todos los buenos desarrolladores de software en algún momento … construir software A medida que construyen el software, aprenden a formar sus propios errores y los de otros, y marcan su habilidad para ser eficientes, confiables y productivos.

Sin embargo, afirmar que no hay beneficio en obtener la experiencia de otros a través de conferencias y conferencias es negar un principio muy básico del desarrollo de software. No puedes hacerlo todo.

El hecho es que otras personas hacen y aprenden cosas que nunca haré. Al escucharlos, aprender del conocimiento colectivo de los que me precedieron e integrarlo en mi propio marco de resolución de problemas cognitivos, me convierto en un mejor ingeniero.

Además, el conocimiento fundamental en algoritmos, estructuras de datos, sistemas informáticos, matemáticas, etc. es un requisito previo absoluto para convertirse en un buen ingeniero de software.

Ahora, hay muchos trabajos de tipo técnico donde aprendes un lenguaje de programación y algunas habilidades y las aplicas una y otra vez. Sin embargo, cualquier ingeniero de software de calidad está preparado para enfrentar algún día un problema que no tiene solución. Nadie lo ha resuelto antes. Mi pregunta para ti es ¿entonces qué?

Necesitas eso ASÍ COMO EL TRABAJO DEL CURSO.

Si todo lo que haces es “hacer”, nunca aprenderás las diferencias sutiles entre los algoritmos de clasificación o los beneficios relativos de los lenguajes de programación que nunca has probado.

Es posible que nunca haya pensado en usar “Programación orientada a objetos” o que nunca haya descubierto cómo funciona el “retroceso” … o que no sabe cuándo NO usar “ordenar rápidamente” para clasificar las cosas de manera eficiente … Sería un programador realmente patético.

Por otro lado, las personas que “lo aprendieron todo de un libro” también son programadores terribles. Tener que parar continuamente y buscar cosas en línea realmente las retrasa. Carecer de un cerebro lleno de algoritmos simples que se puedan extraer sin demasiado esfuerzo mental es muy útil, y eso requiere años de práctica.

Así que necesitas algo de cada uno.

SIN EMBARGO: las personas que aprenden a programar en la universidad no solo van a conferencias y leen libros. Se les asigna un importante trabajo de programación para realizar: cosas que están diseñadas para estirar sus músculos mentales de una manera que las personas no harían si eligieran sus propios proyectos para trabajar.

Durante más de 40 años trabajando en el campo, y siendo líder de equipo durante la mayor parte del tiempo, mantendría mi afirmación. Los programadores autodidactos tienden a ser personas peligrosas, en su mayoría escriben códigos terriblemente malos y crean caos dondequiera que vayan. Las personas que aprenden con el libro son lentas y demasiado pedestres cuando se trata de la codificación y simplemente no tienen la experiencia para codificar de manera efectiva.

No siempre, pero de lejos la mayoría.

Hay una razón por la que la mayoría de los buenos trabajos de programación vienen con un REQUISITO para al menos una licenciatura en CS, CE o algún campo relacionado. Asegurados de eso, pasamos a probar la capacidad de las personas para pensar y codificar “sobre sus pies” durante el proceso de entrevista. Por lo tanto, “vaya a la pizarra y escríbame una función para revertir todas las palabras en una oración arbitrariamente larga a la vez que conserva el orden normal de las letras dentro de cada palabra … oh, sí … y no está permitido usar ninguna asignación de memoria dinámica”.

Porque, cuando ni siquiera sabes qué buscar, cualquier dirección es alguna dirección.

Entonces, los cursos son una forma de recibir información que en realidad no sabías que era importante si solo buscabas en Google “cómo construir una aplicación de Android”, por ejemplo.

Diría que es importante conocer los fundamentos de la CS, por lo que podrá cambiar los idiomas y las plataformas, decidir cuál es el mejor enfoque y así sucesivamente … Y algunas personas realmente obtienen esos fundamentos sin asistir a ningún curso, a veces incluso sin libros

Pero si solo desea colocar un sitio web, cárguelo en un servicio de alojamiento con escalado automático, obtenga su cheque de pago y siga adelante, eso es más que correcto solo para buscar lo que necesita saber para hacer el concierto.

Ahora, sobre ensuciarse las manos … Creo que nunca asistió a un curso, porque de lo contrario sabría que la mayor parte se trata de la idea de aprender mediante la práctica. Incluso las universidades se están volviendo más y más prácticas, con proyectos del mundo real y todo el tipo de asociaciones para llevar a los estudiantes a los problemas de otras personas, y para ejercer el tipo de situaciones y errores que sería difícil enfrentar en teoría. conferencias pesadas

Creo que no entiendes Un buen curso de programación le brinda una serie de programas para escribir, de complejidad cada vez mayor y desarrollo de un tema, y ​​sus programas son calificados y criticados por expertos. Eso es lo que tiene valor al respecto. Seguro que puedes escribir programas por ti mismo, pero conseguir que los expertos se preocupen lo suficiente como para leer y criticar tus programas es difícil a menos que los pagues.

La razón más simple para un curso o al menos un libro es aprender más completamente. Una persona autodidacta encontrará algo que funcione y tratará de usar esa herramienta / enfoque primero para todo, es la naturaleza humana. Un libro o curso debe ser la sabiduría destilada de muchas personas y la persona que ha estado en una clase o, al menos, ha leído un libro por completo, se dará cuenta de que existen múltiples enfoques / herramientas. Y algunos de esos enfoques serán más eficientes y se ocuparán de más de las “trampas” que alguien que ha aprendido a sí mismo y que haya tenido tiempo de aprender de su experiencia personal.

¿Por qué estos coños de hoy necesitan anestesia mientras que en los tiempos en que un dentista podría extraer su diente sin ella? Porque hoy existe y podemos costearlo. Lo mismo con los cursos: en el pasado no había muchos y esa es la razón principal por la que las personas no los tomaron.

Un buen maestro puede llevarlo al siguiente nivel de programación mucho (mucho) más rápido de lo que obtendría usted solo. Pero los cursos no se excluyen mutuamente con “ensuciarse las manos”. Tengo un proyecto de código abierto en el que durante los últimos 6 años he ayudado a desarrolladores menos experimentados a aprender. Entre ~ 300 de ellos había un par de docenas que puedo distinguir; siempre son personas trabajadoras que primero intentan investigar y hacer el trabajo por sí mismas.

Todas esas personas necesitaban un punto de partida.

Aprendí lo que sé sobre programación leyendo, luego trabajando en un proyecto y haciendo el ensayo y error que mencionó.

Sería muy difícil aprender a programar usando solo uno de los métodos que mencionaste (al menos para mí)

Si necesito aprender algo, siempre comienzo con el enfoque que sugirió anteriormente, intentando, fallando, buscando respuestas. Funciona bastante bien para mí hasta cierto punto. Resuelvo que los problemas hacen que las cosas funcionen, pero en cierto punto siento que si necesito ser un experto, necesito leer libros relacionados con el tema. Nunca fui fanático de los cursos en el aula, así que nunca lo haga, a menos que sea realmente libre o el instructor sea realmente bueno.

Eso funciona para mí pero no funciona para todos. He trabajado con personas que necesitan leer libros primero y luego solo ellos pueden programar en cualquier tecnología. No significa que no sean inteligentes e inteligentes, solo significa que son diferentes. Un enfoque no funciona para todos. No importa si lee los libros primero o comienza a codificar primero, para ser un experto debe hacer ambas cosas. No puedes ser un experto haciendo solo una de estas dos cosas.