Ok, he estado enseñando a un amigo cómo programar por un tiempo ahora. Aprende muy rápido y hasta ahora es bastante bueno programando. Sin embargo, tiene un "problema" que trato de corregir.
Él salta y comienza a hacer programación de alto nivel sin aprender algunos de los conceptos básicos (ha creado una aplicación web completa pero aún no conoce la paginación o la administración de sesiones).
Sin embargo, este no es el problema. Sigue saltando a las nuevas tecnologías (Node.js, MongoDB, EC2, etc.). Intenté decirle que debería aprender algunos de los conceptos básicos sobre su RDMS de elección (MySQL), ya que lo usa todos los días antes de invertir un montón de tiempo en aprender los conceptos básicos de MongoDB (y probablemente pasar a algo nuevo).
¿Soy el que está equivocado aquí, o debería tratar de concentrarse en una cosa a la vez y ser realmente bueno en eso?
fuente
Respuestas:
Personalmente, creo que puede ser una gran idea probar diferentes tecnologías e idiomas al aprender a programar. Centrarse en una tecnología tiene el beneficio obvio de hacerte muy bueno en eso, pero el inconveniente obvio de solo conocer una sola tecnología.
Pero creo que el inconveniente más importante es que los lenguajes y los marcos generalmente vienen con una ideología. Hay muchos programadores (tal vez la mayoría de los programadores) que solo aplican una ideología en todo lo que programan. Esto es a menudo porque aprendieron un marco en un idioma realmente bien y ahora no pueden ver nada sin esas gafas.
Especialmente para alguien que recién está aprendiendo a programar, realmente no creo que sea un problema querer probar lo que hay ahí fuera, y esperar para concentrarme en algo hasta más tarde. Después de todo, será difícil escribir algo sustancial sin conocer una tecnología decentemente bien.
fuente
Hay buenos razonamientos en ambos lados de este tema. Saber " suficiente " sobre muchas tecnologías diferentes es ciertamente valioso. ¿Saber " un poco " sobre muchas tecnologías diferentes? No tanto.
El conocimiento profundo de tecnologías particulares ciertamente puede ser valioso: SI hay una demanda continua de ellas. ¿Saber " todo lo que hay que saber " sobre una tecnología en particular? ... muy probablemente exagerado.
Entonces, todo está en la balanza. Si termina creando aplicaciones maravillosas con nosql, ¿por qué tendría que saber la diferencia entre el motor InnoDB y el motor MyISAM?
fuente
Estoy de acuerdo en parte. Necesita conocer los principios subyacentes, pero no necesita simplemente sentarse en una cosa y ser realmente bueno en eso. Nadie lo hace.
Sobre sentarse con una cosa y volverse realmente bueno
Actualmente estoy trabajando con C # y Microsoft XNA para hacer un juego. Estoy aprendiendo mucho sobre XNA a medida que avanzo, y aunque ya soy bastante competente con C #, mi conocimiento se está expandiendo poco a poco (hoy aprendí sobre restricciones en los parámetros de tipo ).
Sin embargo, no es necesario que sea 'realmente bueno' en XNA o C #. Si tuviera que terminar mi proyecto ahora y seguir adelante y nunca volver a usar ninguno de esos, estaría completamente satisfecho y mi aprendizaje continuaría en otro lugar.
Sin embargo, los principios son importantes
Al menos entiendo los principios subyacentes. Cuando creo cosas en C # y XNA, entiendo lo que estoy haciendo, y si no lo hago, me entero de ello.
Si escribiera paginación, entendería cómo funciona la paginación. Si su amigo creó algo de paginación y no tiene idea de cómo funcionó, eso es un problema. Si no creó la paginación, no hay razón para que necesite saberlo.
El problema aquí es: ¿sabe él lo que el @ $ #! él está haciendo, o es un programador que no tiene idea de cómo programar?
fuente
Supongo que está intentando otros idiomas porque tiene algo que quiere construir. Siempre puede volver a un lenguaje o marco y aprender más.
Hay una línea muy fina entre aprender la teoría / construir una base y tratar de seguir motivado.
Al menos no está atrapado en un solo idioma. A veces tomas lo bueno con lo malo.
fuente
Encuentro su actitud como un activo más que como un pasivo. Su capacidad para investigar es superior a la media. Su curva de aprendizaje también es superficial. ¿Por qué no explotar estos rasgos si quieres que aprenda algo?
Su mente inquisitiva siempre está en movimiento, ¿por qué no proporcionarle dirección? Comience diciéndole por qué la paginación es importante y esencial. Deje que eche un vistazo a sitios web con paginación y sitios web sin esos.
¿Qué tal dar una crítica constructiva a lo que está haciendo? "Wow, has hecho algo grandioso, pero no sería mejor si lo hicieras de esta manera con énfasis en la optimización y las mejores prácticas".
Creo que hacer una comparación entre una buena práctica y una mala práctica realmente puede estimular su mente.
No lo restrinjas, eventualmente encontrará algo que le gustaría y lo resolverá por algún tiempo. Si yo fuera usted, le proporcionaría mucho material de aprendizaje sobre cosas que le apasionan.
Creo que él está haciendo el enfoque de arriba hacia abajo, mientras que tú, por otro lado, quieres que haga un enfoque de abajo hacia arriba
fuente
¿Porque es malo?
Por el contrario, creo que es muy bueno! Muestra curiosidad y muchas ganas de aprender. ¡Además, quiere encontrar la herramienta adecuada para el trabajo correcto! Mejor que quedarse con una tecnología inadecuada de primera elección. ;)
En realidad, lo hago de la misma manera, como programador experimentado. Y lo recomiendo Cada vez que tengo un nuevo proyecto, mi comportamiento es el siguiente:
Creo que tiene mucho sentido.
fuente
Personalmente, si alguien tuviera que enfocarse solo en una tecnología, diría que debería ser C # / Java, junto con SQL.
A partir de esto, creo, puedes adaptarte a cualquier otra tecnología.
Pero apegarse a una tecnología podría ser limitante si un hombre quiere ingresar al entorno corporativo.
Idealmente, una plataforma orientada a objetos, una plataforma móvil, una plataforma web y luego muy buen conocimiento de SQL (o cualquier otro entorno db).
¡Y lo básico primero, de lo contrario se quedará atrapado más tarde!
fuente
No está mal si es un principiante en programación.
Verá cómo funcionan algunas cosas. Pero si no entiende lo que está haciendo, es mejor no hacerlo en absoluto.
Tuve ese problema conmigo mismo, quiero saberlo todo Java, C, C ++, C #, Phyton, ASP.NET ... etc., pero me di cuenta de que no puedo saberlo todo, así que me concentré en un par de cosas y es mucho mejor.
Entonces, ¿qué debe hacer (aconsejarle):
No estaría de acuerdo con @arnaud si siempre exploras y aprendes cosas nuevas cuando tienes un nuevo proyecto por delante (bueno, no por completo). Se necesita demasiado tiempo para explorar y aprender cosas nuevas una y otra vez y algunos proyectos tienen un límite de tiempo. Pero por otro lado, si necesita aprender algunas cosas nuevas y simples, está bien: D.
fuente
Estoy de acuerdo con usted, a veces es fácil obtener un conocimiento superficial de un marco o tecnología o lenguaje en particular, pero para obtener una comprensión real, es mejor involucrarse en un desarrollo del mundo real hasta su finalización y mantenerlo: convertirse en alguien que otros Ven a pedir consejo. Es preferible convertirse en un gato de todos los oficios, maestro de uno en lugar de solo un gato de todos los oficios, maestro de ninguno . Habiendo dicho eso, no lo desanimaría de aprender cosas nuevas porque obviamente tiene un buen nivel de entusiasmo.
fuente