Joel Spolsky: Cómo hacer preguntas correctas a programadores más experimentados

Las reglas de Usenet Faddish y Brainwashing, Burning Man y Stack Overflow


imagen


Joel Spolsky, abril de 2018

Hay una bicicleta popular entre los desarrolladores que si su código no funciona, entonces debe tomar un patito de goma y decirle, sí, pato, cómo debería funcionar este código: explique cada línea qué debería suceder, lo que salió al final, etc. Los desarrolladores, que han probado este truco de la vida en sí mismos, argumentan que en el proceso de discusión detallada del problema, el objeto inanimado a menudo logra encontrar su solución.

Este es uno de los trucos que pueden ayudar a resolver el problema por su cuenta durante el proceso de programación. Otra forma es aprender a depurar un programa (depuración) sobre la base de "divide y vencerás".. No es posible romper mil líneas de código por un solo error. Pero puede dividir el código en dos partes y ver qué sucede en la primera mitad y qué sucede en la segunda. Hazlo de cinco a seis veces y llegarás a la línea con el error.

Con base en lo anterior, es interesante leer la lista de verificación de John Skeet para escribir la pregunta perfecta . John pregunta: "¿Has leído cuidadosamente la pregunta para apreciar su inteligibilidad y comprensión para una persona que no ha visto la información que tienes en tus ojos?" En general, esta es una prueba con un pato de goma. Otra opción: "Si el código está incluido en la pregunta, ¿lo ha ingresado en un programa completo pero breve?" El énfasis en el programa corto es, de hecho, una prueba de si trató de "dividir y conquistar" o no.

Hablando en términos generales, la lista de verificación de John sugiere que las personas primero intenten hacer lo que los programadores experimentados ya han intentado, y luego pidan ayuda a otros.

Desafortunadamente, no todos han oído hablar de esta lista de verificación. O tal vez lo escuchó, pero decidió ignorarlo. La persona tiene un problema con el código, sabe que hay un sistema de preguntas y respuestas de Stack Overflow que puede ayudarlo, y no tiene tiempo para leer el protocolo de un nerd sobre cómo hacer preguntas.

A menudo hay discusiones sobre si Stack Overflow debería permitir preguntas de los recién llegados a la programación.

Cuando Jeff y yo discutimos el diseño inicial del sistema, le conté sobre un grupo sobre el lenguaje de programación C, popular en los años 80 en la red Usenet. Se llamaba comp.lang.c .

C es un lenguaje de programación simple y limitado. Puede encontrar el compilador de C solo 100Kb , por lo que, como puede suponer, si crea una discusión exclusivamente para C, los temas para la conversación terminan muy rápidamente.

Y una cosa más. En los años 90, C era un lenguaje para estudiantes que recién comenzaban a involucrarse en la programación. Y estos mismos estudiantes con mayor frecuencia tuvieron los problemas más primitivos con C.. E inmediatamente corrieron con preguntas en comp.lang.c.

Y los viejos estaban aburridos allí. Muy aburrido. Están cansados ​​de las náuseas de los estudiantes que ingresan al grupo cada septiembre y preguntan por qué no pueden devolver una serie de caracteres de una función, etc. Cada. Septiembre.

Estos veteranos también inventaron el concepto de Preguntas frecuentes (Preguntas frecuentes). Por lo tanto, parecían decir "por el amor de Dios, deja de preguntar qué Usenet ya ha sido respondido cientos de veces", es decir, la gente de la vieja escuela quería responder solo a las preguntas más maravillosas y esotéricas que el 99% de los programadores comunes de C en general No fueron necesarios. El grupo de noticias se estaba desvaneciendo porque, de hecho, solo servía a un pequeño grupo de personas que habían estado dando vueltas durante aproximadamente una década.

De eso hablamos Jeff y yo. ¿Qué debemos hacer con las preguntas de los principiantes?
Al final, se decidió que los recién llegados deberían estarlo. Stack Overflow no tiene el concepto de preguntas "demasiado simples" ... Pero aún así, es mejor encontrar primero la respuesta usted mismo antes de pedir ayuda a otros.

Entendemos que algunos programadores más "avanzados" pueden encontrar aburrido leer las mismas preguntas simples y ya no nos contactarán. Está bien: Stack Overflow no obliga a nadie a sentarse allí de por vida. Cansado de leer preguntas para novatos sobre el hecho de que no devuelven conjuntos locales de personajes ("¡funciona para mí!"), ¿Y preferirías pasar el resto de tu vida clasificando álbumes de música? Como quieras, tienes razón.

El hecho de que se esté uniendo a la programación no significa que su pregunta no tenga lugar en Stack Overflow. Incluso hice específicamente la pregunta "¿Pero cómo mover la tortuga en LOGO ? ”Para mostrar que los diseñadores de sitios web están felices de ver a los principiantes absolutos en casa.

Pero, como siempre, de acuerdo con la ley de consecuencias no intencionadas, esta pregunta casi causó un escándalo, y en absoluto debido a su simplicidad. El problema es que abordé este asunto de mala fe. Jeff Atwood dijo bien a este respecto : “Una pregunta simple no está mal. Es malo cuando no hay esfuerzo para encontrar una respuesta ". ( Ah, bueno, eso ).

Para los principiantes, la cantidad de puntos que deben llenarse antes de hacer una pregunta parece innecesaria y, a veces, simplemente extraña. Es como un festival de Burning Man. ¿Crees que irás a una fiesta incendiaria en algún lugar del desierto, y al llegar te gritan en la cara unos 10 principios?, "Autoexpresión radical" y en la misma línea, por lo tanto, después de lavar los platos, debe recoger cada gota de agua de un lago seco y llevarla a casa, para entregarla si es necesario. Cada comunidad tiene sus propias reglas, y al principio pueden parecer extrañas y divertidas, o, si solo está tratando de hacer que un código funcione, extraño y abstruso.

Muchas de las reglas de Burning Man que hacen que el festival sea tan exitoso parecen muy abstractas, pero tienen sentido. La Oficina de Administración de Tierras de EE. UU., Que permite un festival del desierto, exige que no se vierta agua contaminada en el suelo porque el suelo arcilloso no se absorbe bien, lo que puede conducir al crecimiento microbiano y a la enfermedad, pero ¿por qué explicarlo todo si puede simplemente decir que si los visitantes no quitan el agua, entonces el festival ya no tendrá lugar?

Lo mismo con Stack Overflow. No permitimos que se publiquen preguntas demasiado abstractas (“¿Cómo componer un programa?”). Nuestra regla general es: si la respuesta a su pregunta es del tamaño de un libro completo, entonces quiere demasiado. Es como si escribieras "Parece que me duele el riñón. ¿Cómo cortarlo? Tal pregunta suena inadecuada e incluso ofensiva para los cirujanos que han estado aprendiendo cómo hacer esto durante diez años.

Lo que me molesta es que al tratar de educar a una nueva generación de desarrolladores, confiando en la diversidad e inclusión, también estamos construyendo barreras para aquellos que desean aprender a programar. De hecho, en muchos sentidos, las reglas específicas de Stack Overflow son solo un obstáculo. Pero aún peor es el abandono y la grosería de los recién llegados a los foros.

Estoy muy preocupado por esto. Como desarrollador, tiene una oportunidad sin precedentes para crear escenarios futuros . Y las limitaciones que presenta Stack Overflow frente a los programadores jóvenes no solo les perjudican a ellos, sino también al sistema Stack Overflow, asustando a los miembros potenciales de la comunidad. La programación no está exenta de problemas; Nuestro objetivo es hacerlo más fácil.

El año que viene planeamos trabajar duro en esta área. No podemos cambiar a otras personas, hacer que sean más amables. Pero creo que podemos mejorar algunos aspectos de la interfaz de usuario de Stack Overflow que motivarán a las personas a ser más cultos; por ejemplo, podemos ajustar las indicaciones en la página "Hacer una pregunta" o trabajar en la moderación reactiva para que los miembros de la comunidad puedan marcar y quejarse de comentarios groseros, lo que no está sucediendo en este momento.

También estamos trabajando en una nueva característica, gracias a la cual puede enviar su pregunta a un pequeño grupo de personas de su propio equipo, lo que puede ayudar a crear una cierta atmósfera amigable en una gran metrópolis, que es Stack Overflow.

A pesar de que nos esforzamos por hacer que Stack Overflow sea más cómodo, nuestro objetivo principal siempre ha sido crear el mejor recurso del mundo para los desarrolladores de programas.

El programador estático promedio nos llama 340 veces. Esa es nuestra fuerza. Existen otras fuentes de información sobre la redacción de programas, pero solo hay un sitio en el que los desarrolladores confían tanto y que deben cuidar: es como la Biblioteca del Congreso para programadores.



imagen
Aprenda los detalles de cómo obtener una profesión solicitada desde cero o subir de nivel en habilidades y salario tomando los cursos en línea de SkillFactory:



Lee mas



All Articles