Saltar al contenido principal

Ingeniería async-first: cómo mantener equipos remotos productivos sin reuniones

Autor
Ignacio AmatIgnacio Amat
Publicado
Lectura4 min
Equipo de desarrollo remoto trabajando de forma asíncrona

Llevo más de 6 años trabajando en remoto, los últimos 4 con equipos distribuidos en múltiples husos horarios. Mi conclusión: las reuniones sincrónicas son el último recurso, no la primera opción.

El trabajo async-first no significa “no hablarse”. Significa priorizar la comunicación escrita y diferida para que cada persona pueda trabajar en su momento más productivo sin interrupciones constantes.


Los pilares del async-first

PilarPráctica concreta
Documentación escritaADRs, RFCs, READMEs por feature
PRs como comunicaciónDescripciones detalladas, contexto, decisiones
Decisiones diferidasPropuesta por escrito → 24h para comentarios → decisión
Overlap mínimo2-3 horas/día de solapamiento, el resto async
Registro públicoSlack/Teams como archivo, no como chat urgente

PRs como unidad de comunicación

El pull request no es solo código. Es el principal vehículo de comunicación técnica:

## Description
Implements recurring payment processing from CSV upload.

## Context
We've been processing payments manually each month. This automates 
the workflow: validate rows → enqueue jobs → notify on errors.

## Key decisions
- **Each row is a separate job**: so a single bad row doesn't block the rest.
- **CSV parsed in a job, not the controller**: keeps response under 200ms.
- **Notifications via Laravel Notifications**: can be email, Slack or both.

## How to test
1. Upload `tests/fixtures/valid_payments.csv` via the admin panel
2. Run `php artisan queue:work --once`
3. Check `database/notifications` for results

## Screenshots
[Link to screen recording of the flow]

Closes #452

Un PR así permite que el revisor entienda el contexto, las decisiones y cómo probarlo sin necesidad de una reunión.


ADRs: decisions que no se pierden

Cada decisión técnica relevante se documenta como un Architecture Decision Record:

# ADR-023: CSV Payment Processing

## Status
Accepted

## Context
We need to process recurring payments from CSV uploads.
Options: sync processing, batch job, or per-row jobs.

## Decision
Per-row jobs dispatched to a dedicated queue.

## Consequences
+ Partial failures don't block entire batch
+ Can retry individual failed rows
+ Easier to monitor per-payment
- More Redis/RAM usage for job metadata
- More complex error reporting (per-row status)

## Alternatives considered
1. Sync processing in controller: blocked for large CSVs, timeout risk
2. Single job for entire CSV: one bad row fails everything

Los ADRs viven en docs/adrs/ y se referencian desde los PRs. Cualquier persona del equipo puede entender por qué se tomó una decisión sin preguntar.


El ritmo diario async-first

Hora (CET)Actividad
08:00-09:00Revisar PRs pendientes, issues, Slack diferido
09:00-12:00Bloque de código profundo (sin Slack, sin meetings)
12:00-13:00Solapamiento con US/UK: standup, pair, dailies
13:00-14:00Comida
14:00-17:00Segundo bloque: código, PRs, documentación
17:00-18:00Revisar PRs del equipo, actualizar issues

Los bloques de 3 horas sin interrupciones son donde ocurre el trabajo de verdad. Una reunión de 30 minutos en medio de un bloque de código profundo puede costar 2 horas de productividad perdida (tiempo de recontextualización).


Reuniones que sí valen la pena

No soy anti-reunión. Soy anti-reunión-sin-agenda. Estas reuniones tienen un propósito claro:

TipoCuándoDuración
Daily standupSolo si hay blockers que destrabar10-15 min
Sprint planningPrincipio de sprint30-45 min
RetroFin de sprint30 min
Pair programmingFeature compleja o onboarding1-2h (agendado)
1:1 con managerSemanal25 min

Regla: si no hay agenda escrita 24h antes, la reunión se cancela.


Herramientas que uso

  • PRs y código: GitHub + GitHub Actions
  • Documentación: Markdown en el repo (ADRs, READMEs)
  • Comunicación async: Slack (canales por tema, no mensajes directos urgentes)
  • Grabaciones: Loom para explicaciones complejas
  • Issues: Linear
  • Decisiones: ADRs en docs/adrs/

Conclusión

El trabajo async-first no es una filosofía abstracta. Es un conjunto de prácticas concretas: escribir PRs con contexto, documentar decisiones, bloquear tiempo para código profundo y reducir reuniones al mínimo necesario.

Si buscas un perfil senior que ya funciona así y puede ayudar a tu equipo a adoptar estas prácticas, revisa mi disponibilidad.


Artículos relacionados

Artículos relacionados

Revisa mi perfil como desarrollador

Si este artículo encaja con los retos técnicos de tu equipo, revisa mi stack o mi disponibilidad profesional.

Cuéntame qué necesitas

Puedes escribirme por un rol, contrato, colaboración técnica, una duda o una consulta general. Con 2-3 líneas de contexto suelo poder responder en menos de 24 horas hábiles.

0/500
Disponibilidad