Necesito una forma de filtrar los currículums de personas que solo copian y pegan código y luego esperan que funcione, y lo comprueban si lo hace. Todo esto sucede sin tener una comprensión (o cuidado) para comprender el resto del código en el sistema.
Claro que sé que copiar y pegar código es parte del aprendizaje de un nuevo objeto, control, etc., pero ¿cómo se puede saber si eso representa el 70% (o más) de su carrera de desarrollo?
Me he encontrado con algunos muchachos de nivel superior, quizás cuyas habilidades están tan desactualizadas o irrelevantes para el proyecto, que todo lo que hacen es google, copiar y luego pegar un código sin pensar en la solución en su conjunto. Como resultado, tenemos una mismah de JSON, AJAX, callbacks, ASMX, WCF y postbacks en el mismo proyecto. Está claro que no hay coherencia o lógica detrás del uso de cada tecnología.
En el peor de los casos, este tipo de desarrollador crea problemas de seguridad y vectores para el ataque.
Pregunta
¿Cómo recomendaría que filtre a las personas que tienen un bajo nivel de programación? ¿Puedo hacerlo a nivel de currículum? Si no, ¿cómo hago esto durante la entrevista?
fuente
Respuestas:
No creo que las habilidades de tus desarrolladores sean el problema. Su problema radica en otra parte, tal vez un líder de equipo o arquitecto que no tiene la confianza en sí mismo para "alentar" mejores disciplinas de codificación, o un equipo de gestión que no comprende la importancia de administrar la deuda técnica y no da su desarrolladores el tiempo y los recursos para hacerlo. ¿Su empresa tiene revisiones de código?
El liderazgo puede ser el problema, no los desarrolladores de copiar y pegar.
fuente
Leadership may be the problem, not copy-paste developers.
Esa fue precisamente mi interpretación.La forma de eliminar a los programadores que no pueden programar es establecerles un ejercicio práctico de programación como parte de la fase de selección o de la entrevista. (Esto último probablemente sea mejor porque puedes controlar el medio ambiente para evitar trampas).
Pero no creo que eso realmente vaya a resolver su problema.
En mi opinión, el verdadero problema aquí es que su equipo no está haciendo suficiente revisión interna del código y no está desarrollando un "libro de jugadas" de soluciones preferidas a problemas conocidos. Esto es en parte un problema cultural, en parte un problema de comunicación y (probablemente) en parte un problema con los plazos del proyecto.
Otro problema es que el proyecto generalmente tiene una larga vida útil, y durante esa vida útil, aparecerán nuevas tecnologías / técnicas y es probable que las antiguas caigan en desgracia. Si desea evitar el uso de tecnologías / técnicas de "desayuno de perros", debe:
fuente
Contrata personas en libertad condicional de 3 meses. Despídalos si apestan.
Si no INSPECTA, no puede ESPERAR. Revisiones de códigos, herramientas de auditoría. Un servidor CI puede ejecutarlos automáticamente.
Haga preguntas reales en sus entrevistas, como en preguntas de código real.
Haga que escriban código en la pizarra.
Si usted es un gerente no técnico, no está calificado para juzgar esto.
Si no está calificado, obtenga un consultor profesional de renombre para que realice las pruebas. Pregúntele a su personal ya sus competidores comerciales si conocen a una persona productiva 100 veces mayor. Págales para hacer la entrevista.
Si desea administrar un hospital sin un jefe de cirugía, siga adelante.
fuente
He pasado los últimos años entrevistando a personas y descubriendo que el 90% de los candidatos simplemente no pueden programar. Mi técnica de entrevista para determinar la programación es darle al candidato un resumen demasiado simple y dejar que el candidato lo resuelva usando un marcador y una pizarra.
Los modos de falla incluyen:
idear un diseño y luego implementar algo diferente. Estos candidatos son rechazados porque son peligrosos en un equipo. No seguir las especificaciones, escribir errores, etc.
No poder inventar un diseño. Un sorprendente número de candidatos "experimentados" necesita una especificación para incluir el diseño de implementación.
sin conocer el lenguaje de programación, a pesar de la experiencia de reclamo de CV.
No hacer preguntas adicionales para extraer especificaciones más completas.
No poder explicar las decisiones de diseño. Este es importante. Si alguien no puede explicar por qué, cada vez lo hará de manera diferente y se perderá la coherencia.
El resultado final fue que pasé mucho tiempo entrevistando y no reclutando muy a menudo. sin embargo, el equipo de desarrollo fue muy bueno, y tuvo el respeto total de toda la compañía y lo entregó.
fuente
Sugeriría FizzBuzz que Jeff Atwood menciona en la publicación en http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html .
fuente
Hago tres preguntas de entrevista
He visto personas completar esto en 5 minutos y he visto a personas luchar durante 30 minutos antes de darse por vencidas.
fuente
java.util.LinkedList l = new java.util.LinkedList()
no importa nada, pero ciertamente usa las colecciones integradas.No puede hacer esto en el nivel de currículum, ya que esencialmente tienen tiempo infinito para escribir eso, pero puede hacerlo en una entrevista telefónica si hace algunas preguntas que requieren una visión técnica de lo que hacen. Esto te da la respuesta (buena o mala) y cuánto tiempo les llevó llegar allí.
Cuando estés en una entrevista, haz que escriban el código. Es la única manera de saber si pueden programar de verdad. Simplifique el problema, proporcióneles una computadora con conexión a Internet, y el IDE que usa instalado, permítales hacer cualquier pregunta (excepto gimme-hte-codez) y observe cómo funcionan.
EDITAR: Para el análisis post mortem, parece que PMD tiene un detector de copiar / pegar para encontrarlo: http://pmd.sourceforge.net/cpd.html
fuente
Sencillo
Editar:
Como makerofthings7 como se señaló, en términos prácticos se podría hacer una captura de video (captura de pantalla).
fuente
Si desea "eliminar" a los codificadores pobres, puede probar, por ejemplo, la Matriz de Competencias del Programador (útil, pero no se aplica a todas las áreas posibles, por supuesto, puede hacerla propia) o codility.com (las tareas son muy buenas y ahorra mucho tiempo).
En general, contratar buenos codificadores es difícil y a menudo requiere muchos años de práctica. Puede comenzar su propia base de datos de preguntas de la entrevista, no solo preguntando sobre cosas de codificación sino también con matemáticas, lógica, sin mencionar las preguntas de motivación.
fuente
Diría que el problema con sus candidatos no es que no puedan programar en absoluto, sino que no tienen la sensación de utilizar la herramienta adecuada para el trabajo. Mi sugerencia es una pregunta de ensayo en la que se les darían requisitos de alto nivel para un nuevo sistema y se les pedirá que proporcionen una arquitectura y justifiquen sus elecciones de componentes. Pero mantenga el FizzBuzz para los candidatos que no pueden codificar sin un navegador.
fuente