¿Por qué la mayoría de las ofertas de trabajo son para un desarrollador de <language here>, en lugar de un desarrollador en general? [cerrado]

10

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?

Arseni Mourzenko
fuente
12
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.
Yannis
12
Se le olvidó algunas etiquetas: <rant>...</rant>. En serio, ¿hay alguna pregunta real aquí?
Cíclope
66
"No me importan los lenguajes que usaste antes. Para un proyecto de C #, prefiero contratar a un desarrollador profesional que se haya pasado la vida escribiendo código Java, Python y Ruby on Rails en lugar de un principiante que solo conoce C # y sabe mal ". - ¡Toma a ese hombre de paja! Esta es una falsa dicotomía. Tu discurso es correcto para principiantes, pero NO para puestos que requieren un conocimiento profundo de una plataforma en particular.
Jim en Texas
1
Alguien que tenga experiencia en un idioma va a hacer el trabajo mucho más rápido y de manera más limpia, pensar lo contrario es simplemente delirante.
Thomas Bonini
Cuando soy la persona que contrata, llego a ser el que tiene una lista muy larga de "Debe haber usado los términos Technobabble X, Y y Z". Y si puedo encontrar a esa persona, puedo contratarla. Cuando soy la persona que busca un trabajo, podría resentirme por no mirarme porque solo tengo montones de cerebros y no la experiencia exacta que desean, pero si tuviera exactamente lo que desean, esperaría para ser contratado, en el acto. Entonces, al final, es su llamado, y así es como debería ser.
Warren P

Respuestas:

16

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.

DeadMG
fuente
3
Exactamente. los no desarrolladores y la administración pueden mirarlo torcidamente si dice que está buscando a alguien con habilidades similares pero que necesitaría aprender un poco (por ejemplo, sintaxis específica, no conceptos) inicialmente en el trabajo a menos que estén de acuerdo con eso.
Michael Durrant
Pensé que se llamaban monos de recursos humanos ... Estoy totalmente de acuerdo, pero es una buena idea tener <language here> guru en el equipo.
Lukasz Madon
3
Poner "escribe un buen código" en el anuncio no tiene sentido. Todos piensan que escriben un buen código. Y los más condenados por sus habilidades superiores de escritura de códigos suelen ser los que escriben el peor código.
nikie
1
@nikie: es una simplificación. Por supuesto, no pondría exactamente eso en el anuncio.
DeadMG
3
No creo que esta sea la razón principal, ya que las nuevas empresas pequeñas sin un departamento de recursos humanos hacen exactamente lo mismo.
J. Maes
22

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.

Ian
fuente
Estoy de acuerdo. Por supuesto, es posible, pero difícil. La sintaxis de la familia C se transfiere fácilmente, pero la comprensión real de la plataforma completa y el conjunto de herramientas toma mucho tiempo para asimilar. Mi consejo para los desarrolladores / programadores / analistas / codificadores más jóvenes es que aprovechen las nuevas tecnologías en su propio tiempo mientras todos todavía son principiantes. Las personas que se sumergieron en el desarrollo HTML5, iOS y Android hace dos o tres años ahora están en buena forma. Por supuesto, es posible adivinar mal (pregúnteme acerca de Flex), pero no es el fin del mundo.
Jim en Texas
Esto se debe principalmente a que Java -> C # es similar a C -> C ++: técnicamente pueden estar construidos sobre las mismas bases, pero C # incluye muchas más funciones que realmente desearía usar. La transformación inversa sería mucho más fácil, yendo de C # a Java.
DeadMG
11

Se me ocurren algunas razones:

  1. Empleado vs consultor: si estoy contratando a un consultor, quiero que esté al día en la pila de tecnología que estamos utilizando. Se espera que los consultores sean eficientes muy rápidamente ya que no tienen tanto tiempo para amortizar el aprendizaje.
  2. Oferta / demanda: como dijo Doc, si voy a elegir al candidato más experimentado que pueda para el trabajo. Y la pila tecnológica sí importa para las tecnologías establecidas. Si estoy buscando una persona para desarrollar en Go (escogiendo un idioma que pocas personas conocen), casi nadie tiene experiencia con él y vuelvo al conjunto de habilidades como desarrollador en general.
Jeanne Boyarsky
fuente
4

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.

Charles E. Grant
fuente
1
+1: Un EQUIPO puede hacer que algunos o incluso la mayoría de los desarrolladores sean nuevos en el idioma, pero ayuda mucho tener expertos en idiomas que puedan enseñar a todos los demás.
ÁRBOL
3

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 nunca escribieron una línea de código en este idioma, aún lo contratarían.

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?

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.

¿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).

Doc Brown
fuente
2

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.

J. Maes
fuente
2

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.

nikie
fuente
1

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.

Michael Durrant
fuente