Saltar al contenido
preguntar.en · devschool

Preguntar en foros y escribir un issue en inglés

Lección 16 de 23 · 12 min de lectura · Actualizado el

En esta lección
  1. Por qué una buena pregunta importa
  2. El título
  3. Estructura del cuerpo
  4. El ejemplo mínimo reproducible
  5. Frases que usarás
  6. Tono: educado y directo
  7. Escribir un issue en GitHub
  8. Responder y dar seguimiento
  9. Un ejemplo completo
  10. Errores frecuentes
  11. Resumen

Tarde o temprano tendrás un problema que no puedes resolver solo ni encontrar en una búsqueda. Entonces toca preguntar: en Stack Overflow, en un foro, en un servidor de Discord o en el issue tracker de una librería de GitHub. Una pregunta bien escrita recibe respuesta en minutos; una mala se queda sin contestar o recibe un seco Please provide more details. En esta lección aprenderás a estructurarla en inglés, con plantillas y frases listas para usar.

Si aún no has buscado la respuesta, empieza por Buscar soluciones: preguntar es el último recurso, no el primero.

Por qué una buena pregunta importa

La gente que responde es voluntaria y tiene poco tiempo. Quiere entender tu problema en 30 segundos. Si tiene que adivinar, se va. Una buena pregunta:

CaracterísticaInglésPor qué
Título concretoclear titlepermite que otros la encuentren
Qué quieres conseguirgoalevita soluciones que no te sirven
Qué esperabasexpected behaviordefine lo correcto
Qué ocurreactual behaviordefine el fallo
Código mínimominimal reproducible examplepermite probarlo en un minuto
Lo que probastewhat I trieddemuestra esfuerzo y evita repetir
Versionesenvironmentmismo error con otra versión es otro error

El título

El título es lo primero que se lee. Debe describir el problema concreto, no el tema general.

MaloBueno
Help!!!fetch returns 404 only when the URL has a trailing slash
JavaScript doesn't workTypeError: Cannot read properties of undefined (reading 'map') in React component
Problem with my databaseUNIQUE constraint failed when inserting a user in SQLite
ErrorPython: ZeroDivisionError when calculating an average of an empty list

Fórmula útil: lenguaje o herramienta + mensaje de error o síntoma + cuándo ocurre.

[Python] ZeroDivisionError: division by zero when the list is empty

Consejo: si no puedes resumir el problema en una línea, quizá aún no lo entiendes bien. Reducir el problema ya te acerca a la solución.

Estructura del cuerpo

Divide el texto en bloques cortos, con títulos o negritas:

**What I want to do**
I'm building a to-do list in JavaScript. I want to remove a task
when the user clicks the delete button.

**What I expected**
The task disappears from the list.

**What happens**
Nothing happens, and the console shows:

    Uncaught ReferenceError: removeTask is not defined

**What I tried**
- Checked that the button has the class "delete".
- Moved the function above the event listener.

**Code**
(minimal example here)

**Environment**
Chrome 130, no framework, plain JavaScript.

Traducción de las cabeceras:

InglésEspañol
What I want to doQué quiero conseguir
What I expectedQué esperaba
What happens / What actually happensQué ocurre en realidad
What I triedQué he probado
Code / Minimal exampleCódigo / ejemplo mínimo
EnvironmentEntorno (versiones, sistema)

El ejemplo mínimo reproducible

Un minimal reproducible example (a veces MRE o MCVE) es el trozo más pequeño de código que muestra el problema y que otra persona puede copiar, pegar y ejecutar. Es la parte que más ayuda y que menos gente hace.

Cómo conseguirlo:

  1. Copia el código a un archivo nuevo.
  2. Borra todo lo que no hace falta para que falle: estilos, otras funciones, datos extra.
  3. Sustituye datos reales por datos inventados.
  4. Comprueba que sigue fallando.
  5. Pégalo en el cuerpo como bloque de código, no como imagen.

Ejemplo: tienes un programa de 300 líneas que falla al calcular la media. Tras reducirlo:

def average(numbers):
    return sum(numbers) / len(numbers)

print(average([]))
# ZeroDivisionError: division by zero

Cuatro líneas que cualquiera puede ejecutar. Con eso, quien lea ve de inmediato el problema: la lista vacía.

Cuidado: no pegues capturas de pantalla del código. No se pueden copiar ni buscar. Usa bloques de código de Markdown (tres comillas invertidas) y, para errores, pega el texto del terminal.

Frases que usarás

Para abrir

InglésTraducción
Hi everyone, / Hello,Hola a todos / Hola
I'm new to JavaScript and I'm trying to...Soy nuevo en JavaScript y estoy intentando…
I'm stuck on...Estoy atascado en…
I'm having a problem with...Tengo un problema con…
I'm trying to ... but ...Estoy intentando … pero …

Para describir

InglésTraducción
I expected X, but I got Y.Esperaba X, pero obtuve Y.
The page stays blank.La página se queda en blanco.
Nothing happens when I click.No pasa nada cuando hago clic.
It works locally but not in production.Funciona en local pero no en producción.
It only fails the first time.Solo falla la primera vez.
It worked yesterday.Ayer funcionaba.
I get the following error:Me sale el siguiente error:
The output is wrong.La salida es incorrecta.
I can reproduce it every time.Puedo reproducirlo siempre.
It happens randomly.Ocurre de forma aleatoria.

Para explicar lo que ya hiciste

InglésTraducción
I've already tried...Ya he probado…
I searched Google and Stack Overflow, but...Busqué en Google y Stack Overflow, pero…
I read the documentation, but I don't understand...Leí la documentación, pero no entiendo…
I followed this tutorial: <link>Seguí este tutorial:
I checked that...Comprobé que…
I'm not sure if this is the right approach.No estoy seguro de si este es el enfoque correcto.

Para cerrar con educación

InglésTraducción
Any help would be appreciated.Cualquier ayuda será bienvenida.
Thanks in advance!¡Gracias de antemano!
Any ideas?¿Alguna idea?
Could you point me in the right direction?¿Puedes orientarme?
Let me know if you need more information.Dime si necesitas más información.
Thanks for your time.Gracias por tu tiempo.

Tono: educado y directo

El inglés técnico es directo, pero no seco. Algunas pautas:

  • Usa “Please” y “Thanks”, pero sin exagerar. No hace falta escribir “Dear Sir or Madam”.
  • No exijas: Fix this now suena mal. Mejor Could you help me understand why...?.
  • No culpes: Your library is broken es mala idea. I think I found a bug. Could you confirm? es mejor.
  • Sé breve. Dos párrafos cortos son mejores que diez líneas de historia.
  • No pidas “el código completo”: pide pistas o explicaciones, así aprendes más.
  • Dale las gracias y, si lo resuelves tú, publica la solución. Ayudas al siguiente.
Seco o problemáticoMejor
It doesn't work. Fix it.I get an error when I run this. Could you help me?
Your docs are bad.I couldn't find how to configure X in the docs. Is there an example?
Why nobody answers?Any update on this? Thanks! (tras varios días)
URGENT!!!(no lo escribas: nadie lo prioriza por gritar)

Escribir un issue en GitHub

Un issue es una incidencia que abres en el repositorio de un proyecto para avisar de un fallo (bug report) o pedir una mejora (feature request). Antes de abrirlo: busca si ya existe (puede estar closed o open) y lee el archivo CONTRIBUTING.md o la plantilla si la hay.

Plantilla de bug report:

Title: Date picker shows the wrong month in Safari

Describe the bug
When I open the date picker in Safari 17, it shows the previous
month instead of the current one.

Steps to reproduce
1. Open the demo page in Safari.
2. Click the "Date" input.
3. Look at the month shown in the header.

Expected behavior
The current month (October) is displayed.

Actual behavior
September is displayed.

Environment
- Library version: 2.4.1
- Browser: Safari 17.1 on macOS 14
- Works correctly in Chrome and Firefox.

Additional context
Console shows no errors.
InglésSignificado
Describe the bugDescribe el fallo
Steps to reproducePasos para reproducirlo
Expected behaviorComportamiento esperado
Actual behaviorComportamiento real
EnvironmentEntorno
Additional contextContexto adicional
ScreenshotsCapturas (aquí sí son útiles)
LogsRegistros, salida de la consola

Y una plantilla de feature request:

Title: Add an option to disable the animation

Is your feature request related to a problem?
The animation is distracting for users who prefer reduced motion.

Describe the solution you'd like
A config option, for example `animate: false`.

Describe alternatives you've considered
I tried overriding the CSS, but it breaks on updates.

Additional context
This is related to the accessibility guidelines.

Cabeceras: ¿Tu petición está relacionada con un problema?, Describe la solución que te gustaría, Describe alternativas que has considerado.

Responder y dar seguimiento

Cuando recibas respuestas, hay frases muy comunes:

Frase de quien respondeTraducción
Can you share your code?¿Puedes compartir tu código?
Could you provide a minimal example?¿Podrías dar un ejemplo mínimo?
What version are you using?¿Qué versión usas?
Have you tried ...?¿Has probado …?
Can you reproduce it in a sandbox?¿Puedes reproducirlo en un entorno de pruebas?
This looks like a duplicate of #123.Esto parece un duplicado del #123.
This is expected behavior.Esto es el comportamiento esperado.
Thanks for reporting this!¡Gracias por avisar!
I'll look into it.Lo miraré.
Fixed in version 2.4.2.Arreglado en la versión 2.4.2.

Y lo que tú puedes contestar:

InglésTraducción
Thanks, that fixed it!Gracias, eso lo arregló.
Sorry, here is the code:Perdón, aquí está el código:
I tried your suggestion, but I get a different error:Probé tu sugerencia, pero sale otro error:
Sorry, I missed that in the documentation.Perdón, se me pasó eso en la documentación.
I found the solution: ...Encontré la solución: …
You can close this issue.Puedes cerrar este issue.

Un ejemplo completo

Una pregunta de foro bien hecha, de principio a fin:

Title: [JavaScript] addEventListener doesn't fire on dynamically added buttons

Hi everyone,

I'm making a shopping list. When the user adds an item, I create a new
button with JavaScript. I expected the click handler to run for every
button, but it only runs for the buttons that were in the HTML at the start.

Minimal example:

    document.querySelectorAll(".remove").forEach((btn) => {
      btn.addEventListener("click", () => console.log("removed"));
    });

    const btn = document.createElement("button");
    btn.className = "remove";
    document.body.append(btn);

I read the MDN page about addEventListener, but I don't understand why
the new button is ignored. Any ideas?

Chrome 130, plain JavaScript. Thanks in advance!

Qué tiene de bueno: un título que dice lenguaje y síntoma; contexto breve; qué esperaba y qué pasa; código mínimo; qué ha leído; entorno y agradecimiento. Con eso, cualquiera puede contestarte con “use event delegation”.

Errores frecuentes

  • Preguntar “Can I ask a question?” y esperar permiso. Haz la pregunta directamente.
  • Escribir en español en un foro internacional. Si el foro es en inglés, usa inglés sencillo; es mejor un inglés simple que una traducción automática confusa.
  • Dar un título vago como Help o Error.
  • Subir capturas en vez de texto. El código y los errores se pegan como texto.
  • Pegar todo el proyecto. Reduce a un ejemplo mínimo.
  • Mezclar varios problemas en una sola pregunta. Una pregunta, un problema.
  • Olvidar versiones y sistema operativo. Son datos clave.
  • No cerrar el hilo. Si lo resuelves, cuenta cómo.
  • Traducir expresiones coloquiales palabra por palabra. “Se me ha petado” no tiene traducción literal: di it crashes o it stopped working.

Resumen

Parte de la preguntaCómo se dice
Títulolenguaje + síntoma + cuándo ocurre
ObjetivoI'm trying to...
Esperado / realI expected X, but I got Y.
Códigoejemplo mínimo reproducible, en bloque de código
ProbadoI've already tried...
Entornoversión, navegador, sistema
CierreThanks in advance!
Issue de GitHubSteps to reproduce, Expected, Actual, Environment

Siguiente lección: Siglas y jerga.

Pon a prueba lo que has aprendido

[Inglés] ¿Cuál es el mejor título para una pregunta en un foro?

[Inglés] ¿Qué es un minimal reproducible example?

[Inglés] En un issue de GitHub, ¿qué se escribe bajo 'Steps to reproduce'?

[Inglés] ¿Qué frase es la más adecuada para cerrar una pregunta con educación?

¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.