Lo que aprendí en 10 años en Stack Overflow

Lo que aprendí en 10 años en Stack Overflow
Me acerco a mi décimo aniversario en Stack Overflow. Mi forma de usar y percibir el sitio ha cambiado drásticamente con los años, y quiero compartir mis experiencias con ustedes. Escribo esto desde la perspectiva de un usuario promedio que no está muy involucrado en la comunidad ni en la cultura del sitio. Últimamente, solo he estado respondiendo preguntas relacionadas con VS Code, el producto en el que trabajo. Sin embargo, solía participar activamente en debates sobre una amplia gama de temas. En los últimos 10 años, he... Hizo alrededor de 50 preguntas y dio 575 respuestas, revisó innumerables comentarios de otras personas.

Jon Skeet describió la cultura de Stack Overflow Mucho mejor y con más autoridad de la que yo jamás podría. Su publicación influyó en algunas secciones de este artículo, aunque en general estas son mis reflexiones sinceras sobre mi experiencia en Stack Overflow, lo bueno y lo malo del sitio y cómo se puede usar hoy en día. Esta discusión será bastante superficial, sin profundizar en el funcionamiento del sitio ni en su historia.

Esto es lo que he aprendido en 10 años de uso de Stack Overflow.

Necesitas saber cómo hacer preguntas

A primera vista, no podría ser más sencillo: introduce unas palabras en un campo de texto, haz clic en "Enviar" y, como por arte de magia, ¡internet resolverá todos tus problemas! Pero me llevó casi 10 años descubrir qué palabras introducir en ese maldito campo para obtener resultados. De hecho, sigo aprendiendo a diario.

Hacer buenas preguntas es una habilidad muy subestimada (al igual que escribir un buen informe de problemas, por cierto). En primer lugar, ¿cómo determinamos qué es una "buena" pregunta? Stack Overflow sugiere... insinuar, que enumera las siguientes cualidades de una buena pregunta:

  • ¿Se corresponde con la temática del sitio web?
  • Implica una respuesta objetiva.
  • Aún no se ha preguntado.
  • Fue investigado.
  • Describe claramente el problema, generalmente con un ejemplo mínimo y fácilmente reproducible.

Bien, pero ¿cómo se ve en la práctica un planteamiento claro del problema? ¿Qué información es relevante y cuál no? A veces parece que para hacer una buena pregunta es necesario saber primero la respuesta.

Lamentablemente, el pequeño campo de texto no ayuda. ¿Es de extrañar entonces que tantos usuarios publiquen preguntas de baja calidad? A veces, la única respuesta que reciben es un enlace a documentación confusa. Y tienen suerte. Muchas preguntas de baja calidad simplemente reciben votos negativos sin hacer mucho ruido y desaparecen en el interminable feed de preguntas.

Hacer buenas preguntas es una habilidad. Por suerte, se puede desarrollar. Aprendí principalmente leyendo muchísimas preguntas y respuestas, anotando qué funciona y qué no. ¿Qué información es útil y qué dificulta el proceso? Aunque aún te sentirás intimidado al poner en práctica tus nuevos conocimientos y hacer preguntas. Simplemente inténtalo y aprende de los resultados. Debo admitir que me avergüenzan un poco algunas de mis primeras preguntas, aunque quizás eso demuestre que he mejorado mucho mi capacidad para formular preguntas desde que encontré este sitio.

Las preguntas malas y las preguntas no tan buenas no son lo mismo

No voy a edulcorarlo: algunas preguntas son simplemente malas.

Una pregunta que consiste en una captura de pantalla y la frase "¡¿POR QUÉ NO FUNCIONA ESTO?!" es mala. ¿Por qué? Claramente, el autor no se esforzó casi nada. Más que una pregunta, es una exigencia: "¡Hazme esto!". ¿Por qué haría eso? Mi tiempo es demasiado valioso como para desperdiciarlo ayudando a alguien que no está dispuesto a aprender desde el principio y no apreciará mi ayuda. Descubre qué es Stack Overflow.

Ahora consideremos una pregunta titulada "¿Cómo elimino los bordes azules de mi página?". Consiste en varios párrafos que mencionan la propiedad CSS outline sin mencionar explícitamente las palabras "CSS" o "outline". Si bien esta pregunta puede contradecir muchas directrices de Stack Overflow, no estoy de acuerdo; no es una mala pregunta. Al menos el autor intentó proporcionar información, incluso sin saber qué proporcionar. El esfuerzo cuenta, al igual que la disposición a aprender.

Sin embargo, muchos usuarios de Stack Overflow probablemente tratarán ambas preguntas de la misma manera: votando negativamente y cerrando. Esto es frustrante y desanima a muchos usuarios inexpertos antes de que aprendan a formular mejores preguntas e incluso a comprender el funcionamiento del sitio.

No vale la pena perder el tiempo con preguntas realmente malas. Pero recuerda que quienes hacen preguntas mediocres no lo hacen con intención. Quieren hacer buenas preguntas, pero no saben cómo. Si castigas ciega e inexplicablemente a los novatos, ¿cómo aprenderán?

Una buena pregunta no garantiza una respuesta.

Stack Overflow suele obtener respuestas más rápidas a preguntas sencillas que mucha gente puede responder. ¿Tienes alguna pregunta sobre la búsqueda binaria en JavaScript o HTML? ¡Genial! Obtén cinco respuestas en menos de una hora. Pero cuanto más compleja o específica sea tu pregunta, menos probable será que obtengas una respuesta, por muy bien formulada que estés.

La probabilidad de obtener una respuesta también disminuye rápidamente con el tiempo. Una vez que una pregunta ocupa varias páginas en el feed, se pierde. Una semana después, te quedas rezando para que alguien con los conocimientos adecuados encuentre tu pregunta (o haga clic generosamente en ella).

Puede que no te gusten las respuestas correctas.

Cada mes, recibo algunos votos negativos por las llamadas respuestas impopulares. Estas respuestas básicamente dicen: "Es porque está diseñado así", "Es imposible porque..." o "Es un error que hay que corregir primero". En todos estos casos, los autores no reciben una solución ni siquiera una alternativa. Y sospecho que cuando a la gente no le gusta lo que dice una respuesta, la votan negativamente. Entiendo su razonamiento, pero eso no significa que las respuestas sean incorrectas.

Por supuesto, lo contrario también es cierto: las buenas respuestas no necesariamente dicen lo que quieres oír. Algunas de las mejores respuestas primero responden a la pregunta original, pero luego describen otros enfoques para resolver el problema. A veces respondo la pregunta de un usuario y luego escribo un texto extenso explicando por qué no se recomienda ese enfoque.

Cuando las expresiones de opinión se simplifican a votos positivos y negativos o a un botón de "Me gusta", se pierden distinciones importantes. Este problema es común en línea. ¿Cuántas plataformas de redes sociales distinguen entre "Apoyo esto" y "Creo que está bien dicho, aunque no me guste o no esté de acuerdo"?

En general, a pesar de los votos negativos mensuales, creo que la comunidad de Stack Overflow vota con objetividad. Seguiremos haciéndolo.

Casi nunca hago preguntas en Stack Overflow.

Cuanto más tiempo llevo usando este sitio, menos preguntas hago. Esto se debe en parte a mi crecimiento profesional. Muchos de los problemas que encuentro en el trabajo son demasiado complejos para expresarlos con preguntas sencillas o demasiado específicos para que alguien pueda ayudarme. He llegado a comprender las limitaciones del sitio, así que evito hacer preguntas para las que probablemente no obtenga una buena respuesta.

Pero rara vez hacía preguntas aquí, ni siquiera cuando estaba aprendiendo un nuevo lenguaje o framework. No porque sea un genio, sino todo lo contrario. Es solo que, después de años en Stack Overflow, siempre que tengo una pregunta, he llegado a la profunda convicción de que probablemente no seré el primero en hacerla. Empiezo a buscar y casi siempre encuentro que alguien ya preguntó lo mismo hace un par de años.

Observar las preguntas de otras personas es una excelente manera de aprender cosas nuevas sobre su producto.

Estoy trabajando en ello ahora Código VSAsí que me he acostumbrado a revisar las preguntas etiquetadas con vscode. Es una excelente manera de aprender cómo se usa mi código en el mundo real. ¿Qué problemas experimentan los usuarios? ¿Cómo se puede mejorar la documentación o la API? ¿Por qué algo que creía perfectamente claro genera tantos malentendidos?

Las preguntas son una señal importante que muestra cómo se usa tu producto. Pero la clave no es simplemente responder y seguir adelante; se trata primero de intentar comprender por qué la persona hizo la pregunta. ¿Quizás haya un problema desconocido en el producto o hayas hecho suposiciones sin darte cuenta? Las preguntas también me han ayudado a descubrir numerosos errores y me han inspirado a seguir trabajando en ellos.

Si mantienes un producto para desarrolladores, no trates Stack Overflow como un vertedero (o, peor aún, como un cementerio de preguntas). Revisa regularmente si hay nuevas preguntas y respuestas. Esto no significa que tengas que responder todas las preguntas tú mismo, pero las señales de Stack Overflow son demasiado importantes como para ignorarlas.

Las líneas entre una pregunta, un informe de error y una solicitud de función están borrosas.

Muchas preguntas sobre VS Code en Stack Overflow eran, en realidad, informes de errores. Y muchas otras eran solicitudes de funciones.

Por ejemplo, una pregunta titulada "¿Por qué VS Code se bloquea cuando hago...?" es un informe de error. VS Code no debería bloquearse en una amplia variedad de situaciones. Responder preguntas que son informes de error es contraproducente, ya que los autores podrían conformarse con una solución alternativa y nunca presentar un informe de error real. En situaciones como estas, suelo pedir a los usuarios que publiquen un informe de error en Github.

En otros casos, las diferencias pueden ser menos obvias. Por ejemplo, la pregunta "¿Por qué no funciona JavaScript IntelliSense en VS Code?". Según el grado de inactividad de JavaScript IntelliSense, la pregunta puede clasificarse en tres categorías:

  • Si se trata de un problema de configuración del usuario, entonces es realmente una pregunta para Stack Overflow.
  • Si IntelliSense debería funcionar en el caso descrito, pero no lo hace, entonces este es un informe de error.
  • Si IntelliSense no funciona en el caso descrito, entonces se trata de una solicitud de función.

En última instancia, a la mayoría de los usuarios no les importan estos matices: solo quieren que JavaScript IntelliSense funcione.

Y aunque estas distinciones son importantes para mí como gerente de proyecto, tampoco deberían importarme. Porque las preguntas, los informes de errores y las solicitudes de funcionalidad son formas de expresar la misma idea: el usuario espera algo de mi código y no lo obtiene. Si el producto fuera perfecto, los usuarios nunca harían preguntas al respecto porque todo estaría claro para ellos y haría exactamente lo que quieren (o al menos les explicaría claramente por qué no puede).

Los desarrolladores también son personas

La gente es emocional. La gente es irracional. La gente es idiota. No siempre, claro, ¡pero a veces! Y, aunque no lo creas, los desarrolladores también son personas.

Hay un mito que a los desarrolladores nos gusta repetirnos: "Trabajamos con computadoras, así que debemos ser racionales. Entendemos símbolos arcanos, así que debemos ser inteligentes. El software se ha apoderado del mundo, ¡así que debemos ser geniales! ¡Geniales! ¡Adelante!"

Eso no es cierto. Y si lo fuera, que Dios nos ayude. Incluso en Stack Overflow, una herramienta para profesionales diseñada como una base de conocimiento objetiva, incluso en mi propio rincón, altamente especializado en Visual Studio Code, sigo encontrando todo tipo de ultrajes: falacias lógicas, insultos, mentalidad de rebaño, etc.

No te engañes: probablemente no seas tan perfecto como crees. Pero eso no significa que no debamos intentar superar nuestros defectos.

Amigo, yo soy el que creó esto.

Yo también soy humano, y de vez en cuando, hay cosas en Stack Overflow que me irritan. Por ejemplo, cuando un usuario escribe cosas sin sentido con total seguridad o simplemente da una respuesta incorrecta a una pregunta relacionada con VS Code, un producto que creé y conozco bien. Es extraño, pero parece que cuanto más incorrecta es la respuesta, más probable es que alguien la considere un hecho.

Cuando esto sucede, actúo como en la imagen y escribo la respuesta correcta.

Lo que aprendí en 10 años en Stack Overflow

Y varias veces esto dio lugar a largas discusiones: ¡Ay de mí por atreverme a cuestionar su conocimiento de lo que creé! ¡Dejen de intentar tener la razón siempre, malditos sabelotodos! ¡Porque yo tengo razón!

Es fácil volverse cínico ante esta desesperanza.

Ante un torrente interminable de preguntas mal redactadas, es fácil volverse cínico. ¿Nunca ha oído hablar de Google? ¿Acaso sabe construir oraciones coherentes? ¿Qué eres, un perro?

A veces reviso docenas de preguntas nuevas al día. Ver constantemente estas preguntas de baja calidad puede llevarme al desprecio o al cinismo. Este cinismo puede extenderse al sitio, como puede atestiguar cualquiera que se haya topado con un moderador demasiado entusiasta o haya pasado un par de horas investigando y escribiendo una pregunta, solo para recibir votos negativos y desaparecer en el olvido sin explicación.

Claro que hay usuarios que no se esfuerzan y publican malas preguntas. Pero creo que la gran mayoría de las preguntas de baja calidad provienen de personas bienintencionadas (aunque despistadas). Siempre intento recordar lo que se siente al ser novato. Cuando empiezas, no entiendes bien cómo funcionan las cosas. En algunos casos, ni siquiera sabes las palabras adecuadas para expresar tu problema. Créeme, es duro estar en esa situación. Y es frustrante que te critiquen solo por preguntar.

Si bien Stack Overflow ha hecho mucho para ayudar a los recién llegados, aún queda mucho por hacer. He intentado encontrar un equilibrio entre mantener los estándares del sitio y ser indulgente con los usuarios inexpertos. Esto podría implicar explicar por qué voté para cerrar una pregunta o publicar un comentario que anime al usuario a proporcionar más información. Aún tengo margen de mejora.

Por otro lado, no tengo reparos en votar negativamente a usuarios con 50.000 puntos de reputación que publican preguntas como "¿Cuál es el mejor diseño de VS Code para el desarrollo de JavaScript?" o que suben capturas de pantalla borrosas del código en lugar de texto.

A veces solo quiero agradecerte

Stack Overflow no tiene una cultura de gratitud muy arraigada. Recuerdo una época en la que el sitio eliminaba automáticamente las palabras "hola" y "gracias" de las preguntas. Quizás todavía lo hagan, no lo he comprobado.

Cualquiera que haya trabajado en atención al cliente hoy en día sabe que ser demasiado educado puede ser un estorbo e incluso parecer forzado. Pero a veces, alguien en este sitio hace algo muy importante por ti, y la única forma de agradecerle es darle un visto bueno. Es un fastidio.

La eficiencia no nos obliga a convertirnos en robots sin alma. Un canal lateral puede proporcionar una interacción humana más auténtica, si los usuarios así lo deciden.

A veces quiero saber qué pasó después de recibir la respuesta.

Stack Overflow funciona según un principio transaccional: algunos hacen preguntas, otros responden. Pero ¿qué pasa después de recibir la respuesta? ¿Quién sabe? A veces me pregunto: ¿Fue útil mi respuesta? ¿En qué proyecto pequeño contribuyó? ¿Qué aprendió quien preguntó?

Por supuesto, satisfacer esta curiosidad es imposible. Exigir a los usuarios que informen sobre cómo usarán la información que reciben sería muy problemático, incluso si fuera posible. Pero es interesante reflexionar sobre ello.

La gamificación es efectiva…

…al convertir los procesos en un juego.

Todavía me emociono un poco cuando veo un pequeño icono de +10 o +25 en la barra de estado. Quizás estos pequeños toques de gamificación sean la razón por la que he seguido visitando el sitio durante 10 años. Pero con el paso de los años, también me he preguntado qué clase de juego es Stack Overflow y qué significa ganarlo.

Estoy seguro de que el sistema se creó con las mejores intenciones: recompensar a las personas por sus preguntas y respuestas útiles. Pero en cuanto se añaden calificaciones altas, Ley de GoodhartY algunos usuarios empiezan a adaptar sus acciones no a lograr el máximo valor, sino a recibir las mejores calificaciones. Y esto es importante porque...

La reputación no significa lo que tú crees.

La reputación no es equivalente a la competencia técnica, las habilidades de comunicación o la comprensión de cómo funciona o debería funcionar Stack Overflow.

No digo que la reputación sea inútil. Simplemente no es lo que la administración de Stack Overflow pretende ni lo que debería significar la palabra "reputación". He llegado a comprender que la reputación es una medida de influencia. Consideren dos respuestas hipotéticas publicadas en el sitio:

  • Uno sobre una operación común de Git. Escribí una respuesta de tres líneas en dos minutos usando Google.
  • Otro trata sobre un problema complejo de teoría de grafos. Quizás solo cien personas en todo el mundo puedan resolverlo. Escribí algunos párrafos y un ejemplo de código que explica el problema y cómo resolverlo.

A lo largo de cinco años, la primera respuesta fue vista 5 millones de veces y recibió 2000 votos positivos. La segunda respuesta fue vista 300 veces y apenas recibió dos votos positivos.

En cierto modo, esto es muy injusto. ¿Por qué recompensar algo que estaba en el lugar correcto en el momento oportuno? (No todo depende de la suerte; comprender las reglas del juego también es fundamental). Por otro lado, la primera pregunta ha ayudado a mucha más gente que la segunda. Quizás deberíamos reconocer que, en cierto sentido, el reconocimiento conduce a la acumulación de «reputación».

Por eso considero la "reputación" en Stack Overflow como una especie de medida de influencia. La verdadera reputación no se mide con simples puntos; se construye dentro de la comunidad. ¿A quién le hago caso? ¿Quién ayuda a los demás? ¿En quién confío? Puede ser en diferentes personas, dependiendo de si programo en PHP o en iOS.

Teniendo en cuenta esto, no estoy seguro de qué debería hacer Stack Overflow al respecto. ¿Estarán los usuarios tan motivados si ganan "puntos ocultos" en lugar de "reputación"? ¿Se mantendrán tan comprometidos si no hay ningún sistema de puntos? Creo que es poco probable. Y el mito de que la "reputación" en Stack Overflow equivale a la reputación real beneficia no solo al sitio en sí, sino también a sus usuarios más activos. En serio, ¿a quién no le gusta mejorar su reputación?

No, como suele ocurrir en la vida, para comprender realmente qué sucede, es necesario analizar más que solo las cifras. Si una publicación obtiene 10 000 puntos en Stack Overflow, observa cómo se comunica esa persona, qué preguntas y respuestas publica. Y, salvo en casos excepcionales, ten en cuenta que las puntuaciones de Stack Overflow por sí solas rara vez revelan mucho sobre una persona, más allá de su capacidad para usar el sitio. Y, en mi experiencia, a menudo ni siquiera te lo dicen.

Mi trabajo no sería productivo sin Stack Overflow.

Cada vez que necesito hacer algo complicado en Git, recurro a Stack Overflow. Cada vez que necesito algo sencillo en Bash, recurro a Stack Overflow. Cada vez que me sale un error de compilación extraño, recurro a Stack Overflow.

No soy productivo sin IntelliSense, un motor de búsqueda, y Stack Overflow. A juzgar por algunos libros, esto me convierte en un pésimo programador. Probablemente fallaría muchos exámenes y no resolvería muchos problemas en la pizarra. Que así sea. En serio, cada vez que uso .sort en JavaScript, tengo que buscar información sobre cuándo obtendré -1, 0 o 1, y escribo en JS todos los días, desarrollando el editor más popular para el lenguaje.

No, Stack Overflow es una herramienta increíble. Solo un tonto no usaría todas las herramientas disponibles. Así que, ¿por qué no ser un tonto interior, como yo? Reserva tu capacidad mental para conocimientos importantes, como memorizar todas las tramas de Seinfeld o inventar juegos de palabras sofisticados (que faltan en este artículo, pero habrá muchos otros de naturaleza completamente diferente).

Stack Overflow es un milagro

Stack Overflow permite a cualquier persona, sin importar su experiencia o conocimientos, publicar preguntas relacionadas con la programación. Estas preguntas son respondidas por completos desconocidos, la mayoría de los cuales dedican su vida y carrera a ayudar a otros gratuitamente.

La mera existencia y el éxito de Stack Overflow son un milagro. Estoy seguro de que no todo es tan perfecto como sus creadores pretendían, pero lo intentan. A pesar de todas sus deficiencias, el sitio ha ayudado a innumerables personas durante años, incluyéndome a mí.

Stack Overflow no existirá para siempre. Algún día surgirá algo mejor. Ojalá aprenda de sus errores y aproveche sus mejores características. Hasta entonces, espero que no demos por sentado este sitio. Es a la vez un faro y una comunidad vibrante, en constante crecimiento con nuevas personas. Si te importa, recuerda que todo esto es frágil, e incluso pequeñas acciones, como ayudar a recién llegados bienintencionados pero aún desorientados, pueden tener un impacto positivo. Si critico este sitio, es solo porque me importa y sé cómo mejorarlo.

PS

Todavía estaba en la preparatoria cuando descubrí Stack Overflow. Apenas empezaba a escribir JavaScript (¡ES5!) en Eclipse, y parecía que el 90% de las preguntas empezaban con: "Uso jQuery, solo...". Aunque no sabía lo que hacía, desconocidos dedicaban su tiempo a ayudarme. No creo que lo apreciara del todo entonces, pero no lo he olvidado.

La gente siempre querrá que Stack Overflow sea muchas cosas: un sitio de preguntas y respuestas, una herramienta para hacer tareas y un referente para la programación. Pero para mí, el sitio, a pesar de su crecimiento y sus defectos, es en esencia una comunidad abierta donde personas desconocidas se ayudan mutuamente a aprender y mejorar. Y eso es maravilloso. Agradezco haber formado parte de Stack Overflow durante los últimos 10 años y espero que siga siéndolo. Quiero aprender tanto en la próxima década como en la anterior.

Fuente: habr.com