Piensa por un momento en los lugares donde realmente trabajas.

Un sótano con cimientos de concreto y sin ventanas. Una obra nueva con montantes de acero, forro exterior y ningún servicio conectado todavía. Una propiedad rural veinte minutos más allá de la última torre. Un cuarto de máquinas en medio de un edificio comercial. Un estacionamiento techado.

Ahora piensa en dónde se hacen las demostraciones de software: en una oficina, con wifi.

Esa diferencia es lo que vuelve frustrante el software de campo, de una forma difícil de explicar. La app no es lenta ni está mal diseñada. Funciona perfectamente en la entrada de la casa y deja de funcionar justo en el sótano, que es donde la necesitabas. Y casi nunca falla de forma honesta: lo normal es una rueda que gira sin parar, un guardado silencioso que en realidad no guardó nada, o un formulario que borra todo lo que escribiste apenas sales de la pantalla.

Los distintos tipos de falla

"No hay señal" no es un solo problema. Son varios, y cada uno rompe el software de una manera distinta.

Nada de señal. El caso más simple. Una app bien construida sabe que está sin conexión y se comporta en consecuencia. La mayoría de las apps manejan esto sin mayor problema, porque es fácil de detectar.

Una barra de señal, técnicamente conectado. El caso realmente destructivo. El teléfono reporta conexión, así que la app intenta contactar al servidor y la solicitud se queda colgada. Aparece una rueda girando durante cuarenta segundos y luego un error por tiempo de espera agotado, o algo peor: una operación que se completa a medias. El software que solo verifica "¿hay red?" en vez de "¿esto realmente se guardó?" es el que peor falla en este escenario.

Señal que va y viene. Caminas de la entrada al sótano cuatro veces al día. Cada uno de esos cambios es una oportunidad para que una sincronización se interrumpa a medio camino.

Conectado, pero lento. Torres rurales saturadas a las cuatro de la tarde. Todo funciona, en teoría, pero a un ritmo tan lento que terminas dejando de usar la app.

Una app que realmente funciona sin conexión tiene que resolver los cuatro casos. Una que solo resuelve el primero seguirá haciéndote perder trabajo.

Un teléfono muestra una carga en cola mientras un trabajador de oficios continúa su labor en un cubo de escaleras de concreto

¿Qué significa en realidad "funcionar sin conexión"?

La frase se usa con demasiada libertad. Hay una prueba concreta, y tiene cuatro partes.

La lectura funciona. Puedes abrir un trabajo y ver la dirección, el alcance, el teléfono del cliente y las fotos de ayer sin ninguna conexión. Esto solo es posible si los datos están realmente guardados en el dispositivo, no en una caché que se va llenando cuando se puede.

La escritura funciona, y es duradera. Puedes agregar una nota, registrar horas, anotar un gasto, tomar fotos. Y si el teléfono se apaga, la app se cierra a la fuerza o la batería se agota por el frío, ese trabajo sigue ahí cuando vuelves a abrirla. Lo que solo queda en memoria no está realmente guardado.

La sincronización es automática e invisible. Cuando regresa la señal, todo lo pendiente sube solo. Nunca deberías tener que acordarte de tocar un botón de sincronizar, porque la única vez que se te olvide será justo la vez que importe.

Los conflictos se manejan con honestidad. Dos personas editaron el mismo trabajo mientras ambas estaban sin conexión. Un buen software detecta eso y te lo avisa. Un mal software se queda en silencio con una sola versión, y te enteras semanas después de que falta una nota.

Ese último punto es el que más fácilmente se pasa por alto, y es lo que separa a una app que simplemente tolera trabajar sin conexión de una que en verdad está construida desde el principio para funcionar sin conexión. Detectar un conflicto exige que la app lleve el control de versiones de cada registro y las compare al momento de subir los datos. Es trabajo de ingeniería real, sin ninguna función visible que lo demuestre, y por eso es justo lo que suele quedarse sin hacer.

Por qué las fotos merecen un párrafo aparte

Las fotos son el caso más difícil de resolver sin conexión en el software de campo, y también son lo que más necesita capturar un contratista en la obra: el daño existente antes de empezar, las condiciones detrás de una pared, el trabajo terminado, una lectura de medidor, una entrega de material.

Son difíciles porque pesan. Las fotos de un solo trabajo, en resolución completa, suman decenas de megabytes. Con una sola barra de señal, esa carga va a fallar. Repetidamente. Una app que trata a una foto como cualquier otro registro terminará bloqueando la pantalla mientras espera la carga, o simplemente la perderá.

Lo que en realidad tiene que pasar: la foto se guarda en el dispositivo de inmediato y queda adjunta al trabajo, y la carga es un proceso aparte que corre en segundo plano y reintenta, incluso entre reinicios de la app y de un día para otro si hace falta. La foto tiene que poder usarse dentro de la app en el momento en que se toma, haya llegado o no a algún servidor.

La falla que hay que vigilar es la app que muestra la foto en el teléfono pero nunca la sube, y nunca lo dice. Todo parece correcto hasta que abres el trabajo en una laptop, o pierdes el teléfono, y resulta que esas fotos nunca salieron del dispositivo.

Un trabajador de oficios fotografía un trabajo terminado con su teléfono

Lo que cuesta no tenerlo

El costo visible es pequeño pero constante: unos minutos perdidos en cada incidente, una caminata hasta la entrada para conseguir señal.

El costo real tiene que ver con el comportamiento. Después de que la app les falla dos veces, las personas dejan de confiar en ella en la obra. Vuelven a anotar las horas en un papel y a pasarlas el viernes por la noche. Vuelven a fotografiar los recibos a un carrete que nunca se organiza. Vuelven a llevar el horario real en la cabeza. El software sigue instalado y sigue pagándose, pero el negocio vuelve a funcionar de memoria.

Una vez que eso pasa, todo lo que viene después se deteriora. El costeo de los trabajos deja de funcionar porque los costos nunca quedan atados a un trabajo. La facturación se atrasa porque nadie está seguro de que el trabajo esté terminado. El valor de todo el sistema dependía de que los datos se capturaran en el momento del trabajo, y una falla sin conexión es justo lo que rompe eso.

¿Cómo probarlo antes de decidirte?

No se puede saber por una lista de funciones; todos escriben "funciona sin conexión". Pruébalo tú mismo, en unos diez minutos:

  1. Pon el teléfono en modo avión.
  2. Abre un trabajo que lleves tiempo sin abrir. ¿Carga por completo, con fotos incluidas?
  3. Agrega una nota, registra horas, anota un gasto, toma tres fotos.
  4. Cierra la app a la fuerza. Vuelve a abrirla. ¿Sigue ahí todo lo que hiciste?
  5. Reconecta el teléfono. ¿Sincroniza todo solo, sin que toques nada?
  6. Ahora la prueba de verdad: activa el wifi pero conéctalo a una red sin internet, para que el teléfono reporte conexión sin realmente tenerla. Repite el paso 3. Muchas apps que pasan el modo avión fallan en esta.

Si sobrevive a las seis pruebas, la construyó gente que ha estado en un sótano.

Zeus está hecho así a propósito: la app mantiene una base de datos local completa en el dispositivo, de modo que los trabajos, los clientes y los precios se pueden leer sin ninguna conexión, y todo lo que ingresas se escribe primero en el dispositivo y se sincroniza cuando vuelve la señal. Las fotos se guardan en el dispositivo de inmediato y, en los planes que incluyen respaldo de fotos, se suben en segundo plano con reintentos, con la opción de subirlas solo por wifi para que un día de fotos no agote el plan de datos. Las ediciones en conflicto entre dos dispositivos se detectan en vez de sobrescribirse en silencio, y quedan marcadas en el indicador de sincronización para que las resuelvas.

Preguntas frecuentes

¿Guardar todo en el teléfono no ocupa mucho espacio?

Los registros de texto son mínimos: miles de trabajos, clientes y partidas suman apenas unos cuantos megabytes. Las fotos son el único consumo importante, y por eso suelen manejarse aparte, con los originales en resolución completa guardados en la nube una vez que se suben.

¿Los datos del teléfono están seguros si lo pierdes o te lo roban?

Depende de la app, y vale la pena preguntarlo directamente. Lo que hay que buscar es que la base de datos local esté cifrada y que exista un bloqueo propio de la app, no solo la confianza en el bloqueo de pantalla del teléfono. Zeus cifra su base de datos local y ofrece un bloqueo de app opcional que usa la biometría o el PIN del dispositivo.

¿Qué pasa si dos miembros del equipo editan el mismo trabajo sin conexión?

En un sistema bien construido, el conflicto se detecta cuando el segundo dispositivo sincroniza y se muestra a una persona para que lo resuelva. Desconfía de cualquier app que prometa que esto nunca pasa: lo habitual es que se implemente como "gana el último en escribir", lo que significa que el trabajo de alguien desapareció sin avisarle a nadie.

¿Necesito sincronizar a mano antes de salir a un trabajo?

No deberías tener que hacerlo, y si hace falta es una señal de alerta. La sincronización debería ocurrir de forma continua en segundo plano, siempre que haya señal.