¿Cuál es el trato con los lenguajes de programación como requisitos estrictos de trabajo? [cerrado]

22

Fui a una "feria de trabajo" recientemente y me sorprendió ver cuánto énfasis parecen poner los lugares de trabajo en los lenguajes de programación con los que los candidatos están familiarizados.

Desde mi experiencia (ciertamente limitada), si bien dominar verdaderamente un lenguaje de programación puede llevar años, aprenderlo a un nivel razonable es un asunto bastante simple para alguien que ya tiene experiencia con otros idiomas, y definitivamente puede encajar dentro del plazo que los empleadores generalmente asignan para La aceleración inicial.

Creo que un empleador se preocuparía más por la cantidad de lenguajes / paradigmas con los que estoy familiarizado, o cuál es mi experiencia en diseño algorítmico / software, en comparación con la tecnología específica con la que estoy capacitado en este momento.

Digamos que ya conozco Java, C ++, Smalltalk y Prolog ... ¿un lugar de trabajo que depende de Objective-C realmente me considera descalificado porque no tengo experiencia en ese lenguaje? ¿Es esto una falla en las metodologías de reclutamiento, y si es así, qué puedo hacer para convencer a ese lugar de trabajo de que mi falta de experiencia con Objective-C no debería importar? Estoy preguntando hipotéticamente, no específicamente sobre los lenguajes de programación mencionados.

Alternativamente, mi experiencia es limitada y admito que me falta algo. ¿Es la experiencia previa con un lenguaje de programación más crucial de lo que creo que es? ¿Hay alguna diferencia si se trata de un puesto junior o senior? ¿Debería hacer la diferencia?

Roble
fuente
2
Fuiste a una feria de trabajo, así que debes ser un estudiante ...
Job
@ Job correcto, soy un estudiante graduado. Tengo algunos años de experiencia en la industria, pero definitivamente estoy comenzando mi carrera ahora.
Roble
66
Solo me gustaría hacer un comentario general sobre todos los que culpan a RRHH. En ninguna compañía para la que he trabajado (que son bastantes), RR.HH. ha tenido algo que ver con la contratación de personal técnico, excepto para enviar la oferta de trabajo final. particularmente, nunca han realizado una evaluación de CV.
Neil Butterworth
En mi caso, cuando dije RRHH en mi respuesta, realmente quise decir más como "alguien que realmente no entiende la tecnología que está escribiendo la descripción del trabajo". Ese podría ser un secretario delegado para escribir una descripción del trabajo a partir de las notas, o podría ser un gerente desafortunado que realmente no entiende lo que quiere.
jhocking
@oak Incidentalmente, ¿podría explicar qué quiere decir con "énfasis"? ¿Simplemente quiere decir que los idiomas están listados en la descripción del trabajo, o que las personas que conoció en la feria de trabajo estaban presionando al respecto? Si es solo lo primero, entonces creo que estás siendo un poco demasiado sensible.
jhocking

Respuestas:

24

Contrariamente a los comunicados de prensa, es un mercado de empleadores en este momento.

Eso significa que simplemente pueden ser exigentes con respecto a cuáles son sus requisitos. Significa que pueden exigir experiencia .NET 4.0, y no solo experiencia 3.5 ... Significa que pueden exigir experiencia con Django, y no solo Pylons, etc.

Claro, puedes aprender todo lo que necesitas saber sobre Ruby en un par de semanas, y Rails puede tardar un par de meses (solo adivinando) para ser competente con ...

Pero el empleador puede elegir entre currículums vitae de personas que ya dominan Ruby & Rails.

TL; DR: Econ 101 ... No creas la exageración sobre la escasez de programadores .

tierra roja
fuente
3
Tengo que señalar que el mercado para programadores depende mucho de la ubicación. Donde estoy (casualmente en una gran ciudad universitaria) los lugares que entrevisté dijeron que es difícil para ellos encontrar candidatos en este momento.
Tesserex
15
Tesserex - que debe ser traducido como "No podemos encontrar programadores que saben todo de nuestra sopa de letras de tecnologías, a un precio que está dispuesto a pagar.
tierra roja
21
Hay muchos programadores; Lo que es difícil de encontrar en este momento (como siempre ha sido el caso) son buenos programadores.
tdammers
10
Por el contrario, como empleador puedo decirle que definitivamente es un mercado de empleados, al menos para personas con talento . Para los grandes programadores, como siempre, la oferta supera con creces la oferta. Por otro lado, no considero a alguien que tenga "un par de meses" de experiencia como programador (o carpintero, médico o cualquier otro oficio especializado), por lo que sus cifras probablemente sean muy diferentes a las mías.
Rein Henrichs
2
@Rein: puedes decir todo lo que quieras, pero la simple economía no lo confirma. Si lo hiciera, vería el salario de los mejores programadores mucho más alto. Un alto médico o un abogado despejarán 500.000 dólares al año ... Un ingeniero de software senior de Google tiene un salario promedio de $ 130.000 (glassdoor). Creo que lo que querías decir era que no podías encontrar a alguien 3 veces más productivo por el precio de un ingeniero promedio.
suciedad roja
14

El problema principal es que nadie sabe realmente cómo contratar buenos programadores. El problema secundario es que los trabajos de programación atraen a muchos solicitantes.

Dada una gran cantidad de currículums, sería muy bueno poder analizarlos y elegir a los buenos programadores, pero nadie sabe cómo hacerlo. De la forma en que trabajan la mayoría de las empresas, el tipo inicial suele ser por recursos humanos. La persona de RR. HH. No sabe nada de Smalltalk o C ++, excepto en la lista de requisitos, a diferencia de una persona de software que podría pensar "C ++ Y Smalltalk: este tipo no tendrá problemas con Objective-C".

Incluso cuando la pila va al gerente de contratación, es muy probable que sea demasiado gruesa para entrevistar a todos, por lo que el gerente de contratación tiene que desechar currículums por alguna razón u otra. Si se trata de un trabajo de C ++, y hay más personas con más de 5 años de C ++ de las que el gerente considera práctico para entrevistar, el gerente puede arrojar todos los currículums que no tienen C ++ en ellos. No es la manera de obtener las mejores personas absolutas, pero nadie sabe cómo contratar a las mejores personas absolutas, y si está limitado en la toma de decisiones por lo que figura en el currículum, las personas con experiencia en C ++ son al menos un poco mejores apuestas

David Thornley
fuente
1
Gran respuesta. Miniggle: no sé si nadie sabe realmente cómo contratar buenos programadores, o si los departamentos y reclutadores de recursos humanos no lo hacen, y la mayoría de las empresas tienen procesos de contratación dirigidos por recursos humanos. Sin embargo, estaría de acuerdo en que nadie sabe realmente cómo contratar buenos programadores sin dedicar mucho tiempo a ello.
Tom Anderson
@ Tom Anderson: Lo mejor que he escuchado es sobre técnicas para evitar contratar programadores malos. Dado el excedente de solicitantes y las razones para que los buenos programadores soliciten en números, esto funciona bastante bien. Todas las sugerencias de Joel que he leído, por ejemplo, funcionan de esa manera.
David Thornley
44
@Tom Anderson Diría que nadie sabe cómo distinguir a un buen programador de uno malo mirando un currículum, y nadie sabe cómo entrevistar a más personas de las que tienen tiempo para hablar. No importa si RR. HH. Lo dirige, o un reclutador técnico o el gerente de contratación.
Jeremy
8

Vamos a darle la vuelta: si supieras el objetivo C, ¿serías útil como programador de C ++? Yo diría que no, no lo harías, los idiomas son muy diferentes. Incluso para lenguajes simples como C, me gustaría ver 6 meses de experiencia antes de contratar a alguien, por C ++ varios años.

Hace algunos años, me enseñé PHP. Diría que pasaron varios meses antes de que fuera bueno en eso, pudiera orientarme en la biblioteca, entendiera modismos comunes, etc. Y ya sabía muchos idiomas.

Neil Butterworth
fuente
2
Las buenas empresas en general invierten en empleados, y tomarse unos meses para ponerse al día es bastante común en la mayoría de las industrias. Desafortunadamente, solo unas pocas compañías de software siguen esta práctica. También (por coincidencia ???) parece que están entre las mejores empresas: Google, Facebook, Microsoft, etc ...
de tierra roja
3
"" "Debería conocer al menos un lenguaje de programación realmente bueno, y preferiblemente debería ser C ++ o Java. C # también está bien, ya que es bastante similar a Java. Se espera que escriba algún código en al menos algunas de sus entrevistas . Se espera que conozca una buena cantidad de detalles sobre su lenguaje de programación favorito . "" " Steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
red-dirt
2
Un programador experimentado puede aprender C ++ en aproximadamente ocho horas ... solo lea "C ++ efectivo" y entiéndalo. Eso lo coloca por encima del 90% de los programadores de C ++ en el mercado. Comprender el STL lo coloca en el 3% superior.
Kevin Cline
3
@kevin ironía? ¿Sarcasmo? ¿Qué?
Neil Butterworth
2
@kevin: está claro que no sabes de qué estás hablando. C ++ es uno de los lenguajes más complejos con más peculiaridades de las que puedes imaginar. No hay forma de que alguien pueda aprenderlo en 8 horas (¡un día de trabajo!). Ni siquiera puedes aprender lenguajes como PHP en ese momento.
Thomas Bonini
8

Depende de varios aspectos del contexto. No solo el nivel de la función, sino también el estado del proyecto y la empresa.

En el nivel más simple, cualquier lenguaje imperativo de llaves es prácticamente el mismo que cualquier otro.

Si puede codificar en imperativo, puede codificar en imperativo. Ya sea Java, C #, C, C ++ o incluso javascript. Dado un libro de referencia decente (y posiblemente un poco de repetitivo), debería poder eliminar un pequeño programa en cualquiera de los otros en una tarde.

Sea cual sea su historial, usted conoce las ramas y funciones de los bucles, y la sintaxis es prácticamente la misma para todos ellos. Si su historial es OO, también sabe acerca de objetos, clases e interfaces.

Sin embargo, he visto a muchos programadores de imperativo solo luchar para escribir programas simples en lenguajes declarativos o funcionales. Si tuviera una tienda Erlang, preferiría que alguien con Erlang, o al menos Prolog, tenga experiencia sobre alguien con C ++.


Cómo depende del nivel del rol:

Reclutamiento para un puesto junior:

Si estuviera eligiendo un programador para un trabajo en C ++, hay ciertas trampas que me gustaría estar seguro de que el candidato es capaz de evitar, como la necesidad de prestar atención a la memoria o las longitudes de las matrices, simplemente para que no No se disparen (y a mí) en el pie Si nunca han hecho C o C ++, entonces tendría que resolver eso en la entrevista.

Y para un rol superior:

Una de las claves para programar eficientemente es saber lo que no debe escribir usted mismo. La clave para eso es las bibliotecas estándar (y estándar de facto). La clave para eso, es la experiencia. No puede simplemente sentarse con "Teach yourself Java" durante una semana e instantáneamente convertirse de un programador de C ++ de 10 años en un programador de Java de 10 años.


Cómo depende del estado del proyecto / empresa

Dado un proyecto Java que es prácticamente una pizarra limpia. Quisiera que un nuevo empleado senior tuviera mucho conocimiento sobre el ecosistema de Java y pudiera asesorar sobre las diferentes tecnologías disponibles.

Dado un proyecto de Java maduro, felizmente consideraría un desarrollador de C ++ experimentado, con poca o ninguna experiencia en Java para un rol superior de Java. La mayoría de las decisiones del ecosistema ya se habrán resuelto, y el nuevo empleado podrá adquirir experiencia con las bibliotecas de Java mientras la empresa aprovecha la experiencia del programador en el desarrollo de software OO.

Carnicero paul
fuente
Creo que plantea un punto muy importante al mencionar el ecosistema. Esto es algo que puede desempeñar un papel importante, y supongo que generalmente se necesita un desarrollador experimentado en la plataforma X para familiarizarse con el ecosistema de X; solo aprender la nueva sintaxis y algunos paradigmas nuevos probablemente no lo reducirán.
Roble
Estoy con el roble - usted hace un excelente punto de que ser un buen X programador requiere mucho conocimiento de los ecosistemas en la parte superior de sólo levantar el lenguaje X .
Carson63000
4

Depende del lugar de trabajo. Si están muy ocupados, es posible que no tengan tiempo para esperar a que usted alcance un punto en el que pueda funcionar en Objective-C; es posible que quieran a alguien que pueda comenzar a ejecutar.

Algunos lugares de trabajo pueden estar dispuestos a arriesgarse si ven que está familiarizado con otros idiomas, además de tener fundamentos sólidos y conocimiento del dominio comercial. Eso realmente dependerá de cuán abiertos sean y cuán bueno seas para convencer al reclutador de que corra ese riesgo.

FrustratedWithFormsDesigner
fuente
4

Contratar es difícil; contratar gente buena es aún más difícil. He terminado de contratar donde me enfrenté con una pila de más de 500 hojas de vida. Por supuesto, filtramos a las personas con menos experiencia en lo que queríamos para que la pila se redujera a un tamaño razonable. Es justo para el excelente candidato que no conoce ese idioma, probablemente no. Pero si puedo encontrar a 100 personas que tengan las calificaciones que estoy buscando, realmente no voy a pasar mucho tiempo en las 400 que no lo hicieron, sin importar cuán buenas sean.

Ahora en la contratación, puedo tener una larga lista de requisitos, pero generalmente solo uno o dos son factores decisivos. Y si no encuentra a nadie con la lista inicial de calificaciones que desea entrevistar (o más tarde si todos fallan la entrevista que he visto suceder), entonces generalmente volverán y mirarán a las personas que faltan algunas de las calificaciones menos críticas o personas que tienen algo similar pero no lo mismo. En esos casos, a menudo busca algo sobre la experiencia de la persona que lo haga mejor para su trabajo que alguien con todas las calificaciones técnicas. Por ejemplo, consideraría a un analista de datos con experiencia en una base de datos empresarial diferente si tuviera experiencia en mi dominio comercial (de hecho, esa persona probablemente haría mi primer corte si veía todos los currículums). Lo mismo con algo como C # y Java. Si la persona está haciendo un trabajo de un nivel similar de complejidad y especialmente en un dominio comercial similar, podría ser un muy buen candidato incluso si tiene el otro idioma.

Sin embargo, a menos que tuviera un programa de capacitación bastante formal para personas de nivel básico, sería menos probable que contratara a personas que no cumplían con mi conjunto mínimo de idiomas. Y casi nunca de un grupo que no tenía nada de lo que estaba buscando. Las personas sin experiencia tienen menos que aportar a la mesa en términos de alguna calificación de compensación y menos antecedentes para demostrar que pueden hacer un trabajo de nivel profesional en cualquier idioma. Tienen suficiente para aprender con su primer concierto profesional sin comprender el lenguaje más importante que usamos. Y contratarlos es un riesgo mayor que pueden pasar meses antes de que pueda obtener un trabajo útil de ellos.

Otro punto entra en juego si el oficial de contratación está moviendo al equipo a una nueva tecnología. Si nadie en el equipo es verdaderamente experto en la tecnología y tengo que contratar a alguien nuevo también, buscaré contratar a alguien con la mayor experiencia que pueda encontrar en esa tecnología porque tienen una idea de dónde están las "minas terrestres "para evitar son.

Finalmente, solicite los trabajos que le interesan incluso si no cumple con todos los requisitos establecidos (pero trate de cumplir con algunos, a los funcionarios de contratación no les gusta perder el tiempo con personas que nunca serían contratadas). Nunca se sabe qué competencia va a tener para un trabajo o qué impresionará más a las personas que seleccionan los currículums o hacen las entrevistas. Lo que podría obtener una entrevista en la empresa A podría ser exactamente lo que le impide obtener la entrevista en la empresa B, incluso si tienen requisitos similares en papel. Además, podrían tener un trabajo que satisfaga mejor sus calificaciones que aún no han anunciado. Pero nunca serás considerado para el trabajo si no saben de ti.

HLGEM
fuente
3

¿Debería ? No. lo hace ? Si tristemente Este es el síndrome de la "ardilla púrpura": la compañía quiere tener su pastel y comerlo también, y conseguir un candidato que pueda hacer todo lo que necesite o pueda necesitar bajo el sol. A menudo, pero no siempre, esto se debe a que A) No tienen idea de lo que realmente implica el desarrollo y simplemente asumen que alguien que cumple con todos sus criterios puede hacer el trabajo, B) Están siendo exigentes porque pueden salirse con la suya, o C) Planean presentar una H-1B / Green Card / Promot desde dentro, pero tienen que hacer que parezca que están anunciando un trabajo real.

Wayne Molina
fuente
3

"Digamos que ya conozco Java, C ++, Smalltalk y Prolog ... ¿un lugar de trabajo que depende de Objective-C realmente me considera descalificado porque me falta experiencia en ese lenguaje?"

Si tiene más de 20 años de experiencia en 3 o 4 idiomas que tienen características similares a Objective-C, entonces probablemente lo contrataría para hacer Objective-C y esperar que sea productivo en 6 a 8 semanas. (Esto se basa en mi experiencia personal con el aprendizaje de Objective-C hace unos años).

Si eres verde justo al salir de la escuela y no tienes experiencia práctica real tangible en nada, entonces probablemente no te contratarán para hacer algo con lo que no estás completamente familiarizado.

Objective-C es un hombre de paja interesante aquí. Requiere que conozcas muy bien C, requiere que conozcas muy bien el Análisis y Diseño Orientado a Objetos, en la mayoría de los casos requiere que conozcas C ++ en una medida no trivial porque hay bibliotecas de C ++ con las que probablemente querrás interactuar.

Requiere que comprenda la administración manual de la memoria, así como también cómo funciona la administración automática de la memoria / recolección de basura y cuándo usar cada técnica en el mismo programa.

No es solo Objective-C lo que necesita saber también sobre Cocoa y POSIX, porque acéptelo Objective-C es para todos los fines prácticos inútiles fuera de los entornos de Apple y también debe conocer Cocoa.

Y cuando Cocoa le falla, debe poder saber qué API POSIX usar cuando no puede hacer lo que quiere con los envoltorios de Cocoa.

También implica que también debes conocer Unix en un grado no trivial.


fuente
2

Depende del idioma / individuo.

Si soy un lugar de C # y alguien con experiencia en JAVA / J2EE aplica, voy a intentarlo. La sintaxis entre C # y JAVA no es tan diferente. La codificación es codificación y me imagino que una vez que se acostumbren a algunas de las diferencias estarán bien.

Lo mismo ocurre con JAVA -> C #.

Ahora, si usted fuera una persona de C # y solicite un trabajo en C ++, quiero ver experiencia. Hay demasiadas diferencias

Entonces sí, depende de la situación

PSU_Kardi
fuente
3
La sintaxis es una parte tan pequeña del aprendizaje de un idioma ...
Boris Yankov
@Boris eso es cierto, pero lo que dice todavía se aplica en algún nivel, ya sea estilo o bibliotecas o algo más ...
tylermac
2

Si bien creo que el OP está muerto sobre cómo un programador con experiencia en muchos paradigmas puede agregar fácilmente uno más, todo se reduce a la aversión del empleador al riesgo. Un empleado potencial que no está familiarizado con sus herramientas es un comodín; podrían ser realmente geniales, pero también podrían ser un fracaso, y será más difícil de lo normal para el entrevistador notar la diferencia si no pueden hacer preguntas en profundidad sobre las tecnologías que utilizan.

Definitivamente no estoy diciendo que esta sea la forma correcta de ver esto, pero así es como lo hacen algunos empleadores. Los inteligentes explotan esto y recogen a los increíbles programadores con 30 años de experiencia en C ++, mientras que los estúpidos los rechazan porque carecen de los 15 años requeridos de experiencia en Ruby on Rails. Sin embargo, los programadores también pueden explotar esto evitando el empleo con empleadores que están tan mal informados. Después de todo, ¿quién quiere trabajar para un lugar que sistemáticamente toma malas decisiones de contratación?

Morgan Herlocker
fuente
1
+1 para "será más difícil de lo normal para el entrevistador notar la diferencia si no pueden hacer preguntas en profundidad sobre las tecnologías que usan", eso parece ser una buena razón.
Roble
1

En parte, se trata de RR.HH. lanzando palabras de moda en una descripción del puesto, ya que realmente no entienden el papel. Es por eso que ocasionalmente te encontrarás con la situación cómica de una descripción de trabajo que especifica 3 años de experiencia en una tecnología que solo existe desde hace 6 meses.

En cuanto a si debería o no hacer una diferencia, eso realmente depende del rol y de las personas involucradas. Casi todos los gerentes que contratan (ciertamente todos los inteligentes) instruirán a Recursos Humanos para que los apruebe como candidatos que tienen mucha fuerza en la mayoría de las áreas, incluso si carecen de uno o dos puntos en la descripción del trabajo. Sin embargo, eso generalmente no se aplica a un recién graduado; Me refiero a personas con gran experiencia laboral que interactúan con clientes o equipos líderes o algo así.

jhocking
fuente
0

Creo que un empleador se preocuparía más por la cantidad de lenguajes / paradigmas con los que estoy familiarizado, o cuál es mi experiencia en diseño algorítmico / software, en comparación con la tecnología específica con la que estoy capacitado en este momento.

¿Alguna vez has visto todos los elementos que componen tu pila de desarrollo? Por ejemplo, qué IDE, marco de prueba, integración continua, control de versiones, metodología de desarrollo y paradigmas de código que conforman un entorno que alguien usa para crear software. Esta puede ser una serie de herramientas que algunas compañías pueden querer que alguien ya conozca en lugar de tener que aprender desde cero. El punto de ironcode sobre el mercado de un empleador es otro factor aquí, ya que puede haber algunos casos en los que haya mucha competencia para un puesto y las empresas puedan apuntar hacia el cielo y posiblemente obtenerlo.

Solo para dar un ejemplo más concreto sobre ese entorno, esto es lo que tengo donde trabajo: Visual Studio 2008 haciendo ASP.Net usando C # principalmente, nUnit, Cruise Control.Net, Subversion, Agile / Scrum, con una combinación de procedimientos, OO , y funcional dependiendo de dónde se mira. Si quisiera cambiarme a Java, esto podría significar acostumbrarme a nuevas herramientas para muchas de estas funciones que pueden no ser lo que un empleador quiere absorber como costo de contratarme para ese puesto. También puede haber algunos puntos difíciles que aquellos con experiencia en esa versión pueden conocer mejor que otros y evitar algunas trampas que de otra manera podrían hacer que alguien diga: "¿Por qué lo construyeron de esa manera?"

JB King
fuente
Pero, curiosamente, la experiencia en un marco de solución de control de fuente / IDE / Testing será secundaria a la experiencia en lenguajes de programación (aunque ciertamente puede ayudarlo a conseguir el trabajo).
Roble
-2

No mires. Estos requisitos no los ponen los técnicos de TI. Son reunidos por la gente de recursos humanos. Y la forma en que las personas de recursos humanos obtienen los requisitos es gritando preguntas a las personas de TI mientras se tambalean hacia adelante y hacia atrás a la máquina de café.

Entonces dicen "¿Qué necesitas?" y el idiota al azar que termina respondiendo dice "Un programador. Necesita unos años de experiencia. Como, no sé, 4? Y sería bueno si supiera .Net". Una respuesta razonable.

Pero se traduce en "4 años de experiencia en .Net 4" y es .Net 4 porque, cuando buscas en Google .Net, el primer enlace te llevará a una página que habla de .Net 4.

También existe la posibilidad, y me he topado con esto varias veces, de que tienen un requisito de idioma específico porque quieren avanzar en esa dirección, y piensan que será más fácil si tienen una persona con experiencia en el personal.

Satanicpuppy
fuente
1
Esta es una respuesta bastante amarga. Probablemente hay algunas compañías donde la escena que describiste es cierta, pero la mayoría no es tan disfuncional.
jhocking
Discrepar. Las últimas compañías en las que he trabajado ni siquiera tenían personal de recursos humanos. Y cuando anunciamos nuevos empleados, requerimos experiencia comercial con el idioma y la plataforma en la que desarrollamos. ¿Por qué? Porque a menos que no haya candidatos con esa experiencia (y los hubo), ¿por qué tomarse el tiempo extra para hablar con personas que no tienen la experiencia, con la esperanza de que puedas encontrar a alguien tan bueno que estés dispuesto a esperar un momento? ¿ellos aprenden?
Carson63000