¿Por qué no enseñan la prueba de fizzbuzz en ciencias de la computación de pregrado?

Enseñar fizzbuzz pierde el punto completo, ¡como en realidad usarlo en una entrevista!

El “meme fizzbuzz” apareció en una publicación de blog sobre cuántos de los solicitantes a un puesto de programación no podían programar en absoluto . Fizzbuzz fue solo una tarea que el autor eligió que es tan simple que cualquier programador debería poder implementarla solo desde una descripción. No hay “truco” a menos que consideres que la aritmética modular es un truco¹, es solo un bucle sencillo. A menos que todo lo que haya hecho en los últimos años sea puramente teórico², debería poder programar fizzbuzz sin saberlo con anticipación.

Dado que muchas personas no podían manejar eso, la conclusión fue que las personas se postulan para puestos de programación sin preparación y que debería hacerse una prueba de programación ligera para eliminarlos antes de llegar a las entrevistas técnicas que llevan mucho tiempo.

Si aprendió sobre fizzbuzz con anticipación y lo regurgitó en una entrevista de programación, no necesariamente sabe cómo programar. Eres un falso positivo en la prueba.

Pruebas como esta son como contraseñas: si todos hablan de una contraseña específica, no debes usarla. XKCD, por ejemplo, aboga por frases de contraseña como ‘la grapa correcta de la batería del caballo’. Usar una frase de contraseña es una gran idea; El uso literal de la “grapa correcta de la batería del caballo” es una idea terrible porque todo el mundo habla de ello. Si les estamos enseñando a las personas a estar seguras, debemos enseñarles a crear frases de contraseña buenas y memorables. No deberíamos enseñarles a usar la “grapa de batería de caballo correcta”.

Lo mismo ocurre con fizzbuzz. Deberíamos enseñar a las personas a programar , no cómo resolver pruebas de programación triviales específicas. Del mismo modo, si desea excluir a las personas que no saben programar, presente alguna otra tarea simple: ¡no use fizzbuzz!

La caricatura de XKCD sobre frases de contraseña. XKCD es de Randall Munroe y los cómics se publican bajo una licencia CC BY-NC que puede o no ser kosher en Quora. No sé porque no comercial es un requisito mucho más complicado de lo que parece; Recomiendo usar “compartir igual” (CC-BY-SA) en lugar de “no comercial” por este motivo (entre otros).

notas al pie
¹ Supongo que no todos saben qué es la aritmética modular o cómo usarla en su lenguaje de programación (a menudo un operador % ). ¿Pero eso probablemente no sea demasiado esperar de alguien que solicita un puesto de programación?

² No quiere decir que los estudiantes teóricos de CS no puedan programar, simplemente no tienen que hacerlo. Todos los que conozco no tendrían problemas con fizzbuzz. ¡Los productivos probablemente incluso puedan hacerlo en TeX!

Dan Zhang tiene razón, si uno entiende los conceptos básicos de estructuras condicionales y bucles, es fácil implementar FizzBuzz. Además, las pruebas de FizzBuzz son una medida muy básica de preparación, no es el objetivo final. Si uno incorporara FizzBuzz en la enseñanza, el valor de la prueba se perdería de todos modos.

Sin embargo, he visto preguntas de examen similares a FizzBuzz en las clases de programación introductoria.

No es necesario que las escuelas enseñen FizzBuzz explícitamente. Si comprende la programación y las estructuras básicas, como los bucles y las declaraciones condicionales, debería poder implementar FizzBuzz sin ningún problema.

Cuando estaba terminando mis estudios de secundaria en Rusia a principios de la década de 2000, comenzaron a introducir una variedad de SAT llamada USE. Fue interesante ver cómo las escuelas respondían a esta idea. Las mejores escuelas estaban bien con eso: el nivel de enseñanza que normalmente daban estas escuelas era suficiente para aprobar los exámenes, por lo que no tenían que preocuparse.

Pero para las escuelas de mierda fue una abominación. Se quejaron todo el tiempo de que ahora no pueden hacer una enseñanza integral adecuada (porque su enseñanza general es una mierda y no garantiza pasar las pruebas) y tuvieron que concentrarse en solo perforar para los exámenes.

Es lo mismo con fizzbuzz en el currículum de CS. Si es necesario pasar tiempo preparando a los estudiantes para preguntas tontas de entrevistas, es una señal bastante fuerte de que los cursos generales de codificación y algoritmos en este programa de CS son una mierda, y todo el programa es esencialmente inútil.

FizzBuzz no es informática como tal, es una prueba simple dada en entrevistas.

Si los entrevistadores descubrieran que a los estudiantes de pregrado se les estaba enseñando FizzBuzz, simplemente usarían otra prueba simple en su lugar.

Ser enseñado FizzBuzz se trata de aprender a pasar entrevistas, no de aprender CS o incluso programar.

More Interesting

¿Cuáles son los campos de investigación en informática que no requieren habilidades en codificación / programación?

¿Qué tan factible es hacer una investigación remota en ciencias de la computación de la mejor universidad y en qué año del programa puede hacerlo?

¿Dónde puedo encontrar documentos seminales sobre GPGPU?

Informática teórica: ¿Cuál es la diferencia entre un algoritmo de aproximación y un heurístico?

¿Cuáles son las áreas de investigación en informática?

¿La fotogrametría hará que la escultura digital sea obsoleta?

¿Cuáles son las ideas que puedo investigar?

¿Cuáles son algunas buenas implementaciones de MapReduce para gráficos, lo que significa un marco de gráficos de código abierto altamente distribuido y de uso general, y qué tan bien funcionaron para usted en la práctica?

¿Cuál es la intuición detrás de la computación de modelado?

¿Qué podría ser el trabajo de investigación sobre autómatas (TOC)?

El aprendizaje profundo es muy importante en la visión por computadora. ¿Hay algún otro tema de investigación que valga la pena estudiar en visión artificial? ¿Qué son?

¿Cuáles son algunos de los buenos proyectos de investigación en informática de la escuela secundaria que puedo hacer?

¿Cómo puede un estudiante de doctorado en un programa de aprendizaje automático no superior (con la mayoría de los estudiantes y profesores haciendo investigación aplicada) intentar entrar en una carrera de investigación teórica?

¿Cuáles son los mejores recursos para aprender visión por computadora para alguien con experiencia en álgebra lineal y de probabilidad (y un poco en aprendizaje automático)? El libro "Visión por computadora: algoritmos y aplicaciones" no es muy amigable para principiantes.

¿Debo informarle a mi jefe si planeo solicitar un doctorado?