Atlasingeniería

Inglés técnicoEscritura profesional — Semi-SeniorTema 1Semi-Senior

Commits y pull requests en inglés claro

Un commit y una descripción de pull request son los dos textos en inglés que más vas a escribir en tu vida laboral. Los dos tienen una estructura fija, y saberla convierte una hoja en blanco en completar huecos.

Escribir en inglés cuesta cuando hay que inventar la forma además del contenido. La buena noticia es que en un commit y en una descripción de pull request la forma ya está inventada: las dos son plantillas con huecos, y el inglés que necesitan es corto, en presente y sin adornos.

Dicho de otro modo: no hace falta escribir bien en inglés para escribir un buen pull request. Hace falta saber qué va en cada hueco.

El commit: una línea que completa una frase

La convención de git es que el título completa la frase “if applied, this commit will…”. Por eso va en imperativo y sin punto final: es lo que el cambio hace, no lo que vos hiciste.

Escrito asíPor qué fallaMejor
Fixed login bugPasado: describe tu tarde, no el cambioFix redirect loop after session expires
Changes to the parserNo dice qué cambia ni para quéAccept trailing commas in the parser
Update stuffNo dice nada; el revisor abre el diff a ciegasUpdate invoice tax rate to 21%
fix: FIX THE THING!!!Ruido; además el título no se gritaFix duplicate emails on retry
Fix bug where the export job would sometimes time out on big tables.Larga y con punto final; el porqué va en el cuerpoFix export timeout on large tables
Regla práctica: si el título entra en 50 caracteres y empieza con un verbo en imperativo, ya está bien escrito.

Los verbos que cubren el 90% de los commits son diez, y se usan siempre en la misma forma:

VerboCuándoEjemplo
AddAlgo que antes no existíaAdd retry to the export job
RemoveAlgo que deja de existirRemove unused billing helpers
FixUn comportamiento incorrectoFix rounding on discounted items
UpdateAlgo que ya existía cambia de valor o versiónUpdate Postgres client to 8.13
RenameSólo cambia el nombreRename Account to Tenant
MoveSólo cambia de lugarMove date helpers to shared
ExtractSacar una parte a su propia unidadExtract invoice totals into a service
RefactorCambia la forma, no el comportamientoRefactor the checkout flow into steps
HandleContemplar un caso que faltabaHandle empty carts at checkout
PreventImpedir que algo pasePrevent double submit on slow networks
«Refactor» tiene un significado estricto: el comportamiento no cambia. Si cambia, el commit no es un refactor por más que hayas movido código.

Antes de seguir, predecí

Un mensaje de commit que dice «fix bug». ¿Qué problema tiene?

El pull request: cinco huecos

Una descripción de pull request tiene un lector concreto: alguien que va a revisar tu código sin saber de dónde salió. Todo lo que escribas tiene que ahorrarle preguntas.

Plantilla

Pull request description

What this does

One or two sentences, in the present tense: "Adds a retry with exponential backoff to the export job."

Presente y en tercera persona: el sujeto es el pull request, no vos. Es la misma frase del título del commit, pero completa.

Why

The problem this solves, with the evidence: "Exports over 10k rows timed out for three customers this week (see #482)."

Acá va el link al issue, al reporte o al gráfico. Un revisor que entiende el problema revisa mucho mejor.

How it works

The approach, and anything non-obvious in the diff: "The job now pages through in chunks of 1000 and resumes from the last page on failure."

Sólo lo que el diff no muestra solo. No narres archivo por archivo: para eso está el diff.

How to test it

Concrete steps or the command to run: "Run `npm run test:export`, or trigger an export on the demo account with 50k rows."

El hueco que más se saltea y el que más tiempo ahorra. Sin esto, el revisor aprueba leyendo, que no es lo mismo que probar.

Notes for the reviewer

Trade-offs, open questions, what you deliberately left out: "The backoff cap is arbitrary at 30s — happy to change it."

Decir en voz alta lo que dudás convierte la revisión en una conversación en vez de una corrección.

Los cinco huecos entran en diez líneas. Un pull request largo no es uno bien descrito: es uno que debería haberse partido en dos.
FórmulaPara quéEjemplo
This PR adds / removes / fixes…Abrir la descripciónThis PR adds pagination to the export job
Closes #482Cerrar el issue solo al mergearCloses #482
Follow-up to #479Encadenar con trabajo previoFollow-up to #479, which added the retry
Out of scope: …Frenar el pedido de más cambiosOut of scope: the CSV format itself
I went with X over Y because…Explicar una decisiónI went with polling over websockets because the job runs once a day
Open question: …Pedir opinión sin bloquearOpen question: should the cap be configurable?
Draft / ready for reviewDecir en qué estado estáMarking this ready for review
«Out of scope» es la frase más útil de la lista: delimita el pull request antes de que la revisión lo expanda.

Practicalo

Reescribilo

Una descripción de pull request escrita como un mensaje de chat. Reescribila con los huecos que importan: qué hace, por qué y cómo probarlo.

hi! so this PR is about the export thing that we talked about yesterday, I changed a few files and also fixed a small thing in the date helper that was annoying me. let me know if it looks ok

Lo importante del segundo modelo: acortar está bien, saltearse el «cómo probarlo» no.

  • commit

    /kəˈmɪt/ · suena como kamít, con acento en la segunda sílaba

    Error común: decir «cómit», acentuando la primera

  • review

    /rɪˈvjuː/ · suena como riviú

    Error común: decir «rivíu» o «revíu»

  • draft

    /drɑːft/ · suena como draaft, con la a larga

    Error común: decir «draf» comiéndose la t

  • scope

    /skəʊp/ · suena como skóup

    Error común: decir «escop», con e inicial

  • squash

    /skwɒʃ/ · suena como skuósh

    Error común: separar las vocales: «sku-ash»

La e inicial de «escop» es la más delatora: en inglés las palabras arrancan directo con la s.

Lo que preguntan sobre esto

En la práctica

Cierre

Autoevaluación

¿Lo entendiste?

¿Por qué el título de un commit va en imperativo?
¿Qué va en el cuerpo del commit y qué en el título?
¿Cuál es el hueco del pull request que más se saltea?
¿Para qué sirve escribir «Out of scope: …» en la descripción?