¿Cuánta experiencia en promedio debe tener un desarrollador Sr. para ser competente con un marco o biblioteca? [cerrado]

7

Si usted es un desarrollador Senior con más de 8 años de experiencia, ¿cuánto tiempo dedica a la programación es razonable para la competencia en promedio? Trabajar específicamente con alguna biblioteca o marco asociado con el lenguaje central con el que han trabajado. Por ejemplo, 2 años de Spring o Hibernate para un desarrollador de Java.

Entiendo que esto se basa en la complejidad del conjunto de herramientas, el marco o la biblioteca, más la competencia del desarrollador individual; sin embargo, estoy seguro de que existen rangos razonables basados en el tiempo con un idioma (de ahí la referencia a Senior ) que un desarrollador Senior debería poder obtener competencia y ser productivo.

La razón por la que formulo la pregunta es que los gerentes de TI deben saber esto al momento de redactar los requisitos para un puesto y, como desarrollador, me gustaría tener una mejor idea de qué criterios está involucrado para este tipo de experiencia: fórmula de competencia que tiene existir. Incluso si es una regla de oro solamente.

Lo que motivó esta pregunta es que he encontrado que los reclutadores, que generalmente no tienen experiencia técnica, están tratando de ubicar personal técnico y solo miran las palabras de moda de la tecnología en un currículum vitae y cuánta experiencia tiene cada desarrollador. . El gerente de contratación muchas veces no tiene una formación técnica y hace lo mismo con el currículum y utiliza a su arquitecto u otro experto técnico para seleccionar al candidato y asegurarse de que coincida con la persona en la entrevista.

El problema aquí es la percepción de "competencia" en la mente del gerente de TI de contratación, ya sea que el desarrollador pueda realmente recoger las cosas y correr con ellas. Dependen de alguna fórmula en su mente en cuanto a cuánta experiencia tiene el desarrollador con una tecnología que funcionará para lo que ellos quieren.

    
pregunta 21.02.2012 - 00:21

8 respuestas

22

La forma en que las personas conocen el libro Mythical Man Month, que habla sobre el mito falso de Man-month en la planificación de proyectos, creo que existe una clara necesidad de otro libro paralelo llamado "Mythical Man Years" para explicar por qué el número de años es una métrica inútil para evaluar a las personas.

Hay muchos aspectos para explicar esto:

1. Solo el número de años no cuenta:

En una empresa de TI basada en consultoría / proyecto: a menudo hay períodos significativos en los que el personal está en el banco, o donde el personal está asignado a un proyecto pero no hace nada significativo. A veces, incluso si las personas realizan algún trabajo constructivo, hay casos en los que tienen 1 año de experiencia multiplicada 8 veces en lugar de hacer 8 cosas diferentes durante 8 años.

  

Elegir candidato, basado en la profundidad, no en la duración de la carrera

2. Lo que aprendes es más importante.
A continuación, estamos hablando de lo que él / ella ha aprendido de los demás para que ahora pueda aplicarse a otros problemas. Hay muchas personas que son tan obedientes y muestran resultados exitosos al seguir el gesto del jefe en lugar de Aplicando el pensamiento individual. Esto significa que si el candidato no recibe el apoyo de buenos colegas y jefes, se convierten en un desastre (y muchos de los candidatos no entienden esto)

  

Elegir candidato, basado en su contribución original que en el proyecto   resultados y complejidad

3. El número de años a veces es inversamente proporcional a la cantidad que puede aprender.

Esto no tiene que ser cierto, pero es una posibilidad. Debido a que alguien ha dedicado mucho tiempo a un tema, puede dejar de aprender; aprender un nuevo marco (detalles de él) podría no ser tanto si alguien ha trabajado en un nivel similar de desafío (y ha adquirido sabiduría) de lo contrario. Dado esto, puedes estar mejor con un tipo relativamente más nuevo en comparación con un tipo que tiene experiencia.

  

Elija un candidato que tenga energía para aprender en lugar de alguien cansado   o quien piensa que lo sabe todo.

4. Una nueva área de trabajo requiere nuevas ideas

esto implica que, con frecuencia, en los roles más importantes, los detalles específicos (cómo resolver problemas con una herramienta específica) son menos importantes, pero en cambio, es más importante conocer cómo abordar los problemas en general. Se necesita sabiduría en lugar de años de experiencia para prever los problemas futuros.

  

Elija un candidato que haya desarrollado una visión en lugar de alguien que   ¡conoce todos los términos de la API!

    
respondido por el Dipan Mehta 21.02.2012 - 05:27
14

A menos que necesite que se haga algo esta semana , no me importa si los candidatos tienen alguna experiencia con la tecnología para la que los estoy contratando. Si ya tengo un experto interno, me importa aún menos. En dos meses, un buen desarrollador sin experiencia en una plataforma superará al desarrollador promedio con diez años de experiencia. El buen desarrollador leerá un puñado de libros en el primer mes que el desarrollador promedio nunca pensó en mirar. El buen desarrollador buscará en la biblioteca estándar y luego en Internet para funciones comunes, mientras que el desarrollador promedio está ocupado reimplementando el formato de fecha. El buen desarrollador producirá un código DRY comprensible, mientras que el desarrollador promedio corta y pega todo el día.

Ciertamente, si puedo contratar a un gran desarrollador que conozca la plataforma por dentro y por fuera, lo haré, pero la habilidad general supera la experiencia muy rápidamente.

    
respondido por el kevin cline 21.02.2012 - 05:50
10

Si aplica una regla a ciegas, pasará por alto a los candidatos que debería contratar, y tal vez incluso contrate a alguien que no sea del todo adecuado, porque aunque tienen la experiencia relevante que está buscando, hay otros problemas.

Recuerde, la familiaridad con el marco específico no es el mejor predictor de éxito en el trabajo real. Los mejores candidatos serán personas inteligentes que hagan las cosas de manera efectiva y que puedan aplicar las habilidades que ya tienen de nuevas formas a los problemas que aún no se han resuelto.

Trate de no excluir a las personas por completo en la etapa de publicidad. En su lugar, encuentre formas eficientes de filtrar el flujo de solicitantes a un nivel en el que sea posible realizar entrevistas telefónicas breves.

    
respondido por el James Youngman 21.02.2012 - 00:55
3

Idealmente, nunca pondría un requisito específico en la experiencia en un marco o biblioteca en particular. Un buen desarrollador debería poder recoger cualquier nuevo marco o biblioteca con bastante rapidez, por lo que mi sugerencia general siempre es tratar de reclutar al mejor desarrollador en general y no prestar demasiada atención a las casillas de verificación específicas.

Por ejemplo, digamos que encontró un desarrollador Java absolutamente excelente que había estado escribiendo aplicaciones GUI durante 6 años que se conectaba a varios servlets de back-end que ella también escribió. Está motivada, con muchas ganas de aprender, puede codificar claramente casi cualquier cosa en el núcleo de Java, así como también arquitecturar sistemas complejos cliente / servidor. ¿La rechazaría solo porque no tiene Spring en su CV? En mi opinión, tendría mucho más sentido contratarla y dejarla recoger Spring en el camino. Ella puede aprender Spring de otros colegas y les enseña a los demás algo sobre el desarrollo de GUI ...

Además, los buenos desarrolladores son curiosos en mi experiencia y por lo general apreciarán la oportunidad que les brindas para aprender algo nuevo. Es deprimente ser contratado para hacer lo mismo una y otra vez.

Por supuesto, hay algunas situaciones en las que la experiencia específica en una biblioteca o marco puede considerarse muy importante:

  • En una emergencia : si está reclutando para resolver un problema urgente con una fecha límite ajustada, entonces no tiene tiempo para hacer que alguien suba la curva de aprendizaje. Necesitas a alguien que pueda comenzar a hacer ejercicios sólidos de inmediato. Es evidente que desea que alguien con experiencia sólida en la biblioteca o el marco específico, quizás 6 meses + experiencia reciente .
  • Para un rol de liderazgo / tutoría : si está contratando a alguien para que dirija, enseñe o sirva de mentor, entonces es mejor que sepan lo que hacen o no serán respetados y fallarán gravemente. Tal vez sea necesario tener más de 2 años de experiencia directa en el área que desea que enseñen, además de la experiencia general, el talento y la antigüedad.
  • Si la tecnología es fundamental para un campo , por ejemplo, si alguien afirmara ser un "Desarrollador Java Empresarial" con "Experiencia SQL Extensiva", entonces esperaría que supieran algo sobre JDBC. Si no lo hicieran, sospecharía de todo su CV ... ¿realmente hicieron un trabajo significativo en este campo? Tenga en cuenta que solo puede verificar esto en la entrevista , ya que las personas a menudo dejan las tecnologías básicas fuera de su CV debido a que se supone que están ahí.
respondido por el mikera 21.02.2012 - 02:11
1

A veces, un proxy útil para la competencia en un marco específico se "envía un producto con él". Sin embargo, enviar un producto con marcos "similares" puede ser igual de bueno. También considere cómo probaron su código en ese marco.

Algunos marcos son más complicados que otros y requieren una experiencia más profunda para desarrollarse. jQuery para un desarrollador de JavaScript con experiencia que domina Dojo o ExtJS, no hay problema. jQuery para un programador de C sin JavaScript: más riesgoso, ya que aún no han aprendido a "pensar" como un desarrollador de JavaScript. Aprender todo Spring para un desarrollador que no sea de Java, también riesgoso, las herramientas son diferentes, los conceptos, la terminología e incluso el código abierto pueden ser nuevos.

No no creo que solo deberías contratar desarrolladores que ya estén al día en la tecnología X, pero a veces la curva de aprendizaje es demasiado grande como para absorberla en este momento ... y tu pregunta ya hizo una pregunta específica ser competente

    
respondido por el codingoutloud 21.02.2012 - 04:59
1

10,000 horas parece ser el número mágico para dominar cualquier cosa. Aquellos que llegan a este punto generalmente pasan al menos 10 años en llegar allí, aunque en la programación, esos 10 años no se suelen gastar en un trabajo remunerado; muchos programadores comienzan su 'carrera' a una edad temprana (entre los 12 y los 16 años parece es bastante común), por lo que es posible encontrar un candidato de 25 años de edad que ya sea un maestro en su campo particular, a pesar de tener "solo" quizás seis años de experiencia en el trabajo.

Dicho esto, mucho depende de cuánto conocimiento se requiere exactamente en qué área.

Conocer un marco particular no es necesariamente necesario para un rol de desarrollador senior: las tecnologías van y vienen, y un buen programador puede captar cualquier marco medio decente en cuestión de semanas (incluso días, si el marco lo permite). sentido y está bien documentado). Las habilidades que son mucho más importantes suelen incluir comunicación, escribir código limpio y robusto, habilidades analíticas, establecer prioridades, etc.

Por supuesto, si el rol particular es el de un 'gurú', entonces el conocimiento en profundidad de esa tecnología particular es el requisito principal, pero la mayoría de las veces, no necesitas gurus; De hecho, pueden ser un riesgo. Si su especialidad pasa de moda o se suspende, solo puede esperar que hayan adquirido un nivel similar de experiencia en una tecnología de reemplazo cuando comience la transición.

    
respondido por el tdammers 21.02.2012 - 07:44
1

Si está preguntando sobre competencia , diría que solo un par de meses de esfuerzo dedicado. dominio , como muchos señalan, generalmente se acepta que toma 10,000 horas para lograrlo.

Las veces que tuve que aprender nuevas tecnologías, desde lenguajes completos como groovy o python, o frameworks como rieles, o herramientas de GUI como tk y wxPython, usualmente me llevan unas semanas para ser competente. Eso significa que soy capaz de hacer mi trabajo, pero que todavía tengo que buscar las cosas. Significa que si mi jefe dice "¿puedes hacer el producto x usando framework y en el idioma z? Puedo decir con confianza" sí ".

Para mí, esa es la diferencia entre senior y junior: los desarrolladores senior pueden recoger nuevos kits de herramientas, marcos e idiomas completos con bastante rapidez.

    
respondido por el Bryan Oakley 21.02.2012 - 13:13
1

Depende de demasiados factores para que la pregunta sea relevante, ya que algunos recién graduados universitarios podrían ser competentes en un marco o biblioteca dado solo en función del lugar al que asistieron a la escuela y Cómo se estructuró el programa. Del mismo modo, una vez que comienza a trabajar en la industria, tiende a darse cuenta de que existe un grado de especialización y las empresas se encuentran en varias etapas con respecto a la vanguardia actual (es decir, aún están trabajando con Visual Basic 6).

Si está buscando a alguien para que haga algo en el corto plazo donde el conocimiento es un elemento obligatorio, entonces es mejor que contrate a un contratista para que haga el trabajo. Si busca a alguien a largo plazo, es mejor que busque a alguien sobre la base de lo que hace que sea un buen desarrollador y con suficiente experiencia y competencia en la industria para justificar su pago como desarrollador senior.

    
respondido por el rjzii 21.02.2012 - 13:31

Lea otras preguntas en las etiquetas