1 puntos por GN⁺ 2024-11-30 | 1 comentarios | Compartir por WhatsApp

Cómo no equivocarse al construir un sistema contable en una startup

  • En una fintech, no perder de vista el flujo del dinero es lo mínimo. Sin embargo, en algunas startups termina ocurriendo que se pierden unos cuantos centavos en cada transacción.
  • En las startups se sigue la filosofía de "hacer que funcione, hacerlo bien y hacerlo rápido", y por eso no se construye un sistema de contabilidad por partida doble.
  • Estos errores provocan quejas de los usuarios y frenan el crecimiento de la empresa.
  • Se intentó resolver el problema haciendo que el equipo de soporte al cliente compensara manualmente las transacciones incorrectas.

La importancia del sistema contable

  • El dinero se genera cuando se mueve, y rastrearlo es complejo.
  • Un sistema de contabilidad de partida simple muestra el flujo de fondos, pero no puede explicar por qué ocurrió.
  • Un sistema de contabilidad por partida doble puede resolver este problema al rastrear tanto el origen como el destino del dinero.

Modelo de datos de un sistema de partida doble

  • Un sistema de contabilidad por partida doble se compone de tres entidades: cuentas, asientos y transacciones.
  • Las cuentas representan cambios de valor, y los asientos representan el flujo de fondos entre cuentas.
  • Las transacciones garantizan que los asientos queden emparejados correctamente.

Dos sistemas contables

  • El sistema contable es la interfaz del ledger vista desde fuera, mientras que el sistema de ingeniería es la implementación del ledger.
  • El sistema contable requiere alta disponibilidad y baja latencia, mientras que el sistema de ingeniería exige fuerte consistencia y precisión de los datos.

Cómo funcionan los asientos

  • Un asiento puede estar en uno de tres estados: pendiente, descartado o publicado.
  • Los asientos siempre se crean en estado pendiente, y un asiento descartado puede ser reemplazado por uno publicado.

Cómo funcionan las transacciones

  • Las transacciones solo se publican cuando los asientos se publican o se descartan.
  • Si una transacción falla parcialmente, se puede revertir semánticamente mediante un asiento compensatorio.

Cómo funcionan las cuentas

  • Una cuenta está vinculada con múltiples asientos, y el saldo total debe coincidir con la suma de los saldos individuales de todos los asientos.
  • La forma de calcular el saldo total varía según el saldo normal de la cuenta.

Conclusión

  • Un ledger es un ejemplo claro de un problema difícil de ciencias de la computación disfrazado de un área no técnica.
  • Construir un sistema de contabilidad por partida doble es difícil sin el contexto adecuado, pero permite tomar mejores decisiones.

1 comentarios

 
GN⁺ 2024-11-30
Comentarios en Hacker News
  • En el caso de los clientes de Synapse, desapareció mucho dinero. Los bancos deben controlar estrictamente el flujo de fondos, pero las fintech juntan todos los fondos en cuentas FBO y construyen un libro mayor para rastrearlos. En el caso de Synapse, los saldos de clientes registrados en el libro mayor eran mayores que los fondos reales en las cuentas FBO. Es más probable que esto se debiera a un libro mayor defectuoso que a fraude. Recomiendan no poner dinero en cuentas de depósito de fintech y usar un banco real. Las fintech a menudo afirman que los depósitos están cubiertos por el seguro de la FDIC, pero esto solo protege si quiebra el banco subyacente.

  • Trabajando en Google, aprendieron sobre sacrificar confiabilidad o exactitud para ganar escalabilidad. Cuando se procesan millones de consultas, algunas pueden fallar, y eso muestra una diferencia de actitud en ingeniería. Al abrir Gmail, muchas veces ocurre un error, pero los usuarios resuelven el problema recargando. Si la durabilidad del almacenamiento es de 99.99999%, de 2 mil millones de clientes, 200 podrían sufrir una molestia.

  • Se enfatiza la importancia del conocimiento del dominio en el liderazgo de ingeniería. Si trabajas en una empresa financiera, necesitas entender finanzas, y lo mismo aplica al periodismo o al comercio. Las organizaciones exitosas incluyen preguntas no técnicas relacionadas con el dominio en las entrevistas para el equipo técnico.

  • Es importante contratar al talento adecuado. Más que contratar personas que sepan mucho de estructuras de datos y algoritmos, hay que contratar a quienes puedan construir lo que realmente se necesita. Puede ayudar que los ingenieros reciban formación en otros campos. La resolución de problemas y la ingeniería se logran mediante una comprensión profunda de la industria y la colaboración con expertos.

  • Comparten la experiencia de haber construido un sistema de facturación en una startup de internet/telecomunicaciones. Implementaron la lógica de facturación en dos lugares y fue difícil mantenerla sincronizada. Revisaban manualmente las facturas para evitar errores y prevenían fallos mediante lógica duplicada. Esa experiencia les hizo entender la importancia de la contabilidad por partida doble.

  • Hay muchas opiniones a favor de un sistema contable de partida simple. La contabilidad de partida simple puede ser más fácil, pero es mejor usar partida doble. Están buscando materiales sobre contabilidad para programadores.

  • Hay un malentendido sobre el principio de "make it work, make it right, make it fast". "make it right" es la segunda etapa, y el trabajo se detiene hasta que el sistema funcione correctamente. La optimización empieza solo después de que todos los problemas estén resueltos.

  • Si no hay pruebas, puede ocurrir el problema de perder dinero en las transacciones. Es incorrecto considerar normal este tipo de problemas al construir sistemas financieros.

  • Si vas a reinventar una parte de la banca, conviene tomar como referencia sistemas ya validados. Por ejemplo, se puede consultar el esquema central de transacciones de depósitos bancarios usado por instituciones financieras pequeñas y medianas en Estados Unidos.

  • El software que maneja dinero debe tratarse con extremo cuidado, y hay que reconocer los errores del pasado. El escándalo de la Oficina de Correos del Reino Unido muestra las consecuencias reales de este tipo de problemas.