¿Por qué alguien le diría a un reclutador que él / ella puede aprender cualquier lenguaje de programación o marco si es contratado?

Como no aprendes lenguajes de programación, aprendes programación. La programación es una forma de pensar y resolver problemas. Un lenguaje de programación es simplemente la forma en que expresa esos pensamientos y soluciones. Aprender un nuevo idioma no es difícil para un programador experimentado, especialmente si está aprendiendo un idioma similar o relacionado con uno con el que tenga experiencia.

Muchas compañías contratarán programadores experimentados incluso si nunca han usado el lenguaje requerido en la compañía, porque saben que pueden entrenarlos fácilmente para hacerlo siempre que demuestren sus capacidades generales de programación. Esto generalmente se hace con una prueba de codificación. Esto se suma a las pruebas de pizarra, entrevistas técnicas, revisiones de trabajos anteriores, etc.

Los marcos son aún más fáciles, ya que están basados ​​en otro lenguaje de programación. Alguien experto en Ruby pero no familiarizado con el marco de Rails no tendrá problemas para aprenderlo. Seguramente podrían pasar una prueba de codificación Ruby como esta, por ejemplo, que probablemente se les dará por la empresa a la que se postulan.

Porque a menudo es verdad.

El objetivo de un marco no es ser difícil o hacer que la tecnología con la que está trabajando sea más difícil. Es una herramienta que utiliza tecnologías con las que ya se supone que es competente, y que se supone que facilita el trabajo de muchas maneras (tareas estándar de plantillas como crear componentes, conectar rutas de datos, manejar y pasar eventos, etc.) en). Por ejemplo, la CLI de Angular 2 hace que la creación de un proyecto, la creación de componentes y otras tareas sea tan simple como ejecutar un comando en su terminal, todo lo que tiene que hacer es abrir los archivos y ponerse a trabajar en la implementación, todas las cosas de la línea de base simplemente ordenar de ocurre mágicamente (más o menos). Incluso puede usar la GUI del código VS ahora si la línea de comando no es lo suyo. Haga clic derecho, nuevo componente, esquele estos métodos, etc. Después de eso, simplemente use JS para implementar, lo que se reducirá a sus iteraciones, mapas, filtros o el uso de otro marco como Underscore y cualquier otra cosa que haya surgido en estos días.

Ejemplo: Javascript, HTML, CSS, como tecnologías centrales. No solo “vas a aprender rápidamente” cualquiera de ellos, no a un nivel profesional. Pero, digamos que ya tiene todo eso, Y ha trabajado con Angular en algunos proyectos, y tal vez pasó un poco de tiempo con Ember.

Si un reclutador dice “Reaccionar”, sería estúpido decir, “oh, nunca he trabajado con eso, no puedo hacer el trabajo”. Usted diría: “Estoy familiarizado con el modelo MVC, un par de otros marcos, y todas las tecnologías requeridas que el marco emplea. Estoy seguro de que no tendré problemas para recogerlo.

Sin mencionar que los marcos van y vienen. Angular 1.x estuvo de moda por un tiempo, pero en el uso práctico resultó ser más complejo de lo que probablemente debería ser un marco MVC (ish), y tenía algunas nociones demasiado prescriptivas que incluso Google decidió no usar para su Proyectos propios. Ya los avisos publicitarios dicen Angular 2. Y, ahora más personas están hablando de Riot, y se ha hablado de la próxima versión de React …

Dentro de un año, será otra cosa. Cualquiera que le diga: “Soy experto en todos ellos, he trabajado en productos de nivel profesional con todos ellos, etc.” probablemente esté exagerando su exposición.

Ponlo de esta manera; He estado haciendo esto durante un cuarto de siglo. Solo en el mundo de la interfaz de usuario, he trabajado con Cairngorm MVC, Robot Legs, Pure MVC, Angular, React, Zend, un pequeño Ember, dos marcos que escribí yo mismo, y tal vez una docena de otros marcos que ni siquiera puedo recordar. Actualmente estoy trabajando con Flask, he trabajado con Hibernate … Quiero decir, sigue y sigue. Con los años he olvidado más marcos de los que recuerdo.

Así que sí, tienes un marco con el que no he trabajado, no te preocupes por eso. He demostrado una y otra vez que puedo recogerlos rápidamente, y eso es lo que digo cuando me enfrento a la pregunta.

Pensamiento posterior: hay algo similar a la dependencia excesiva de los marcos. Conozco tipos que no pueden hacer nada sin Angular. Si solo les entregaste JQuery y dijiste que construyeras un sitio bastante complejo, no podrían hacerlo porque no entienden cómo crear las piezas de plomería de manera abstracta, terminan conectando vistas y sobreutilizando los eventos de un marco, etc. creando algo desordenado que se derrumba con el tiempo. Diría que es mucho más importante poder crear un sitio web solo con JS, HTML, CSS y no conocer Angular, que ser capaz de crear un sitio con Angular, pero no tengo idea de cómo hacerlo con solo JS, HTML y CSS. Sin estudio de MVC fundamental, sin conocimiento de cómo crear un bus de notificación / evento simple, etc. Estos son conceptos de programación importantes con los que muchos tipos de “framework” no tienen experiencia práctica.

Muchos desarrolladores de software, particularmente los desarrolladores de contratos itinerantes como yo, prosperan aprendiendo, adquiriendo competencias y trabajando con equipos de productos recién fusionados.

Con el tiempo, muchos desarrolladores se vuelven expertos en plataformas de aprendizaje, marcos e idiomas. Muchos desarrolladores comienzan a reconocer los patrones que surgen.

Reconocer patrones y puntos en común es invaluable. Dicha experiencia trasciende plataformas, marcos y lenguajes.

Era un desarrollador experimentado de C # cuando aprendí a Ruby desde cero a ejercer mi oficio en una startup. Al evolucionar hacia un desarrollador competente de Ruby on Rails, aprendí Python y Google Cloud Platform para ejercer mi comercio en otra startup. Y como practicante de JavaScript desde finales de la década de 1990, descubrí que cada 6 meses hay un nuevo marco para aprender.

Cuando un desarrollador dice: “Nunca he hecho React Native, pero puedo aprenderlo” , significa que consumirá 10 horas de instrucciones de video de Udemy, luego publicará un proyecto React Native en GitHub antes de entrevistarlo para el concierto que estás vendiendo

¡Porque ellos pueden! Realmente, una vez que sabes cómo funciona el programa, aprender un nuevo idioma no tiene que ser un gran negocio. Depende de qué idioma y qué tan relacionados están sus conceptos con los idiomas con los que está familiarizado, por supuesto. Todavía no puedo entender la sintaxis de LISP, por ejemplo. Pero para casi todos los trabajos que he tenido, tuve que aprender un nuevo idioma.

Por ejemplo, para mi primer trabajo, tuve que programar en Visual C ++, a pesar de no tener experiencia previa en un entorno de desarrollo de Microsoft, y una experiencia muy limitada en C ++. Mi segundo trabajo fue Java a pesar de muy poca experiencia previa en Java. También aprendí XSLT y mi primer fragmento de Javascript en ese trabajo. El tercer trabajo fue Ruby, que fue un cambio refrescante de todas las cosas de Java y XML. El cuarto fue Groovy, pero eso está a medio camino entre Ruby y Java, por lo que realmente no se siente como un nuevo lenguaje. Después de eso, me convertí en un profesional independiente, que aunque liberador, limitó mis oportunidades de aprender nuevos idiomas, pero tuve que trabajar en muchos marcos nuevos, incluidos Wicket (Java) y AngularJS (Javascript). Actualmente estoy buscando mucho en Scala, y ahora que puedo elegir la pila de tecnología para un nuevo inicio, podría elegir Scala para eso. Todavía no tengo ninguna experiencia real con él, pero espero estar en funcionamiento en dos semanas.

Para un buen programador, dos semanas para dominar los aspectos más utilizados de un nuevo idioma no es inusual. La parte más importante es programar con él; No aprendes sin hacerlo. Sospecho de cualquier programador que afirme saber solo un idioma. Les creo, pero el hecho de que nunca se ramificaron, no habla bien por ellos. Aunque sí conozco a un tipo muy inteligente que se niega a programar en otra cosa que no sea Java. Supongo que puede ser bueno poder concentrarse en una sola cosa e ignorar todo lo demás.

Mi padre comenzó a programar en la década de 1970, y cuando se retiró, estaba trabajando principalmente en Java. Aprender cosas nuevas es solo parte del trabajo.

Eso no significa que ningún programador pueda trabajar aleatoriamente en cualquier idioma. Siempre hay una curva de aprendizaje, y aunque algunos idiomas son bastante similares, otros son completamente ajenos (mi problema con LISP, por ejemplo). Y ciertamente vale la pena ver en qué están interesados ​​los programadores. Las personas aprenden más rápido cuando aprenden algo que están motivados para aprender, algo en lo que ven valor.

Y también hay un valor absoluto en los gurús que conocen cada pequeño detalle sutil sobre un idioma. Alguien que acaba de recogerlo no será un experto en todos los entresijos, pero incluso cuando alguien ha estado trabajando en el mismo idioma durante 20 años, no hay garantía de que sea un gurú. Podrían ser simplemente un programador mediocre que tiene problemas para aprender nuevos idiomas.

Simplemente porque es verdad. Dicho esto, sin embargo, no desea que su jefe de equipo o arquitecto intente aprenderlo a medida que avanza. Se supone que el líder / gerente / arquitecto del equipo debe ser mentor y guiar a otros, y si no tienen experiencia en los idiomas / marcos / herramientas principales, es difícil para ellos hacerlo. Liderar requiere conocer los matices y las trampas de un idioma.

Como se mencionó, los idiomas son herramientas, no resultados finales. El tipo de sierra, martillo, clavos, etc. que usa para construir una casa para pájaros solo afecta marginalmente el resultado final de la casa para pájaros, si es que lo hace. Si sabe cómo usar una sierra de calar, pasar a usar una sierra de calar es trivial.