Saltar al contenido principal

Principios de ingeniería

Lanzar rápido, aprender más rápido

Optimizamos la velocidad de iteración. Una función en producción nos enseña más que semanas de planificación. Usamos indicadores de función ampliamente para lanzar de forma segura y retroceder rápidamente.

En la práctica, esto significa PRs pequeños, despliegue continuo y una inclinación hacia la acción. Si está debatiendo entre dos enfoques, lance uno y mida. Los datos de usuarios reales superan a las discusiones teóricas.

El código es una responsabilidad

Cada línea de código es algo que necesitamos mantener. Preferimos eliminar código a escribirlo. Cuando sí escribimos código, lo hacemos tan simple como sea posible, pero no más simple.

Nuestro script de seguimiento está por debajo de 5KB porque luchamos por cada byte. Antes de agregar una dependencia, preguntamos: ¿podemos hacer esto nosotros mismos con menos código? Normalmente la respuesta es sí.

Las pruebas son documentación

Las buenas pruebas explican la intención. Escribimos pruebas que describen el comportamiento, no la implementación. Cuando las pruebas fallan, deben decirle exactamente qué salió mal.

Nos enfocamos en pruebas de integración sobre pruebas unitarias. Probar el camino principal a través de flujos de usuarios reales detecta más errores que simular cada llamada de función.

El rendimiento es una función

La velocidad no es una consideración posterior. Medimos el rendimiento desde el primer día, establecemos presupuestos y tratamos las regresiones como errores. Nuestro script de seguimiento se mantiene por debajo de 5KB porque cada byte importa.

El despliegue en el borde, la carga diferida y el caché agresivo son valores predeterminados. Cada endpoint de API tiene un presupuesto de latencia. Si una solicitud tarda más de 100ms, investigamos.

Seguridad por defecto

No añadimos seguridad después. La autenticación, la autorización y la protección de datos están integradas en cada función desde el principio. Asumimos una brecha y diseñamos en consecuencia.

La Row Level Security a nivel de base de datos significa que incluso una API comprometida no puede acceder a datos que no debería. La validación de entrada ocurre en el borde antes de que las solicitudes lleguen a nuestro backend.

La privacidad como función de producto

La privacidad no es cumplimiento normativo: es una ventaja competitiva. No recopilamos lo que no necesitamos. Anonimizamos por defecto. Damos a los usuarios control sobre sus datos.

Cuando cambian el privacy regulations u otras regulaciones, normalmente no tenemos que hacer nada porque ya hemos diseñado para la máxima privacidad.