Los comentarios de nuestro cuestionario de C++ y por qué es importante

Los comentarios de nuestro cuestionario de C++ y por qué es importante

Anteriormente escribimos sobre nuestro cuestionario para desarrolladores de C++. Desde el lanzamiento del cuestionario, hemos recopilado cuidadosamente sus comentarios. Algunos de los comentarios estaban relacionados con los errores del cuestionario, que obviamente buscamos corregir.

Para aquellos que aún no saben de qué cuestionario estamos hablando, expliquemos brevemente. Hicimos una prueba para que pudieras desafiarte a ti mismo en la revisión de código. Para este cuestionario, hemos seleccionado errores detectados por nuestro analizador en proyectos de código abierto. Verá 10 fragmentos de código aleatorios, cada uno con un error. En 60 segundos, debe detectar el error y hacer clic en él.

Puede leer más sobre nuestro cuestionario en la nota, ¡o finalmente intentar detectar el error!

Pero volvamos al tema. Recibimos muchos comentarios de personas que respondieron nuestro cuestionario. Y algunas de las respuestas señalaron problemas con la mecánica del cuestionario. Nosotros, los defensores de la calidad del código, también nos esforzamos siempre por mejorar nuestros propios proyectos.

Es por eso que investigamos los comentarios en todos los lugares donde publicamos nuestro cuestionario. En las redes sociales, en Habr, en foros temáticos y sitios web. Como resultado, identificamos dos problemas que deben solucionarse. El primero recibió muchos comentarios:la gente se quejó de la forma en que se seleccionan los errores de código en el cuestionario y la forma en que las respuestas se toman como correctas/incorrectas. El segundo problema no fue tan común, ya que recibimos un solo comentario al respecto. E, irónicamente, hemos hecho posible este problema a sabiendas. Pero primero lo primero. Hablemos.

El primer número. ¿Cómo dar con la respuesta correcta?

Nuestro cuestionario originalmente permitía seleccionar múltiples elementos de código para una respuesta. En el fragmento de código a continuación, el error es clip->GetSequence.

Anteriormente, podía seleccionar tanto la respuesta correcta como (ya sea deliberada o accidentalmente) seleccionar los símbolos =o (), e incluso la línea completa también. Como resultado, podría encontrar un error real, pero una respuesta puede considerarse incorrecta debido a la selección de símbolos adicionales.

Ahora no puede seleccionar más de un elemento en el fragmento de código. Pero eso no hace que el elemento seleccionado sea el único correcto. Al mismo tiempo, una respuesta correcta a veces incluye varios elementos de código para seleccionar, por eso una respuesta sería correcta si selecciona cualquiera de ellos.

Puede ver fácilmente la diferencia en los videos adjuntos:

Antes

Después

Recientemente resumimos los resultados de nuestro cuestionario durante dos meses y le dijimos que el puntaje promedio de respuestas correctas entre casi 2,000 desarrolladores es 3.5 de 10. Pero no podemos negar que la forma en que se contaron los errores puede haber afectado los resultados finales. del cuestionario.

El segundo problema. Nuestro pequeño fallo

Siempre es vergonzoso admitir tus propios errores, pero tenemos que hacerlo. Volvamos al momento en que se creó el cuestionario. Al principio, el cuestionario contenía un error:tan pronto como aparecía la pregunta en la pantalla, recibía el mensaje "se acabó el tiempo". Esta fue la razón:

  • el temporizador se restableció a cero cuando la tarea se estaba cargando;
  • después de eso, el temporizador comenzó de 60 segundos a 0. Cada segundo se verificó el temporizador:si el temporizador ===0, entonces pusimos el mensaje "se acabó el tiempo", pero dado que el temporizador se reinició a cero al principio, la verificación nula se realizó de inmediato.

En otras palabras:

se abre la tarea -> el temporizador se restablece a cero -> se realiza la comprobación de ===0 y se emite el mensaje "se acabó el tiempo".

En cambio, se suponía que debía funcionar de esta manera:

la tarea se abre -> el temporizador se restablece a cero -> el temporizador se inicia -> después de 60 segundos, se verifica ===0 y se emite el mensaje "se acabó el tiempo".

Para no perder tiempo, decidimos configurar el temporizador de 60 a 1. Después de eso, el tiempo se restableció a cero y se emitió el mensaje "se acabó el tiempo" al verificar "si el temporizador ===1".

La solución no fue elegante, pero obviamente rápida. Y estábamos seguros de que probablemente nadie haría cosplay de los héroes de las películas de acción de los 90, presionando el botón "Responder" en el último segundo. Pero, si los desarrolladores creen que todo funcionaría exactamente como lo hicieron, seguramente habrá alguien que "tropecerá con una chapuza".

Durante 2 meses nos olvidamos de forma segura de este error. Hasta que vimos una captura de pantalla en uno de los comentarios:

Resultó que aunque les prometimos a los participantes del cuestionario 60 segundos por cada respuesta, en realidad les dimos solo 59 segundos. Bueno, nos declaramos culpables y corregimos el error. Entonces, ahora puede presionar con seguridad el botón "Responder" en el último segundo. Pero siempre es mejor no perder el tiempo, especialmente cuando ya has encontrado una respuesta.

Este caso ha demostrado el papel esencial de la retroalimentación en cualquier proyecto.

De hecho, cubrimos todos estos problemas con anticipación al hacer el cuestionario de C#. Ya puedes desafiarte a ti mismo en él. Pruébelo usted mismo, comparta el cuestionario con sus compañeros de equipo de C# y, por supuesto, ¡comparta sus propios resultados con nosotros! Y si de repente notas un error, no dudes en escribirnos, lo arreglaremos.

Además, no olvide que aquellos que aprobaron el cuestionario obtendrán un código de promoción para una licencia de PVS-Studio de 30 días.