Preguntar en foros y escribir un issue en inglés
En esta lección
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ística | Inglés | Por qué |
|---|---|---|
| Título concreto | clear title | permite que otros la encuentren |
| Qué quieres conseguir | goal | evita soluciones que no te sirven |
| Qué esperabas | expected behavior | define lo correcto |
| Qué ocurre | actual behavior | define el fallo |
| Código mínimo | minimal reproducible example | permite probarlo en un minuto |
| Lo que probaste | what I tried | demuestra esfuerzo y evita repetir |
| Versiones | environment | mismo 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.
| Malo | Bueno |
|---|---|
Help!!! | fetch returns 404 only when the URL has a trailing slash |
JavaScript doesn't work | TypeError: Cannot read properties of undefined (reading 'map') in React component |
Problem with my database | UNIQUE constraint failed when inserting a user in SQLite |
Error | Python: 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és | Español |
|---|---|
What I want to do | Qué quiero conseguir |
What I expected | Qué esperaba |
What happens / What actually happens | Qué ocurre en realidad |
What I tried | Qué he probado |
Code / Minimal example | Código / ejemplo mínimo |
Environment | Entorno (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:
- Copia el código a un archivo nuevo.
- Borra todo lo que no hace falta para que falle: estilos, otras funciones, datos extra.
- Sustituye datos reales por datos inventados.
- Comprueba que sigue fallando.
- 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és | Traducció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és | Traducció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és | Traducció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és | Traducció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 nowsuena mal. MejorCould you help me understand why...?. - No culpes:
Your library is brokenes 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ático | Mejor |
|---|---|
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és | Significado |
|---|---|
Describe the bug | Describe el fallo |
Steps to reproduce | Pasos para reproducirlo |
Expected behavior | Comportamiento esperado |
Actual behavior | Comportamiento real |
Environment | Entorno |
Additional context | Contexto adicional |
Screenshots | Capturas (aquí sí son útiles) |
Logs | Registros, 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 responde | Traducció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és | Traducció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
HelpoError. - 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 crashesoit stopped working.
Resumen
| Parte de la pregunta | Cómo se dice |
|---|---|
| Título | lenguaje + síntoma + cuándo ocurre |
| Objetivo | I'm trying to... |
| Esperado / real | I expected X, but I got Y. |
| Código | ejemplo mínimo reproducible, en bloque de código |
| Probado | I've already tried... |
| Entorno | versión, navegador, sistema |
| Cierre | Thanks in advance! |
| Issue de GitHub | Steps to reproduce, Expected, Actual, Environment |
Siguiente lección: Siglas y jerga.
Pon a prueba lo que has aprendido
¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.