¿Qué tan importante es la autoaprendizaje en el campo de la programación? [cerrado]

75

Tengo 16 años. Comencé a programar hace aproximadamente un año cuando estaba a punto de comenzar la escuela secundaria. Voy a seguir una carrera en programación, y estoy haciendo todo lo posible para aprender tanto como pueda. Cuando comencé, aprendí los conceptos básicos de C ++ de un libro y comencé a aprender cosas por mí mismo a partir de ahí. Hoy en día tengo mucha más experiencia que hace un año. Sabía que tenía que estudiar solo porque la escuela secundaria (probablemente) no me enseñaría nada valioso sobre programación, y quiero estar preparado.

La pregunta aquí es: ¿qué tan importante es estudiar la programación por uno mismo?

Bugster
fuente
12
Los idiomas que uso a diario no existían cuando iba a la universidad. Por lo tanto, la autoaprendizaje es muy importante para aprender nuevas tecnologías si planea ser desarrollador durante más de unos pocos años.
Jon Strayer
55
Notó que ahora tiene mucha más experiencia que hace un año; de hecho, ¡apuesto a que hace un año no sabía cuánto podía aprender! Encuentro que esto sucede cada 2-5 años, miro hacia atrás y digo "Wow, me equivoqué y ni siquiera sabía que era posible hacerlo mejor". La autoaprendizaje es crítica, todo el tiempo, si quieres ser incluso moderadamente bueno. Además, no me gustaría trabajar con alguien que no pudiera aprender de esa manera.
Bill K
2
Cuando yo tenía tu edad, yo no habría sido capaz de no asumir la programación por mí mismo, aunque lo había intentado. Es muy divertido. Y sí, resultó ser extremadamente importante y útil para mi carrera, pero eso fue solo un buen subproducto. Hágalo por diversión y no tendrá que pensar si necesitará la experiencia o no.
Ben Lee

Respuestas:

101

Es critico. No creo haber conocido a un buen programador que no haya sido autodidacta en algún nivel. Como gerente de contratación en una gran empresa, puedo decir que un candidato que describe proyectos personales y un deseo de aprender superará a uno con un grado impresionante cada vez. (Aunque es mejor tener ambos).

Esto es lo que pasa con la universidad: los cursos de Ciencias de la Computación enseñan teoría, no tecnología. Le enseñarán la diferencia entre una tabla hash y un árbol B, y los conceptos básicos de cómo funciona un sistema operativo. Generalmente no le enseñarán lenguajes de computadora, sistemas operativos u otras tecnologías más allá de un nivel superficial.

Recuerdo en las brumas del tiempo cuando tomé mi primera clase de estructuras de datos y obtuvimos un pequeño manual para este nuevo lenguaje llamado "C ++" que habían decidido comenzar a aprender. Tuvimos dos semanas para recogerlo lo suficiente como para escribir código. Esa fue una buena lección en sí misma. Así será tu carrera.

Es probable que tu escuela no te enseñe lo que necesitas para conseguir un buen trabajo. Las escuelas a menudo siguen lo que está de moda en la industria por muchos años. Entonces conseguirás un trabajo. Cualquier compañía a la que vaya seguramente no gastará ningún esfuerzo particular en capacitarlo. Las malas compañías son demasiado baratas y, francamente, las buenas compañías solo contratarán a personas lo suficientemente inteligentes como para recogerlas a medida que avanzan.

Me gradué de la universidad en 1987. Fui a trabajar como programador en C con experiencia en programas de DOS, NetBIOS y "Terminar y permanecer residente". En los años posteriores, he tenido poco o ningún entrenamiento real. Mire los anuncios de trabajo ... ¡no hay mucha necesidad de esas habilidades! La única razón por la que puedo trabajar hoy es porque he pasado los años intermedios aprendiendo constantemente. Para tener éxito como ingeniero, debes tener el hábito de aprender. Demonios, iría más allá de eso: tienes que amar el aprendizaje. Debes ser el tipo de persona que juega con WebGL o Android o iOS porque se ve divertido. Si eres ese tipo de persona y mantienes el hábito de aprender, llegarás lejos en la industria.

Steven Burnap
fuente
3
Esta. La teoría también es muy importante, y es más difícil ser autodidacta. Sin embargo, no estoy de acuerdo con la capacitación de la empresa. Actualmente, nuestro campo tiene mucha demanda y las empresas tienen problemas para encontrar buenos talentos. (Al menos en mi área)
user606723
+1, solía notar un 'TSRs en C' muy antiguo en la biblioteca de mi escuela en 2004. Me pregunto si todavía está allí.
Jesvin Jose
3
La teoría es importante, pero es más fácil aprenderla usted mismo de lo que solía ser, ya que los videos de muchas clases universitarias están disponibles en línea. Me atrevo a decir que uno podría aprender más viendo las conferencias de un gran profesor en línea que estando físicamente presente en las conferencias de un mediocre.
Jeanne Pindar
@ Steven Burnap: "Los cursos de informática enseñan teoría, no tecnología", eso no es cierto. En mi universidad (KIT, Alemania), tenemos que aprender Java (y hacer algunos pequeños proyectos), así como algunos ejercicios en C. Una preparación para ICPC (una competencia como TopCoder) donde aprendemos cómo resolver problemas rápidamente en C ++ es Ofrecido. También tenemos que hacer un proyecto bastante grande (un grupo creó una aplicación para teléfonos con Windows que puede descentralizarse automáticamente para establecer una red móvil si la red no funciona debido a desastres naturales). También recibimos una introducción en Scala / Haskell.
Martin Thoma,
1
Pero es cierto que siempre debes hacer proyectos tú mismo. La universidad solo ofrece muchos puntos de partida. Supongo que si no tienes curiosidad, si no quieres probar algunas cosas, no deberías querer trabajar como programador (como un trabajo de tiempo completo).
Martin Thoma,
29

La autoaprendizaje es muy importante. No puede confiar en una educación formal para enseñarle todo lo que necesita saber sobre su campo. Sin embargo, dicho esto, una educación formal también es muy importante si desea ingresar a ese campo profesional bien preparado y bien equipado.

Estoy en camino a la universidad y he pasado los últimos cuatro años enseñándome a mí mismo en desarrollo de software, como resultado ahora trabajo para una empresa grande y conocida que mantiene aplicaciones empresariales. No requiere mucho talento, pero sí mucho trabajo y motivación. Creo que la literatura y la práctica son tu mejor apuesta cuando se trata de aprender. También es importante elegir un campo específico, ya que, aunque puede transportar idiomas y lógica en todos los campos, solo puede llegar a ser realmente "excelente" si se tiene suficiente práctica y comprensión en un campo específico.

Jacob Krustchinsky
fuente
8
Hay educación formal y personal, pero estás dejando de tener un mentor en el trabajo, que puede ser la mejor manera de ampliar tus habilidades y aprender cómo se hace realmente el software.
JeffO
1
"Sin embargo, dicho esto, una educación formal también es muy importante si quieres ingresar a ese campo profesional preparado para tomar una posición activa en la fuerza laboral". ... Esta oración es muy vaga. ¿Una "postura activa" en la "fuerza laboral"? De Verdad? ¿Y eso que significa?
carne
@blesh De acuerdo. Cambió la redacción.
Johnny Rotten
1
Creo que la experiencia laboral es lo más importante ... pero gran parte de eso es autodidacta. No puede esperar que todos en su oficina le enseñen todo, y los mejores aprovechan su experiencia de todos los lugares en los que pueden obtenerla ..
user606723
11

Aprender solo es muy importante. Tener la disciplina para investigar y reunir los conocimientos necesarios para realizar una tarea lo colocará muy por delante de muchos otros que dependen de la capacitación formal para realizar la misma tarea. Esto se aplica a cualquier industria, no solo a la industria del software.

No me malinterpreten, recibir alguna capacitación o educación formal es útil, pero su propia motivación para mejorar sus habilidades lo ayudará a convertirse en un mejor desarrollador de software. Siempre hay algo que aprender: nuevas plataformas o lenguajes de programación para experimentar, metodologías de desarrollo para implementar, herramientas y algoritmos para usar, la lista continúa. No todo se le presentará a través de una capacitación formal, por lo que depende de usted aprender sobre otros temas e ideas que le puedan interesar y que lo ayuden a lo largo de su carrera en la programación.

Bernardo
fuente
6

En programación, la autodidacta es lo que harás todos los días. Tendrás que aprender muchas cosas, no solo lenguajes de computadora y herramientas que siguen cambiando. Tendrá que aprender el código que escribieron otras personas y también deberá corregirlo con un mínimo de instrucción y supervisión. Es raro en algunas organizaciones recibir capacitación real más de 1 vez al año (¡si es que lo hace!). Asegúrese de que puede hacer (y disfrutar) esto, de lo contrario, considere una carrera diferente cuando aún es joven.

Emmad Kareem
fuente
4

La autoinstrucción es una habilidad indispensable para un programador. Demasiados no lo hacen. Si eres bueno, usarás esta habilidad para el resto de tu carrera.

Edward extraño
fuente
1
-1: Estoy de acuerdo en que el autoaprendizaje es una habilidad indispensable, pero solo decirlo no lo hace.
Jim G.
1
+1 No estoy de acuerdo con el voto negativo. Yo diría lo mismo y también se basa en mi experiencia.
CodeART
1
@ Jim: qué razonamiento absolutamente absurdo tienes allí. ¿Qué se supone que debo hacer con eso? "Estoy de acuerdo, pero -1 porque lo dijiste". O_o
Edward Strange
@CrazyEddie: Simplemente decir algo es cierto sin proporcionar algunas razones de apoyo no es útil en un foro como este.
Jim G.
@ Jim: una revisión rudimentaria de sus respuestas me lleva a responder: "Las personas que viven en casas de cristal no deberían tirar piedras".
Edward Strange,
3

El autoaprendizaje es muy importante porque no siempre tendrá oportunidades de capacitación formal. Cuando comience a buscar un proyecto, una pasantía o un trabajo, encuentre uno que tenga desarrolladores senior sólidos que realmente puedan enseñarle algo. Estar en un entorno que hace las cosas bien puede ser la ruta rápida al código de calidad.

JeffO
fuente
3

Puedo decirle que he trabajado en varios lugares donde ni siquiera considerarían a alguien que no tuviera sus propios proyectos fuera del trabajo. Muestra amor por la programación más allá de simplemente presentarse a un trabajo y cobrar un cheque. Voy a arriesgarme aquí y decir esto: todos los programadores que no aman programar apestan en su trabajo. Peor aún, no tienen nada que agregar a ningún equipo al que puedan unirse.

Tomaría un desarrollador junior inexperto que ama tanto lo que hace que juega con el código en su tiempo libre sobre tres desarrolladores de nivel medio que solo están siguiendo las mociones: ese desarrollador junior será genial algún día, y los demás lo harán. Nunca seas mejor de lo que son.

Si no estás aprendiendo cosas nuevas, simplemente estás sentado olvidando lo que sabes.

carne
fuente
2

El talento está sobrevalorado.

Se necesitan al menos 10 años de práctica antes de que uno pueda llegar a ser excelente en un área determinada. Por eso es importante comenzar temprano.

El hecho de que comenzaste en una etapa temprana de tu vida haciendo algo que pareces que te gusta ya te pone por delante de la manada. Entonces, a menos que tenga dudas sobre el área en la que trabajará, no se detenga ... ¡nunca se detenga!

Considero que el autoaprendizaje es una de las mejores habilidades de cualquier desarrollador y el segundo es un título universitario. Un buen título universitario es importante solo porque agrega tanta calidad a su conocimiento que probablemente no podría obtener por sí mismo. Ciertamente hay excepciones a esta regla, pero eso es todo lo que son; excepciones

Además, cuanta más experiencia acumule temprano, mejor disfrutará de la universidad y mejor absorberá los nuevos conceptos que se le presenten. Al principio, lo encontrará todo tan fácil e inútil, pero muy rápidamente se sentirá desafiado y ansioso por aprender más.

Después de salir de la universidad, nunca dejes de aprender, ya que será una de tus mejores características. Recomiendo leer 'El talento está sobrevalorado'. Puedes echar un vistazo a este artículo rápido sobre ese libro:

http://www.devlounge.net/strategy/the-talent-myth

Alex
fuente
Hablando de mitos ... Creo que los 10 años de práctica del mantra también son un mito. Puede dar a muchas personas 100 años de práctica en algunas habilidades y aún así nunca lo conseguirán. Claro, pueden ser mejores que cuando comenzaron, pero si aún no es lo suficientemente bueno, no es lo suficientemente bueno. Además, he visto a los recién llegados correr círculos alrededor de desarrolladores muy experimentados en desarrollo de software. Claro, todavía tenían cosas que aprender, pero también los desarrolladores con mucha experiencia, incluso aquellos con 10 años de práctica. El talento es muy, muy importante. Sin ella, solo puedes llegar tan lejos.
Dunk
@ Dunk estoy de acuerdo. Creo que la idea es más en el sentido de que incluso las personas con talento necesitan al menos 10 años para aprender algo bien y el talento no es un pasaporte al estrellato. Es una combinación de talento y verdadera dedicación durante muchos años.
Alex
Estoy de acuerdo contigo. El talento sin práctica no lleva a uno lejos. Sin embargo, me parece recordar haber leído el artículo original y el autor afirmaba que incluso las personas con talento ordinario en una habilidad dada pueden volverse bastante hábiles con las 10,000 horas de práctica. Estoy totalmente en desacuerdo con esa evaluación. Se vuelve realmente obvio en el campo del desarrollo de software, especialmente si trabaja en aplicaciones con incluso una mediana cantidad de complejidad. La gran mayoría de los desarrolladores solo son capaces de hacer cosas relativamente simples. Ninguna cantidad de práctica parece llevarlos más allá del punto
Dunk
@Dunk, entonces tal vez les falta pasión, no talento.
Alex
: Creo que es bastante fácil detectar el talento, incluso cuando es crudo e inexperto, en lugar de nunca conseguirlo.
Dunk
2

En comparación con casi cualquier otro campo que se me ocurre, la programación es básicamente todo acerca de la auto-educación. La educación formal en ciencias de la computación / ingeniería de software es útil, pero no es realmente donde aprende a codificar.

Lo que realmente debe hacer es comenzar a trabajar en proyectos: cree algo que quiera que exista. Y luego únete a un proyecto de código abierto para trabajar en algo que quieres ser aún mejor. El aprendizaje viene gratis entonces ...

Steve Bennett
fuente
2

Necesita aprender cosas nuevas usted mismo: vaya a donde lo lleve su curiosidad.

Obtenga también una educación formal: el 90% de lo que se le enseña en una educación formal no se utilizará en el lugar de trabajo. Pero el 10% que se usa será algo extraño y oscuro que pensaste en ese momento nunca sería de ninguna utilidad.

Sin la educación formal, sufre el problema mejor descrito como "no sabe lo que no sabe". La educación formal le brinda una amplia cobertura de muchas cosas con el pleno conocimiento de que nadie saldrá y lo usará todo. Debido a que lo que usará es algo que no sabrá hasta que lo necesite, se trata de estar preparado para que sepa dónde buscar.

Lo que se basa en el autoaprendizaje / curiosidad es lo que te convierte en una persona mucho más informada y completa. Sin mencionar más valioso para un empleador.

Nota al margen: He pasado toda mi carrera, desde que comencé la programación a los 15 años (sheesh, más de 25 años ... más cerca de 30 años) descubriendo que, aparte de mi educación universitaria, la mayoría de los cursos de capacitación (ya sabes ... aprende BLAH en 3 días a tiempo completo) son bastante inútiles. En general, son superficiales y, en lo que respecta al tan esperado mantra de "mantener sus habilidades", no es muy útil para alguien que necesita entrar en detalles técnicos profundos. Comprar libros, usar Internet, profundizar en las matemáticas / física / arquitectura / lo que sea que me haya hecho útil y valioso. En una etapa, yo era una de las aproximadamente 10 personas en el mundo con experiencia específica en un tema en particular; todo ese conocimiento se obtuvo mediante la autoaprendizaje y el aprendizaje en el trabajo.

El único momento para dejar de aprender es cuando tienes 6 pies debajo de una caja de pino.

rápidamente_ahora
fuente
2

Hay una buena parábola al respecto:

El campeonato mundial anual celebrado en Columbia Británica. Los finalistas fueron canadienses y noruegos.

Su tarea era la siguiente. Cada uno de ellos que una cierta porción del bosque. El ganador es el que podría derribar la mayor cantidad de árboles desde las 8 de la mañana hasta las cuatro de la tarde.

A las ocho en punto sonó el silbato y dos leñadores tomaron sus posiciones. Talaron un árbol detrás de un árbol, mientras que el canadiense no había oído que el noruego se detuviera. Al darse cuenta de que esta era su oportunidad, Canadian redobló sus esfuerzos.

A las nueve en punto, el canadiense escuchó que el noruego volvió a trabajar. Y nuevamente, trabajaron casi simultáneamente, cuando de diez a diez canadienses escucharon que el noruego se detuvo nuevamente. Y nuevamente, el canadiense se puso a trabajar, queriendo aprovechar la debilidad del enemigo.

A las diez en punto en el noruego volver a entrar en la obra. Hasta las once menos diez, no interrumpió brevemente. Con la creciente sensación de júbilo, Canadá continuó trabajando al mismo ritmo, sintiendo ya el olor de la victoria.

Duró todo el día. Cada hora del noruego permaneció durante diez minutos, y el canadiense continuó trabajando. Cuando se enteró del final de la competencia, a las cuatro de la tarde, el canadiense estaba bastante seguro de que tenía el premio en el bolsillo.

Puedes imaginar cómo se sorprendió al saber que perdió.

  • ¿Cómo sucedió eso? - Le preguntó al noruego. - Cada hora, te escuché durante diez minutos. Como, maldita sea, ¿lograste cortar más madera que yo? Es imposible.

  • De hecho, todo es muy simple, solo dijo Norwegian. - Cada hora, me detenía por diez minutos. Y mientras continúas cortando madera, yo estaba afilando mi hacha.

Por lo tanto, debe estudiar todo el tiempo para mantener su hacha afilada .

webvitaly
fuente
1
  • Es crucial, de lo contrario te quedarás atrás

  • Aprendo todos los días, en el trabajo, aquí, leyendo libros, haciendo y respondiendo preguntas. Cuanto más aprendo, más entiendo lo poco que sé.

CodeART
fuente
1

La autoaprendizaje es muy importante por dos razones:

  • después de sus estudios : como ya se dijo en otras respuestas, la autoaprendizaje es lo que hará en su vida diaria como desarrollador. No se puede saber todo y las empresas lo saben. Lo que DEBE saber es cómo mejorar. Los mejores desarrolladores tienen la capacidad de aprender nuevos idiomas, nuevas tecnologías rápidamente por sí mismos.
  • durante sus estudios : la distancia entre lo que los cursos universitarios le enseñarán y la realidad de lo que será su trabajo es enorme. Específicamente estoy hablando de mantenimiento y mantenibilidad. Una parte esencial del trabajo de un desarrollador consiste en mantener el código heredado (correcciones de errores, mejoras, agregar funciones, etc.). Puede leer ¿Es la creación de software nuevo generalmente una parte importante de la mayoría de los trabajos de programación? para mas detalles.
    Como mantener el código heredado es esencial, también necesitará escribir el código mantenible usted mismo, y esto rara vez se enseña con lecciones formales (consulte ¿Cómo mejorar la capacitación de los estudiantes con respecto a la mantenibilidad?) Si no practica la autoaprendizaje y lee mucho durante sus estudios, es poco probable que adquiera las habilidades necesarias que lo harán un mejor desarrollador que el promedio.
    No intentes aprender muchos idiomas / tecnologías durante tus estudios, pero aprende buenas prácticas y codificación limpia. Por ejemplo, será mejor que lea el "Código limpio" de Robert C. Martin que la "Referencia completa de Java" de Herbert Schildt durante sus estudios.
Matthias Jouan
fuente
-1

La autoaprendizaje es muy importante ya que internalizas los conceptos a tu manera y eso realmente ayuda. Elegir un idioma para autoaprendirte es muy importante. Los idiomas que tienen una documentación clara son muy importantes y lo que no quieres ser es muy ambicioso en querer aprender demasiados idiomas populares demasiado rápido. Dado que dice que comenzó con c ++, recomendaría Java para usted, siempre funciona muy bien para programadores autodidactas.

Gandalf
fuente
-1

Probablemente aprendí más del 95% de lo que sé relacionado con la programación al probar cosas por mi cuenta y aprender cómo funciona. La escuela puede ayudar a enseñar un buen estilo de programación y optimizar el código para la velocidad, etc., pero nunca se convertirá en un "buen" programador simplemente leyendo un libro de texto. Una excelente manera de desarrollar habilidades de programación es encontrar problemas cotidianos que podría usar una computadora para resolver, y tratar de escribir un código para hacerlo. Quedarse atascado es parte del aprendizaje. Empecé queriendo ser un desarrollador web, por lo que hacía sitios web ficticios con bastante frecuencia (sin alojarlos ni nada por supuesto) para probar cosas nuevas que quería probar. ¡Funcionó bastante bien para mí!

Phillip Schmidt
fuente
-1

Empecé a programar hace 2 años. Mi escuela no podía enseñar bien los idiomas, y tengo que conectarme en línea e investigar mucho sobre mí. Soy un aprendiz más lento y, por lo tanto, me tomó 2 años escribir mi primer programa, mientras que todos mis compañeros de la escuela todavía tienen dificultades o han dejado de programar.

Esto muestra que es mejor que un programador sea autodidacta en lugar de depender de la escuela. La escuela siempre ocultará información, ya que piensan que no estamos preparados para ello.

Jie Liang
fuente
No estoy seguro de estar de acuerdo. Creo que la autoaprendizaje es importante, pero definitivamente hay mucho material fundamental que puede obtener de la educación formal que le proporcionará las herramientas para comunicarse con los demás y aprender a abordar nuevos problemas en lugar de aquellos que ya se han resuelto.
jmort253
Durante ese tiempo, todos están luchando por comprender lo que la escuela está enseñando y están enseñando a un ritmo muy rápido que todos no pudieron alcanzar.
Jie Liang
La escuela es un programa de adoctrinamiento diseñado para darnos una base de conceptos básicos, pero depende de nosotros continuar esa educación después y continuar aprendiendo por nuestra cuenta.
jmort253
Estoy de acuerdo con lo que dices. Eso es autodidacta es imprescindible si queremos mejorar con la programación.
Jie Liang
-3

Como siempre en matemáticas y ciencias de la computación, hay 2 puntos de vista: 1. Necesarios y 2. Condiciones suficientes

  1. Es necesario (auto) aprender a lo largo de tu vida. No hay otra opción para ser y seguir siendo un buen programador.
  2. El punto anterior no es condición suficiente: debe tener una sólida formación en matemáticas, la escuela secundaria y luego graduarse de una buena universidad en el campo de la informática. Esta es (tal vez) la condición suficiente. Tu cerebro debe ser enseñado a pensar algorítmicamente. Esto NO PUEDE lograrse mediante el autoaprendizaje.
Nikolay Ivanov
fuente
1
Su cerebro puede aprender a pensar algorítmicamente sin la universidad. Incluso sugeriría que hay mejores formas de aprender esto que ir a una universidad (un aprendizaje, por ejemplo, sería más efectivo para muchas personas). Por otro lado, hay muchas personas que simplemente no pueden pensar algorítmicamente sin importar cuántos cursos de informática toman. La universidad ciertamente es de gran ayuda para la mayoría de los programadores, pero tampoco es necesaria.
Phil
Si eres experto en la lectura de libros de texto, entonces leer varios libros y usar herramientas en línea como stackexchange.com y los programadores deberían proporcionar muchos antecedentes en informática y algoritmos.
Peter Smith