En un mundo ideal:
En un excelente artículo No te llames programador y otros consejos profesionales , Patrick McKenzie explica, entre otras cosas, que el lenguaje no importa:
Un desarrollador es una persona que resuelve problemas, en general. Un desarrollador no es una persona que escribe código en un idioma específico.
A las empresas no les importan los idiomas que conoces. Si necesitan contratar a un desarrollador para un proyecto escrito en un idioma específico, y tienen un candidato con mucha experiencia pero que nunca escribió una línea de código en este idioma, aún sería contratado.
Según mi experiencia tanto como desarrollador como como persona que tuvo que contratar a otros desarrolladores, la observación es muy similar:
La experiencia de N años en Java o la experiencia de N años en C # no importa. Lo que importa es que el candidato sepa cómo resolver problemas, sepa la diferencia entre el código de espagueti y el código limpio con una arquitectura bien pensada, etc.
No me importan los idiomas que usaste antes. Para un proyecto de C #, preferiría contratar a un desarrollador profesional que pasó su vida escribiendo código Java, Python y Ruby on Rails en lugar de un principiante que solo conoce C # y lo sabe mal.
El conocimiento y la experiencia que obtienes usando un idioma son reutilizables en cualquier otro idioma.
Un desarrollador experimentado que usó Ruby on Rails para el desarrollo web y pasó el resto de su carrera escribiendo aplicaciones de escritorio Java usando Oracle encaja perfectamente bien para un proyecto ASP.NET MVC usando Microsoft SQL Server. Debido a que esta persona ya sabe todo lo que necesita para este trabajo , aparte de algunas cosas específicas y diferencias de sintaxis.
Por otro lado, una persona que ha realizado solo unos pocos sitios web ASP.NET MVC pequeños no encaja en absoluto, porque es posible que no comprenda completamente la arquitectura MVC, que sepa qué es el perfil de SQL y que le falten algunos otros elementos esenciales conocimiento.
No me digas que no puedo solucionar un pequeño problema con un sitio web PHP que usa CodeIgniter solo porque nunca antes usé CodeIgniter.
En la práctica:
En la práctica, cuando busco trabajos independientes y cuando veo las ofertas de trabajo en general, son muy específicas del idioma.
Algunos buscarían un desarrollador de PHP con dos años de experiencia en Magento. Otros buscarán a una persona con experiencia VB.NET de al menos tres años, y si les envía un currículum mencionando que ha realizado el desarrollo de C # durante seis años, pero sin mencionar VB.NET, no se molestarán contestar. Si solicitan una persona con experiencia en Firebird, no escucharán su experiencia de diez años con Oracle.
¿Por qué hay tanta diferencia entre la teoría y lo que Patrick McKenzie y yo describimos como sentido común y el mundo real de las ofertas de trabajo?
fuente
Don't tell me that I'm unable to fix a small problem with a PHP website which uses CodeIgniter just because I never used CodeIgniter before.
Si bien es perfectamente capaz de solucionar el problema, si la causa raíz es CodeIgniter (una de las pocas peculiaridades del marco o uno de sus muchos errores abiertos), le tomará mucho más tiempo solucionar el problema.<rant>...</rant>
. En serio, ¿hay alguna pregunta real aquí?Respuestas:
Debido a que muchas empresas tienen drones de recursos humanos hacen el reclutamiento que no tienen idea de nada de eso. Cuando RRHH dice "¿Qué calificaciones necesita el candidato?" es mucho más fácil decir "Seis años C #" que decir "Escribe un buen código". Ese dron no tiene idea de cómo se ve "Escribe un buen código" o cómo filtrar un currículum si pueden o no escribir un buen código. Sin embargo, pueden leer rápidamente un currículum y ver "Cinco y tres cuartos de año C #" y tirarlo a la basura.
fuente
Creo que es hora de dejar este mito que un desarrollador con X años de experiencia en el lenguaje Y puede transferir sin problemas al idioma Y2. Asi no es como funciona esto.
Si trata el lenguaje solo como su sintaxis y patrones comunes, entonces sabiendo, por ejemplo, Java le dará una gran ventaja al pasar a C #. Sin embargo, no lo preparará para WCF, WPF, Click Once, las diversas bibliotecas de subprocesos, Linq, y ciertamente no lo preparará para las cosas que el folleto dice que funcionan, pero en la práctica no lo hacen.
Ves que no estás hablando de un idioma, generalmente estás hablando de una plataforma. Y donde la plataforma, .NET es un buen ejemplo, admite muchos idiomas, las personas tienden a converger en una opción preferida.
Entonces, cuando solicito un desarrollador de C #, en realidad estoy anunciando un desarrollador de plataforma .NET cuya experiencia se basa en proyectos de C #. Estos tienden a ser proyectos de servidor .net, proyectos winforms / wpf.
fuente
Se me ocurren algunas razones:
fuente
No todos los trabajos de programación son iguales. Mi trabajo actual ciertamente encaja en su modelo. Implica mucho análisis de datos ad hoc y recogemos y colocamos herramientas según sea necesario. Fui contratado en parte porque tenía un historial de poder ser rápidamente productivo con nuevas herramientas.
Por otro lado hay puestos de trabajo en el que está buscando conocimientos técnicos específicos. En los años 90, trabajaba para una pequeña tienda de software, y necesitábamos desarrollar rápidamente experiencia en C ++. A pesar de pedir explícitamente experiencia en C ++ en nuestros anuncios, la mayoría de los solicitantes sabían menos C ++ que yo. "¡Pero puedo aprender C ++ rápidamente!" todos dijeron. Bueno, sí, estoy seguro de que podrías, pero yo también, y las otras personas que ya están allí. Estábamos buscando a alguien que ya conociera C ++, por lo que tendríamos una fuente interna de experiencia a medida que el resto de nosotros se pusiera al día. Tener otro principiante en el equipo realmente no habría ayudado.
fuente
Digamos que está buscando un candidato para un trabajo .NET / C #. Si tiene dos candidatos para el trabajo, ambos parecen tener la misma experiencia, pero el primero ha adquirido su experiencia en el ecosistema de Java, el segundo en el ecosistema de .NET, ¿cuál es su favorito?
¿Quién puede decir por qué no obtienes una respuesta? ¿Quizás hubo suficientes desarrolladores de VB.NET con experiencia que solicitaron el trabajo? Quizás el departamento de recursos humanos usa la experiencia del lenguaje de programación como un filtro para reducir la cantidad de solicitudes de empleo de 100 a 10. Quizás acabas de hablar con las compañías equivocadas (supongo que en mi compañía te enviaríamos una respuesta en el caso de ejemplo usted describió anteriormente).
fuente
En la mayoría de los proyectos, los resultados de trabajo se necesitan rápidamente y las personas necesitan generar ganancias lo antes posible.
Las personas que pueden satisfacer estas necesidades y no están vinculadas a un idioma específico son escasas y, en consecuencia, demasiado caras. Estas personas solo son contratadas por las grandes empresas que piden habilidades increíbles.
Las personas que pueden resolver el problema pero no pueden aprender un idioma específico rápidamente son menos escasas. Todavía cuestan mucho dinero y tienen un costo adicional de tiempo necesario para aprender el idioma específico.
Este costo adicional de tiempo se reduce al solicitar un programador específico del idioma. Ya ha aprendido las habilidades requeridas y puede entregar resultados rápidamente.
En resumen, un proyecto que debe realizarse en JAVA no necesita un desarrollador de software increíblemente costoso, ni un desarrollador .net promedio que necesitará tiempo para aprender el lenguaje / marco. Necesita resultados inmediatos por la menor cantidad de dinero, que es entregado por el tipo que ya tiene experiencia con JAVA y tiene habilidades relativamente buenas para resolver problemas.
Como siempre, se trata de dinero y de obtener el mayor retorno de la inversión.
fuente
Creo que simplemente estás malinterpretando la frase estándar "<idioma aquí> desarrollador". Las empresas no ponen esa frase en el anuncio para disuadir a los desarrolladores que tienen experiencia en algún otro idioma. ¿Por qué querrían disuadir a los desarrolladores capaces? Desde el punto de vista del empleador, cuantos más candidatos, mejor. Siempre no pueden invitar a personas que no les interesan.
El punto real de la frase es decirte, el lector, lo que implicaría la oferta de trabajo. Y eso tiene mucho sentido, en mi humilde opinión. ¿Solicitaría un trabajo donde se desarrolle en lenguaje ensamblador Z80? O COBOL? O Fortran?
Y, obviamente, si la compañía tiene dos candidatos que parecen igualmente inteligentes, entonces gana el que tenga experiencia en <idioma aquí>. Nada más y nada menos. (Hay casos especiales, donde las personas son contratadas solo para un solo proyecto, o para un proyecto que ya está retrasado, o para el primer proyecto que la compañía desarrolla en <idioma aquí>, donde realmente necesita experiencia en ese idioma desde el principio, Pero no creo que sean la regla.
Por cierto, mi empresa una vez escribió anuncios como usted sugirió ( parece que tiene sentido, después de todo). Los resultados fueron devastadores. Las personas que realmente se preocupan por su trabajo simplemente se saltaron el anuncio. Solo los desesperados, que postulan a cualquier posición abierta, postulan. Nunca lo intentamos de nuevo.
fuente
Da un paso atrás y piensa en la premisa. Quieres que una persona haga algo de trabajo en .net. ¡Pones eso en la descripción de tu trabajo y buscas candidatos con esa habilidad! Esto es solo sentido común.
Ciertamente, estoy de acuerdo con sus filosofías más detalladas acerca de por qué eso podría no ser una buena idea, pero la mayoría de las personas simplemente anunciarán, exigirán y buscarán un candidato con las habilidades que necesitan ahora. Es así de simple, así que creo que esto responde el título de su pregunta de por qué.
Si no pueden obtener ningún candidato, o pasar por varios malos, entonces podrían estudiar un poco y ser más receptivos a los elementos que detalla. De hecho, en el área en la que estoy (Ruby on Rails) hay MUCHOS anuncios en este momento que dicen "no se requiere experiencia, te entrenaremos", etc. y, de hecho, algunas de las principales organizaciones de Ruby on Rails son muy abierto a los candidatos "sin malos hábitos" que puedan entrenar. Entonces, el enfoque correcto es el que ofrecen algunas organizaciones.
Tenga en cuenta también que la mayoría de los anuncios son de reclutadores externos o reclutadores internos no técnicos que simplemente no tienen el conocimiento para "ir de lado" como usted describe.
fuente