¿Es inapropiada la "codificación de pizarra blanca" durante las entrevistas? [cerrado]

30

Esta es una pregunta un tanto subjetiva, pero me encantaría escuchar comentarios / opiniones de los entrevistadores / entrevistados sobre el tema.

Dividimos nuestra entrevista técnica en 4 partes. Escriba el código, lea y analice el código, diseñe la sesión y el código en la pizarra.

En la última parte, lo que les pedimos a los entrevistados que hagan es escribir un pequeño fragmento de código (4-5 líneas) en la pizarra y explicar a medida que avanzan. Permítanme aclarar que el propósito no es atrapar a la gente. No estamos buscando una sintaxis perfecta. Demonios, incluso puede ser un pseudocódigo. pero el punto es darles un problema muy simple y ver si su cerebro puede comunicarnos la solución. Por problemas simples me refiero a "Invertir una cadena", "FizzBuzz", etc.

Tenga en cuenta que siempre pedimos primero un lenguaje explícito. Somos una casa .NET C #. solo hemos dicho "pseudocódigo" en el que alguien ha estado en blanco / realmente luchando con el código.

Mi pregunta es "¿Es inapropiado / irrazonable esperar que un programador escriba un fragmento de código en una pizarra durante una entrevista?"

Eoin Campbell
fuente
13
En mi humilde opinión bastante razonable (y habría evitado algunas contrataciones bastante malas en mi antiguo empleador, si solo se implementara).
Piskvor
3
Es algo realmente deprimente desde la perspectiva del entrevistador. ¿Cómo pueden las personas que reclaman 5 años de experiencia en programación no tener estas habilidades básicas? y el 90% no. (eso es 90% después de eliminar el 70% de los CV inmediatamente, y una tasa de fracaso del 70% en la entrevista telefónica)
Michael Shaw
18
We're not looking for perfect syntax.lo hace razonable, de hecho yo diría que recomendado! No es razonable criticar los errores de sintaxis en la codificación de pizarra.
Qwerky
16
Tampoco esperes una escritura perfecta. La escritura en pizarra es una habilidad que la mayoría de la gente no tiene, y la mayoría de los programadores en mi experiencia tienen una escritura atroz para decirlo suavemente, escribir verticalmente solo lo empeora.
Jwenting
3
Apropiado, sí. Efectivo, no. El desarrollador débil que he contratado personalmente lo hizo brillantemente en una pizarra.
pdr

Respuestas:

47

En mi opinión, es muy apropiado. Si desea un trabajo para realizar una habilidad en particular, entonces es completamente apropiado esperar que demuestre esa habilidad en la entrevista.

El efecto de esta técnica en el proceso de reclutamiento es muy notable. El 90% de los candidatos no cumplen esta tarea. pero los desarrolladores reclutados son buenos, y los desarrolladores serán respetados dentro de la empresa.

Si como candidato enfrenta esta técnica, en primer lugar relájese. Se trata de evaluarlo como programador y sus procesos de pensamiento. No se trata de su sintaxis perfecta. Si comete un error de sintaxis, entonces podría desempeñar el papel de un compilador y decirle que el código no se compila en una línea determinada, y darle un mensaje de error, y ver cómo responde. Del mismo modo si agrega un; en un bucle o una declaración if que se compilaría, jugaría al depurador y lo guiaría a través de un solo paso a través del código. Nuevamente, no se trata del error, se trata de cómo lidiarías con el error y si tus procesos de pensamiento son buenos.

Michael Shaw
fuente
1
Gracias por los comentarios de Tolomeo. muy apreciado. su respuesta describe exactamente lo que estoy buscando y cómo abordaría ayudar al candidato a superar los problemas. Pero como también señaló, estoy asombrado por la cantidad de personas que solicitan roles de más de 5 años que no pueden hacer esto.
Eoin Campbell
1
El mayor peligro en esto, es que se produce la frustración, y usted ofrece un trabajo a alguien que ha fallado en la tarea de programación pero le fue bien en los otros aspectos de la entrevista como una prueba técnica. La realidad es que estos candidatos han leído un libro y tienen buena memoria. ¿Estás recuperando gente para leer libros? o para escribir programas?
Michael Shaw
@EoinCampbell, si las habilidades de comunicación son importantes para usted, entonces esto es completamente apropiado.
1
entonces, como candidato, comete un error, luego un poco más tarde (no de inmediato) le traigo ese error. Te sentirás bajo presión en ese punto. Esta es una parte clave de la entrevista para ver cómo responde. ¿Se puede hacer frente a la presión de un error tipográfico en una entrevista? Si se derrite bajo esa presión, ¿qué va a hacer cuando nosotros como equipo estamos bajo presión para entregar el software a una fecha límite?
Michael Shaw
1
He usado la codificación de pizarra, la parte positiva es que encuentra muy buenos programadores junior. Lo negativo de la codificación de pizarra es la alta tasa de fallas, pero esas personas no son muy buenas para empezar. Le pedí a la gente que escribiera tan solo una línea de código en la pizarra y todavía tenía tasas de falla muy altas. Por otro lado, me han hecho preguntas de pizarra como entrevistado y siempre he encontrado las preguntas razonables. Prefiero la codificación de pizarra a enumerar los algoritmos favoritos de las personas para problemas específicos.
Michael Shopsin
15

Mi pregunta es "¿Es inapropiado / irrazonable esperar que un programador escriba un fragmento de código en una pizarra durante una entrevista?"

Es muy razonable. Una alternativa a una pizarra podría ser una computadora portátil y un proyector, ya que los programadores están más acostumbrados a escribir código en un teclado que en una pizarra. Solo asegúrese de que un entorno de desarrollo como Eclipse o VS o Idle ya se esté ejecutando con un proyecto en blanco cuando se inicie el candidato, para que no tenga que perder el tiempo buscando entre las aplicaciones instaladas.

nikie
fuente
Deliberadamente, no uso una computadora en las entrevistas debido al efecto inteligente. Un candidato sin experiencia programa presionando el botón. y seleccionando algo de la lista. Una pizarra hace que esto sea muy obvio ...
Michael Shaw
55
@Ptolomeo: ¿Realmente lo creo? Para un ejercicio típico de pizarra como "programar una búsqueda en profundidad a través de un árbol", ¿de qué serviría Intellisense?
nikie
2
Las pizarras / papeles no se bloquean, y todos saben cómo escribir en ellos. Si me das IDLE para resolver un problema, asumiré que eres un idiota, y si me das Eclipse, pasaré la mitad de mi tiempo luchando contra las combinaciones de teclas predeterminadas.
66
Intellisense (y otras funciones de autocompletar de IDE, también, estoy seguro) se puede desactivar. O puede darles el Bloc de notas (o una alternativa más agradable como Notepad ++ que resalta la sintaxis pero no tiene autocompletado o similar). Claro, puede bloquearse, pero de manera realista: ¿cuántos errores de showtopper has encontrado en el Bloc de notas?
un CVn
3
Incluso si es solo notepad.exe, es mucho más fácil trabajar con él que con papel o una pizarra. Puede insertar o eliminar líneas, lo cual es un gran dolor en los medios físicos.
CodesInChaos
10

No es inapropiado, pero sepa que NO siempre puede revelar las verdaderas ideas sobre la programación o las habilidades de resolución de problemas de la persona que está entrevistando. Y supongo que eso es exactamente lo que buscas.

En segundo lugar, tenga en cuenta que siempre existe el miedo al fracaso, que constantemente irrita el cerebro de la persona. "¿Qué pasa si me equivoco?", "¿Qué pasa si me equivoco? La mayor parte del cerebro de la persona está ocupada constantemente inspeccionando cómo está saliendo; solo unos pocos pueden contener los nervios.

Entonces, en este tipo de situación, incluso los mejores podrían terminar vacilando.

Para la última parte, les pedimos a los entrevistados que escriban un pequeño fragmento de código (4-5 líneas) en la pizarra y expliquen a medida que avanzan.

Está bien. Pero nuevamente, el hecho de que alguien no pueda explicar algo correctamente no significa que no lo sepan bien. (La explicación es un arte del habla).

Si fuera tú, lo haría en la última parte ...

Contratarlos para un proyecto muy pequeño (pero realista). Vea cómo codifican, toman decisiones, asimilan las condiciones de trabajo y los miembros del equipo, etc., y luego, basándose en eso, toman la decisión final.

codificador de árboles
fuente
66
Si parte de su proceso de reclutamiento es ofrecer un contrato a plazo fijo estándar por 3 meses, ¿cuántas personas realmente renunciarían a un puesto permanente para aceptar su oferta?
Michael Shaw
1
Me refería al último en el sentido de que era el último elemento de mi lista. Mezclo el orden de las cosas en la entrevista dependiendo de cómo ha progresado la parte de la conversación y dónde creo que están sus fortalezas y debilidades. En cuanto a ofrecerles un contrato a corto plazo ... eso no es realista en una pequeña empresa del mundo real. No tengo el tiempo / los recursos para tomar riesgos de despeje de 3 meses en personas que podrían no hacer ejercicio y, como señaló Ptolomeo, dudo que los candidatos estén demasiado interesados.
Eoin Campbell
"La mayor parte del cerebro de la persona está ocupada constantemente inspeccionando cómo está saliendo; solo unos pocos pueden contener los nervios". Siempre sentí que es importante tener en cuenta esto, especialmente con algunas personas nuevas que entran o salen de la universidad. Sé que fui un desastre en mis primeras entrevistas, preocupándome por eso hasta el punto de que confundí algunas de las preguntas más fáciles porque estaba tan nervioso. De acuerdo, no hay mucho que puedas hacer. Todo lo que pude hacer fue pasar a la siguiente entrevista y, finalmente, sentirme cómodo con el proceso.
The Jug
1
@TheJug está completamente de acuerdo y seremos mucho más gentiles con Juniors & Grads para asegurarnos de que no estén abrumados por el proceso, pero hemos tenido desarrolladores senior (7-8 años de experiencia) que luchan con esto.
Eoin Campbell
1
"Contratarlos para un proyecto muy pequeño (pero realista) ...". ¿Sugiere que debe "contratar", por ejemplo, tres de los candidatos que solicitaron un puesto, incluso si solo planea mantener uno? ¡Esto me parece muy injusto! Probablemente tampoco mejoraría el espíritu de equipo.
nikie
8

No es inapropiado, pero recuerda que algunas personas (y tal vez una mayor parte de la multitud de programadores) pueden estar muy estresadas en una entrevista. Creo que la mayoría de nosotros conocemos al tipo de la oficina que es un codificador brillante y una persona muy confiable, pero se derrumbaría en tal situación. Su rendimiento no se pudo medir en una prueba de este tipo, así que no haga de esta una prueba de ir / no ir.

Tamás Szelei
fuente
77
No conozco a ese tipo, porque no fue contratado.
Kevin Cline
44
@kevincline en detrimento de la compañía, a menos que ganes dinero haciendo que la gente se ponga nerviosa.
JayPea
1
@ JayPea: ¿cómo sé que una persona es un codificador brillante si no puedo parecerles código? La única alternativa sería una recomendación de alguien que ya está en el personal. A todos les encanta contratar recomendaciones confiables, pero ese es un grupo bastante pequeño.
Kevin Cline
1
@kevincline Lea mi respuesta, no estoy diciendo que no deba codificar la pizarra en la entrevista con el desarrollador.
Tamás Szelei
@ JayPea Estoy bastante seguro de que tener empleados que no se pongan nerviosos en situaciones de alto estrés es un factor importante en el éxito financiero de muchas empresas.
Kyle Strand
4

Personalmente, creo que esta es una de las mejores cosas que puedes hacer. Como dijiste que no buscas la sintaxis correcta o algo similar, la parte más importante aquí es ver si alguien puede comunicarse ... He visto tantos buenos desarrolladores que solo pueden trabajar solos dentro de su propio espacio ... Desafortunadamente esto no es posible en una gran cantidad de casos, por lo que tener un tipo hábil que también sea capaz de decir lo que piensa de una manera clara y concisa es un miembro más valioso del equipo que alguien que piensa: "No lo entenderán de todos modos, lo haré yo mismo y lo demostraré más tarde ".

Comunicación, comunicación, comunicación, que es la base de cada proyecto de tamaño mediano a grande (incluso más pequeño una vez que lo necesita)

Ivan Crojach Karačić
fuente
bueno, es más que comunicación. necesitan poder comunicarse, claro, pero también deben poder decirme su solución al simple problema.
Eoin Campbell
4

Creo que no es una cosa razonable. Tratamos de encontrar candidatos, que son buenos en la tarea que queremos que hagan. Escribir código en una pizarra no es uno de ellos y no creo que sea un filtro válido para encontrar buenos candidatos.

  • El buen código no se escribe, se reescribe. Una pizarra blanca es prácticamente inmutable, ya que es difícil cambiarla una vez que la escribió. Debería ser lo más fácil posible cambiar de opinión en cuanto comprenda mejor el problema.
  • Estar en una entrevista es una situación estresante, ya que no hay necesidad de ejercer presión adicional sobre el candidato. Muchas personas informáticas no tienen una buena letra. Los IDE modernos proporcionan muchas herramientas a las que estás acostumbrado. Y poder buscar en Google algo en el momento que lo necesites también es parte del estilo de trabajo de la mayoría de los programadores. ¿Por qué quitar todas estas cosas y crear un entorno artificial, en el que nunca tendrán que trabajar si les haces una oferta?
  • También estamos muy interesados ​​en la capacidad de escribir buenas pruebas, tal vez incluso hacer TDD. Esto no es posible verlo durante la codificación de la pizarra.

La mayoría de las pistas que podría obtener de una sesión de codificación de pizarra también podrían obtenerse de una sesión de emparejamiento. Y creo que el emparejamiento es una herramienta mucho mejor para tener una idea, cómo un candidato resuelve un problema y cómo trabaja. Puede traer su propia computadora y trabajar en un entorno con el que se sienta cómodo. Y es mucho más fácil aplicar a la tarea que desea que hagan una vez que se unan. Por ejemplo, tenemos una gran base de código heredado, por lo que les pedimos que refactoricen algún código extraído para el proyecto real. Y en realidad nos emparejamos tanto como sea posible en nuestro trabajo diario, por lo que es adecuado.

Si bien una sesión de pizarra probablemente ayuda a filtrar a los malos candidatos, probablemente también filtra a muchos buenos programadores.

iGEL
fuente
1
¿Las pizarras son inmutables? Simplemente borras algo y lo reescribes por capricho, eso es lo que los hace útiles, especialmente la enseñanza. Debes vivir en un universo alternativo.
whatsisname
Tal vez inmutable es la palabra incorrecta (lo tomé de medium.com/dima-korolev/… , quién piensa que es una ventaja). Aún así, en comparación con un editor, es difícil agregar algo para lo que no haya dejado espacio.
iGEL
3

Personalmente, dejaría a cualquier entrevistador que me pidiera que hiciera FizzBuzz. No sé cuándo se convirtió en el nuevo estándar de la industria, pero es realmente una pérdida de tiempo. FizzBuzz es un filtro que se puede usar antes de una entrevista, aunque personalmente creo que si tuviera que elegir entre N candidatos que tengan suficiente código abierto o un blog que pueda ver, definitivamente preferiría eso como filtro .

En pocas palabras, creo que en una entrevista para un puesto de programación (excepto tal vez para juniors o pasantías), ya debería haberse establecido / determinado que el entrevistado puede programar.

Pero sí, la pizarra es perfecta, aunque creo que debería tomar un conjunto diferente de problemas. Tíreles un problema del mundo real y pídales que dibujen un montón de garabatos UML-ish para explicar su estrategia general para resolver ese problema. Dales una computadora con internet, para que puedan buscar bibliotecas de terceros que puedan usar como recuadros negros en su paisaje de squibbles.
Dentro de unos minutos, realmente verá cómo abordan los problemas. En realidad, puede hacer que esto sea algo muy interesante, eligiendo problemas para los que no necesariamente tiene una solución en mente e intentando "resolverlos" juntos, para ver qué tan bien se comunican y qué tan bien pueden incorporar aportes (sin embargo, no no los presiones demasiado, algunas personas podrían congelarse si lo haces). Y luego agregue algunos requisitos sobre la marcha. Esto es algo así como el desarrollo de software sin implementación y, lo más importante, sin depuración, por lo que 15 minutos es mucho tiempo.

back2dos
fuente
"ya debería haberse establecido / determinado que el entrevistado puede programar" - ¿cómo? O tiene una entrevista previa, en cuyo caso la pregunta del OP se convierte en si la codificación de pizarra es apropiada en una entrevista previa, o si efectivamente toma la palabra del candidato, lo que es un desastre. Los reclutadores y los CV pueden mentir (y lo hacen), los blogs y los repositorios de Github pueden ser plagiados.
Julia Hayward
@JuliaHayward: Establecer las habilidades básicas de codificación de un candidato en una entrevista previa es algo diferente. En realidad, no tiene que invitar a alguien en el sitio para que haga eso. Puede enviarles un pequeño problema que pueden resolver. Posiblemente discuta esa solución (o código github) en persona. Lo más importante: es muy poco probable que encuentre un candidato capaz de dominar con gracia el tipo de problema que sugiero, sin poder resolver problemas de tipo fizzbuzz. La entrevista debe usarse para determinar qué tan capaz es el candidato para lidiar con la complejidad típica de los problemas del mundo real.
back2dos
Es posible que no tenga que tener a alguien en el sitio, pero al menos debe hablar por teléfono con el candidato para hablar sobre su ejercicio de codificación, sea lo que sea que use. Simplemente entregar una pregunta y esperar a que se envíe un archivo zip todavía tiene todos los riesgos de suplantación; Como ejemplo extremo, hice la prueba de FooCorp una vez, luego busqué por Google "Prueba de codificación de FooCorp" y descubrí que alguien había publicado una solución bastante buena.
Julia Hayward
@JuliaHayward: Si le das a cada solicitante el mismo problema, entonces, por supuesto, la respuesta se vuelve compatible con Google. No es sorprendente, ¿verdad? Pero, una vez más, mi respuesta sigue siendo: no haga codificación de pizarra en el nivel de fizzbuzz en una entrevista. Simplemente muestra que no te molestaste en preparar un problema bueno e interesante. Como usted mismo ha dicho, hay formas de establecer habilidades básicas de programación mucho antes de invitar a los candidatos a su pizarra.
back2dos
3

Déjame responder con otra pregunta:

¿Escribir código en una pizarra blanca ofrece alguna ventaja real para evaluar la capacidad de programación, en comparación con escribir y ejecutar el código en una computadora?

Creo que es absolutamente apropiado pedirle a un candidato que escriba el código en una entrevista. Sin embargo, para mí, poder ejecutar el código es una parte crítica del ciclo de retroalimentación que constituye la programación. En una pizarra blanca, estás atando una mano detrás de mi espalda, y no estás entendiendo cómo trabajo con un problema.

Kevin C.
fuente
¿Es esta solo tu opinión o puedes respaldarla de alguna manera?
mosquito
2
@gnat Solo estoy haciendo una pregunta. La segunda mitad de la respuesta es mi opinión, sí, pero eso debería quedar bastante claro por el lenguaje utilizado. Además, la pregunta en sí misma comienza reconociendo que es subjetiva y específicamente solicita opiniones sobre el asunto. No creo que el voto negativo esté justificado.
Kevin C.
@ Kevin C. Creo que, independientemente de su redacción, está haciendo un muy buen comentario aquí. La codificación de la pizarra es diferente de la codificación por computadora. ¿Es esta una opinión? Ciertamente no, siempre que las pizarras no puedan ejecutar el código.
Leandro Caniglia
2

No, pero en mi opinión, un mejor enfoque sería usar la pizarra para su propósito previsto y usar UML / bocetos / notas para algún proyecto ficticio, en lugar del viejo "escríbame una consulta sql para obtener todos los registros" o "escriba un método que invierte una cadena ".

Una de las mejores entrevistas que tuve fue pasar como 20 minutos discutiendo con el desarrollador principal la arquitectura (sin software) para la mansión de un científico loco (completa con escondite secreto, rayo de la muerte y perrera). Llegó a ver mi enfoque para resolver problemas, y el problema era algo divertido, no una típica rutina de programación 101 cosas que los lenguajes modernos han resuelto mil veces. Por cierto, también hice un código como este antes, pero me sentí mucho más "bajo presión" que con la parte de arquitectura.

Wayne Molina
fuente
2

En estos días, mucha programación se realiza en equipos. Para que los equipos funcionen, las personas deben poder comunicarse. Una gran parte de esto es poder comunicarse frente a una pizarra (lluvia de ideas, tutoría, revisiones de código, soluciones propuestas, etc.)

Me gustaría saber si el candidato explicó cómo solucionar el problema de programación utilizando el código de la pizarra para ayudar. Si la explicación es lo suficientemente buena, los otros buenos programadores en la sala corregirán mentalmente cualquier error tipográfico / error en la pizarra.

Para la mayoría de los tipos de puestos de equipo, no sería razonable NO esperar que un candidato pueda explicar y garabatear su intento de solución.

hotpaw2
fuente
0

No, es bueno codificar para una entrevista, pero debe permitir el código en cualquier idioma razonable, ya que generalmente es más fácil capacitar a un codificador competente en otro idioma que obtener un codificador más o menos en el idioma que desee, arriba a un nivel competente.

Paddy3118
fuente
0

Diría que es apropiado, pero en la mayoría de los casos no es una forma eficiente de averiguar quién es bueno en programación y quién no. Si desea realizar un trabajo (= contratar a alguien que sea capaz), la entrevista debe centrarse en medir las habilidades de la vida real. Hasta ahora, la mejor entrevista que había trabajado así:

  • Saludos, bienvenidos por RRHH.
  • Pocas palabras sobre mí, sobre la compañía, etc. ... y ella explicó el resto de la entrevista.
  • Ella me dio una computadora portátil con un programa que faltó algunas partes, había fallado las pruebas unitarias por eso. Las partes faltantes se comentaron allí como textos, se trataba de implementar una tarea básica, como crear una conexión entre pocas clases e introducir una lógica de negocios simple.
  • Si todo salió bien, las pruebas unitarias se volvieron verdes.
  • Decir adiós y aceptar volver en unos días.
  • Ese día, el líder se reunió conmigo y me preguntó sobre el programa terminado, qué hice y por qué.
  • También este líder me preguntó sobre mis experiencias pasadas y algunas otras preguntas.

Para resumir: si está buscando mano de obra en un código de producción, pruebe sus habilidades en un entorno real. Si tiene curiosidad sobre sus conocimientos teóricos, es mejor preguntarles sobre estas cosas. Si está despojado de IDE, o está nervioso porque tiene que programar en la pizarra frente a alguien, puedo entender, especialmente en TI, las personas a veces son introvertidas y muchos de nosotros no podemos manejar bien estas situaciones, así que en blanco abordar nuestra eficiencia se verá peor de lo que realmente es.

CsBalazsHungary
fuente
-1

No lo considero irrazonable a menos que el entrevistado tenga una mala letra mala (o debería decir escritura) :-). Además, la única diferencia en su enfoque es el uso de un tablero y un marcador. En algunos casos, los entrevistadores hacen esto, pero en su lugar dan un papel y un bolígrafo. En caso de que haya 3-4 personas realizando la entrevista, diría que su enfoque será mucho mejor y más adecuado.

Pankaj Upadhyay
fuente
1
"La mayoría o todos los entrevistadores hacen esto" es bastante raro en mi opinión.
Kirk Broadhurst
Supongo que todos hacen eso. Es raro que se presenten con una PC o una computadora portátil solo para verificar si resuelve un problema de codificación en particular. Pero tal vez, las cosas son diferentes en su lugar. Si quieres puedo editar esto en la respuesta?
Pankaj Upadhyay
Mira, estoy de acuerdo en que es bastante raro ... He tenido 4 trabajos en los últimos 9 años y nunca me han pedido que escriba código en papel / wb. Cualquier codificación ha estado en un IDE. Por eso me pregunto si es inapropiado. Esperaría que un desarrollador pueda descifrar el código "Invertir una cadena" en un par de minutos como máximo sin la ayuda de IDE / Intellisense.
Eoin Campbell
He realizado la edición en función de su experiencia. En dos entrevistas que también tuve, me dieron un bolígrafo y papel para escribir cómo imprimir una serie de Fibonacci y un algoritmo para mergeshort. Entonces, pensé que la mayoría de las cosas iban de esta manera :-)
Pankaj Upadhyay
Debería señalar que nunca tuve que escribir código en una computadora; Tuve que escribir el código en papel dos veces (tanto cuando era un joven) y tuve que dibujar un diagrama de arquitectura en una pizarra blanca una vez . Eso es alrededor de 20 entrevistas ...
Kirk Broadhurst