2009-06-25 15 views
5

¿Alguna vez ha intentado aprender un idioma mientras estaba en un proyecto? Tengo, y por mi experiencia personal puedo decir que se necesita valor, esfuerzo, tiempo, pensamiento, mucha cafeína y no dormir. A veces esto tiene que hacerse sin elección, otras veces eliges hacerlo; si estás trabajando en un proyecto personal, por ejemplo.¿Aprender un idioma mientras está en un proyecto?

Lo que normalmente hago en este tipo de situación, y creo que todos lo hacen, es "compilar" sobre mi conocimiento actual de idiomas, estructuras, sintaxis y lógica. Lo que me resulta difícil de sobrellevar es la diferencia de integridad en algunos casos. Algunos idiomas ofrecen una buena base para el aprendizaje futuro y el "estudio del idioma", se presentan como una buena fuente de información o un marco de referencia y pueden dar una idea "firme" de lo que está por venir. Otros idiomas forman o introducen una nueva forma de pensar y son más difíciles de acostumbrar.

A veces, involuntariamente piensas en un idioma específico y cuando se te presenta una nueva forma de pensar, un nuevo idioma, puede causarte confusión o hacerte perder entre los "límites" de tu nuevo y tu conocimiento actual de idiomas.

¿Qué puede ser una buena solución en este caso? ¿Qué debería usarse para ampliar el conocimiento del nuevo idioma, una nueva forma de pensar, y mantener o incorporar el conocimiento actual de otros idiomas dentro de las "fronteras" del nuevo idioma?

Respuesta

8

Me parece que necesito hacer un proyecto para aprender un idioma correctamente, pero esos pueden ser proyectos personales. Cuando aprendí Python en el trabajo, primero esperé (y encontré) una desaceleración significativa en mi productividad por un tiempo. Leí los tutoriales estándar, los estándares de codificación y aceché en la lista de Python por un tiempo, lo que me dio una mejor idea de las mejores prácticas del idioma.

Hacer cosas como codificar dojos y cosas cuando se aprende un idioma puede ayudarlo a tener una idea de las cosas. Recientemente cambié de trabajo y volví a Java, y pasé un tiempo trabajando en programas de juguete solo para recuperar la sensación de las cosas (también estoy leyendo Effective Java, 2da edición, ya que mi experiencia principal previa había sido con Java 1.4)

+0

Python fue una mejor opción para mí que descubrí que mi productividad aumentó cuando cambié a ella. Sin embargo, en ese momento solo gastaba entre el 5% y el 10% de mi programación de tiempo de trabajo (y casi ninguno fuera del trabajo, ya que acababa de terminar un máster no relacionado), por lo tanto, YMMV. – PTBNL

+0

Tenga en cuenta que estaba comparando Python con Ruby (lo que estaba usando anteriormente) y Python 2 meses después. –

3

me gustaría mencionar aquí ALT.NET

de auto-organización, la comunidad ad hoc de los desarrolladores obligado por el deseo de mejorar nosotros mismos, sobre hipótesis, y ayudarse mutuamente buscar la excelencia en la práctica de desarrollo de software.

Por lo tanto, en el espíritu de ALT.NET, es desafiante, pero útil para llegar fuera de su zona de confort para aprender nuevos idiomas. Algunas cosas que realmente me ayudaron son las siguientes:

  1. Comprender el historial detrás de un idioma o secuencia de comandos. Conocer la evolución ayuda mucho.
  2. Elija el libro correcto. Investigue sobre StackOverflow y Amazon.com para encontrar el libro adecuado que lo ayude a aliviar los dolores de crecimiento.
  3. OOP es bastante común en la mayoría de los lenguajes maduros, por lo que puede omitir muchos de los capítulos relacionados con OOP en muchos libros. El aprendizaje de la sintaxis será un proceso gradual. Normalmente marque algunas guías prácticas rápidas para eso.
  4. Lea tantos foros de la comunidad como sea posible para comprender las trampas comunes del nuevo idioma.
  5. Asista a algunas reuniones locales para interactuar con la comunidad y comparta sus penas.
  6. Tome un paso a la vez mediante la construcción de aplicaciones pequeñas no tan complicadas y, por lo tanto, ganando impulso.
  7. Asegúrese de crear un marco de referencia para lo que necesita aprender. Cosas como cómo se manejan la seguridad, el registro y el multihilo.
  8. Sea abierto, puede ser crítico, pero si odia algo, entonces no aprenda ese idioma.

Finalmente, creo que vale la pena aprender un lenguaje fuerte como C# o Java, un lenguaje funcional y un lenguaje de scripting como ruby ​​o python.

Estas cosas me han ayudado tremendamente y creo que ayudarán a todos los ingenieros de software y arquitectos a adaptarse a cualquier entorno de desarrollo.

2

Aprendí PHP después de que me contrataron para ser el líder del proyecto Zend Framework.

Me ayudó tener 20 años de experiencia profesional en programación, y un buen conocimiento de C, Java, Perl, JavaScript, SQL, etc. También he gravitado hacia los lenguajes de scripting dinámico durante la mayor parte de mi carrera. Escribí aplicaciones en awk, frameworks en shell, macro packages en troff, incluso escribí un foro usando solo sed.

cosas para ayudar a aprender un idioma en el trabajo:

  • código y la documentación lectura.
  • Escuchando listas de correo y blogs de la comunidad.
  • Hablando con expertos en el lenguaje, afortunadamente muchos de ellos fueron mis compañeros de equipo inmediatos.
  • Código de práctica de escritura, y solicitó revisiones de código y coaching. (Zend_Console_Getopt fue mi primera contribución significativa de PHP).
  • Aprender las herramientas que van junto con el idioma. PHPUnit, Xdebug, phpDoc, phing, etc.

Por supuesto que se aplicaba lo que sabía de otros lenguajes de programación. Muchos conceptos de informática son universales. Las diferencias de un idioma determinado suelen ser simplemente idiomáticas, una forma de decir algo que se puede hacer de otra manera en otro idioma. Esto es especialmente cierto para lenguajes como Perl o PHP, que toman prestados muchos modismos de idiomas anteriores.

También me ayudó tomar cursos de diseño de compiladores en la universidad. Tener una buena base en cómo se construyen los idiomas hace que sea más fácil elegir nuevos idiomas. En cierto nivel, todas son solo formas de abstraer pilas de tiempo de ejecución y referencias de objetos.

4

Creo que, en algunos aspectos, sin importar el impulso para aprender el idioma, debe comenzar por imitar los buenos patrones en el nuevo idioma. Ya sea que eso signifique encontrar un buen libro, con excelentes ejemplos de código, buenos tutoriales en línea o siguiendo el ejemplo de un desarrollador más experimentado, primero tiene que absorber lo que significa escribir un buen código en un idioma en particular. Una vez que haya desarrollado un nivel de comodidad, puede comenzar a ramificarse y experimentar con alternativas a los patrones que ha aprendido, buscando maneras de aplicar las cosas que ha aprendido de otros idiomas, pero manteniéndose dentro de las "reglas" de el idioma. Eventualmente, llegarás al punto en el que sabes que puedes 'romper las reglas' que aprendiste antes porque tienes suficiente experiencia para saber cuándo se aplican o no.

Mis preferencias personales, incluso cuando estás forzado aprender un nuevo idioma, es comenzar con un código desechable. Incluso a partir de buenos tutoriales, sin dudas escribirás código que luego mirarás hacia atrás y no entenderás lo estúpido que pudiste haber sido. Prefiero, si es posible, para escribir como mi primera incursión en un código de idioma que será desechado y no volver a perseguirme más tarde. La alternativa es dedicar mucho tiempo a refactorizar a medida que aprendes más y más. Eventualmente, terminarás haciendo esto , también.

1

Si eres un miembro júnior del equipo y no conoces el idioma, este es n O necesariamente un problema en absoluto. Siempre que haya una revisión y supervisión del código, puede ser productivo.

La sintaxis del lenguaje es un problema, pero las diferencias arquitectónicas son una preocupación más importante.Muchos idiomas también son plataformas de desarrollo, y si no tiene experiencia con la plataforma, no sabe cómo crear una arquitectura de solución viable. Entonces, si usted es el líder del proyecto o trabaja solo, será mejor que tenga experiencia en la plataforma antes de hacer su trabajo de diseño.

Por ejemplo, diría que un codificador con experiencia C# sin experiencia VB probablemente sobreviviría un proyecto VB.NET muy bien. De hecho, sería más difícil para un desarrollador que solo tenía experiencia en C#/ASP.NET completar un proyecto C# WPF que un proyecto VB ASP.NET. Un desarrollador experimentado de PHP puede dudar un poco en un proyecto de ColdFusion, pero probablemente no cometerán errores graves, ya que están familiarizados con una arquitectura de desarrollo web basada en scripts.

Muchos conceptos, como el modelado de objetos y las estrategias de consulta de bases de datos, se traducen perfectamente entre los idiomas. Pero siempre hay una curva de aprendizaje para una nueva plataforma, y ​​a veces puede ser bastante desagradable. El peor caso es que el proyecto debe descartarse porque el archivo está demasiado equivocado para refactorizar.

0

En mi opinión, debe intentar evitar eso. Lo sé, la mayoría de las veces no se puede, pero en todo caso se trata de no mezclar el nuevo idioma con el anterior, y nunca agregar a la mezcla viejos hábitos, prácticas y patrones.

Siempre trate de encontrar recursos que lo ayuden a atravesar el nuevo idioma en la forma en que funciona el lenguaje, no de la manera en que lo hacen otros idiomas; eso nunca tendrá un final feliz, y si lo hace, será muy difícil modificarlo de la manera correcta.

Saludos.

1

Me gusta aprender un nuevo idioma mientras trabajo en un proyecto, porque un proyecto real generalmente me obligará a aprender aspectos del lenguaje que de otro modo podría omitir. Una de las primeras cosas que me gusta es leer el código en ese idioma y saltar. Encuentro recursos (como libros y varios sitios de Internet) para ayudar a medida que avanzo.

Luego, después de haber estado trabajando en ello por un tiempo, me gusta leer (o volver a leer) libros u otros recursos en el idioma. En este momento tengo algo de conocimiento, así que esto ayudará a solidificar algunas cosas y también señalará áreas en las que estoy completamente equivocado en mi comprensión. Por ejemplo, puedo ver que estaba haciendo suposiciones incorrectas sobre las similitudes entre idiomas.

Esto también se aplica a las herramientas: después de usar una herramienta por un tiempo y aprender los conceptos básicos, leer (o copiar) la documentación me puede enseñar mucho.

0

Sí, lo tengo.

Quiero decir, ¿hay otra manera? El único idioma que aprendí que no estaba en un proyecto fue ABC básico, que era lo que usabas en mi primera computadora.

0

Recomendaría si empiezas con un cierto idioma, quédate con él.Solo digo eso porque muchas veces en el pasado probé más y más, y el que comencé fue el mejor: D

0

Cada vez que tengo/quiero aprender un idioma nuevo, me esfuerzo por encontrar algo para codificar

Pero para estar seguro de que lo hice bien, siempre quiero poder verificar mi código y lo que muestra.

Para hacerlo, intento hacer el mismo tipo de cosas con los idiomas que conozco y comparar los resultados. Para eso, creé un pequeño proyecto (alojado en Github) con una hoja de ejercicios y la corrección para cada idioma que aprendí. Es una buena manera de aprender, en mi opinión, porque te da un pequeño proyecto real.

Cuestiones relacionadas