Estoy buscando algunos pequeños proyectos de programación que puedo dar a los empleados potenciales para evaluar sus habilidades de programación. Estos serán programadores directamente de la universidad. Estoy buscando proyectos que le tomarían a alguien un par de horas y le enviarían sus respuestas por correo electrónico después de la entrevista.
Un ejemplo sería tomar este párrafo de texto y devolver una lista de palabras únicas alfabetizadas. Después de cada palabra dígame cuántas veces apareció la palabra y en qué instancia (s) apareció la palabra.
¿Alguien tiene una buena sugerencia?
Respuestas:
Hace tiempo que llegué a la conclusión de que nada que alguien pueda hacer en poco tiempo puede decirme algo útil sobre esa persona. Pero todo buen candidato tiene proyectos personales ya escritos que pueden decirle mucho. Así que he reemplazado desafíos específicos con "dame un código del que estés orgulloso y feliz de estampar tu nombre".
Su elección de proyecto le dice más que cualquier tarea de una hora. Y luego puedes pasar una hora discutiéndolo para aprender aún más.
fuente
Me canso tanto de esta mierda de juego mental. He estado en lugares que me pidieron muestras de código, las separé y luego me pidieron que explicara el código de ejemplo de sus sistemas que parecía escrito por niños de 2 años descifrados. Me han pedido que implemente algoritmos de tipo oscuro, servicios de red, guis, estructuras de datos (siempre un árbol o una lista vinculada). Todos los sabores de preguntas molestas y molestas sobre lo que el entrevistador piense es la parte más importante de la programación.
Al final todo es bastante inútil. La mejor manera de evaluar a un empleado es contratarlo por 30 días y ver qué tan bien hace el trabajo. Pase todo el tiempo que quiera desarrollar pruebas, y no le dirá nada sobre cómo alguien trabaja día a día.
fuente
Permitir que alguien haga un proyecto práctico en su propio tiempo no significa necesariamente que sean ellos quienes lo hagan.
Todos llegan temprano para una entrevista (bueno, al menos deberían). Tenemos una hoja "mientras espera" para que trabajen hasta que estemos listos para verlos. Tiene ocho (8) preguntas que evalúan el conocimiento de los solicitantes en el idioma que usamos principalmente.
No estamos buscando las respuestas para que todo sea correcto, ya que cualquiera puede acertar con una computadora frente a ellos. Estamos buscando procesos, incluso intentan la pregunta, ¿cómo llegan a sus respuestas?
Cuando entramos en la entrevista, la revisamos con ellos y respondemos cualquier pregunta que puedan tener, lo que también puede llevarlos a obtener la respuesta correcta. También nos permite preguntar cómo obtuvieron las respuestas que obtuvieron.
Esto, combinado con el trabajo anterior, encontramos, son las mejores formas de filtrar candidatos.
ACTUALIZACIÓN 2016/06/15
Hemos cambiado significativamente nuestro proceso en la forma de contratar desarrolladores.
Fase 1: una entrevista telefónica de 15 minutos donde hacemos 7 preguntas. Los primeros 2 son "¿Qué es lo más divertido en lo que has trabajado?" (no tiene que estar relacionado con la programación) y "¿Qué codificas para divertirte en tu tiempo libre?".
Fase 2: un mini proyecto que completan en su propio tiempo. Luego compartimos la pantalla con ellos y nos muestran lo que han construido. Durante el uso compartido de la pantalla, también hacemos que hagan dos cambios en su proyecto y luego los vemos trabajar en él y hacerlo funcionar.
Fase 3: Entrevista en persona.
Este proceso nos permite determinar la cultura de forma inmediata (fase 1). Si pueden hacer el trabajo y realmente caminar su charla (fase 2). Finalmente, asegúrese de que sus valores estén en línea con lo que estamos buscando (fase 3).
fuente
Es posible que desee ver el fantástico Cyber-Dojo de Jon Jagger .
Es un ambiente integrado basado en la web diseñado para hacer la práctica deliberada de Test Driven Development y aprender sobre la dinámica del equipo. Tiene muchas tareas de programación pequeñas (kata) y admite una variedad de lenguajes, desde Python y Ruby hasta Java y C ++.
A diferencia de los IDE diseñados para la productividad, no hay finalización de código, resaltado de sintaxis o refactorización automática, por lo que puede ver lo que su entrevistado puede hacer sin estos.
Lo mejor es que, después de hacer un kata, puedes volver y mirar la progresión roja / verde (o tal vez no si no hacen TDD * 8 ') de cada kata. Cada compilación / prueba confirma los cambios en un repositorio git junto con los resultados de la prueba.
Creo que usar esto para las pruebas de codificación de entrevistas podría informarle mucho sobre no solo la capacidad de los candidatos para resolver un problema, sino también su enfoque para la resolución de problemas y el proceso que utilizan cuando no están limitados por factores externos, solo seleccione un kata apropiado para el tiempo que desea que el candidato pase en él.
Si desea su propio servidor CyberDojo, todo el proyecto se puede encontrar en github e incluso hay una máquina virtual de dispositivo Linux llave en mano vinculada desde allí, lo que significa que suponiendo que ya tenga instalado el reproductor VMware o VirtualBox , puede estar funcionando dentro de ¡A pocos minutos de descargar el dispositivo!
fuente
Solo me entrevisté con una vez la compañía que ha hecho esto. Le dieron una hoja de preguntas de 6 o 7 problemas. Las instrucciones fueron hacer un método para resolver cada problema.
Una parte de la tarea era darse cuenta de que podía reutilizar el código. Los problemas podrían usar código de otras soluciones. Tampoco fue secuencial. Por ejemplo, la pregunta 3 podría escribirse utilizando el método utilizado para la pregunta 5.
Sugeriría probar algo así.
¿En cuanto a las preguntas? Algunas de las preguntas iniciales en el sitio del Proyecto Euler son buenas.
También puedes probar un juego simple si quieres ver cómo pueden armar un proyecto.
O, si no quieres pensar en algo, pídeles que te envíen un código de un proyecto final.
fuente
Para pedirle a la gente que complete un proyecto, debe tener un conjunto específico de habilidades que desee evaluar en mente y diseñar el proyecto para evaluar esas habilidades.
¿Qué buscas con esta pregunta? ¿De cuántas maneras hay para resolverlo y qué le dice cada enfoque sobre la persona que escribió la respuesta? ¿Las habilidades demostradas por una respuesta efectiva a esta pregunta son las mismas habilidades que son más importantes para su negocio?
No quiero las respuestas a estas preguntas; Solo quiero que haya pensado en las respuestas antes de someter a un grupo de candidatos a su proceso. Si sabes qué habilidades estás buscando, crear una pregunta para buscar esas habilidades no es difícil. Si utiliza la pregunta de otra persona sin un conocimiento profundo de lo que fue diseñado para evaluar (en todo caso), en realidad solo se está engañando a sí mismo y está perdiendo el tiempo de todos.
fuente
¿En qué idioma escribirían esto? Si salen de una escuela que se centra principalmente en C, esto no sería tan rápido de escribir como uno que enseña Python / Perl / Ruby, etc ... O incluso Java o C #. Sin embargo, es una buena prueba.
Sugiero algunos más fáciles en realidad durante la entrevista. No hay preguntas capciosas. Estoy con TMN en este caso. Déles un par de funciones que realicen tareas básicas y pregunte qué hacen (leer el código de otras personas). Luego, deles un par de tareas básicas (<20 líneas) para escribir en el idioma que elijan. Eso debería ser suficiente para que un nivel de entrada sepa si puede codificar o no (en una posición de nivel de entrada). Eso junto con la entrevista y el GPA deberían darle una buena idea sobre lo que necesita saber.
fuente
Haga que implementen el Juego de la vida de Conway para cualquier idioma que esté viendo, utilizando los paradigmas de diseño de ese lenguaje.
Un juego de la vida de Java o C # Conway debe estar orientado a objetos, LISP o F # sería funcional, etc.
fuente