1 poin oleh GN⁺ 2024-11-30 | 1 komentar | Bagikan ke WhatsApp

Jangan sampai salah saat membangun sistem akuntansi di startup

  • Di perusahaan fintech, tidak kehilangan jejak aliran uang adalah hal yang mendasar. Namun, di beberapa startup, ada kasus beberapa sen hilang di setiap transaksi.
  • Di startup, ada filosofi "buat dulu agar berjalan, buat dengan benar, lalu buat cepat", sehingga mereka tidak membangun sistem pembukuan berpasangan.
  • Kesalahan seperti ini menimbulkan keluhan pengguna dan menghambat pertumbuhan perusahaan.
  • Tim dukungan pelanggan mencoba menyelesaikan masalah dengan cara mengganti rugi transaksi yang salah secara manual.

Pentingnya sistem akuntansi

  • Uang tercipta saat berpindah, dan melacaknya itu rumit.
  • Sistem pembukuan tunggal memberikan aliran dana, tetapi tidak bisa menjelaskan alasannya.
  • Sistem pembukuan berpasangan dapat menyelesaikan masalah ini dengan melacak baik sumber maupun tujuan uang.

Model data sistem pembukuan berpasangan

  • Sistem pembukuan berpasangan terdiri dari tiga entitas: akun, entri, dan transaksi.
  • Akun merepresentasikan perubahan nilai, sedangkan entri merepresentasikan aliran dana antar akun.
  • Transaksi memastikan bahwa entri selalu dipasangkan dengan benar.

Dua sistem akuntansi

  • Sistem akuntansi adalah antarmuka ledger yang terlihat dari luar, sedangkan sistem engineering adalah implementasi ledger itu sendiri.
  • Sistem akuntansi memerlukan ketersediaan tinggi dan latensi rendah, sedangkan sistem engineering memerlukan konsistensi yang kuat dan akurasi data.

Cara kerja entri

  • Entri dapat berada dalam salah satu dari tiga status: pending, dibuang, atau diposting.
  • Entri selalu dibuat dalam status pending, dan entri yang dibuang dapat digantikan oleh entri yang diposting.

Cara kerja transaksi

  • Transaksi hanya diposting ketika entri diposting atau dibuang.
  • Jika transaksi gagal sebagian, pembatalan dapat dilakukan secara semantik melalui entri kompensasi.

Cara kerja akun

  • Akun terhubung ke banyak entri, dan total saldo harus sesuai dengan jumlah saldo individual dari semua entri.
  • Cara menghitung total saldo berbeda tergantung pada saldo normal akun.

Kesimpulan

  • Ledger adalah contoh yang jelas dari masalah ilmu komputer yang sulit tetapi menyamar sebagai bidang nonteknis.
  • Membangun sistem pembukuan berpasangan itu sulit tanpa konteks yang tepat, tetapi dengan sistem ini kita bisa mengambil keputusan yang lebih baik.

1 komentar

 
GN⁺ 2024-11-30
Opini Hacker News
  • Dalam kasus pelanggan Synapse, banyak uang hilang. Bank harus mengelola arus dana dengan ketat, tetapi fintech mengumpulkan semua dana di akun FBO dan membangun ledger untuk melacaknya. Dalam kasus Synapse, saldo pelanggan yang tercatat di ledger lebih besar daripada dana aktual di akun FBO. Ini kemungkinan besar disebabkan oleh ledger yang cacat, bukan penipuan. Disarankan untuk tidak menaruh uang di rekening simpanan fintech dan menggunakan bank sungguhan. Fintech sering mengklaim bahwa simpanan dilindungi asuransi FDIC, tetapi perlindungan itu hanya berlaku jika bank dasarnya bangkrut.

  • Saat bekerja di Google, seseorang belajar tentang mengorbankan keandalan atau akurasi demi skalabilitas. Saat memproses jutaan kueri, beberapa bisa gagal, dan ini menunjukkan perbedaan sikap rekayasa. Saat membuka Gmail, cukup sering muncul kesalahan, tetapi pengguna menyelesaikannya dengan menyegarkan halaman. Jika durabilitas penyimpanan 99.99999%, maka dari 2 miliar pelanggan, 200 orang bisa mengalami ketidaknyamanan.

  • Ditekankan pentingnya pengetahuan domain dalam kepemimpinan engineering. Jika bekerja di perusahaan keuangan, perlu memahami keuangan, dan hal yang sama berlaku untuk jurnalisme atau perdagangan. Organisasi yang sukses memasukkan pertanyaan nonteknis terkait domain dalam wawancara tim teknis.

  • Mempekerjakan orang yang tepat itu penting. Daripada merekrut orang yang sangat paham struktur data dan algoritme, lebih baik merekrut orang yang benar-benar bisa membangun apa yang dibutuhkan. Akan membantu bila engineer mendapat pendidikan di bidang lain. Pemecahan masalah dan engineering dicapai melalui pemahaman mendalam tentang industri serta kolaborasi dengan para ahli.

  • Dibagikan pengalaman membangun sistem penagihan di startup internet/telekomunikasi. Logika penagihan dibangun di dua tempat sehingga sulit menjaga sinkronisasinya. Tagihan ditinjau secara manual untuk mencegah kesalahan, dan logika ganda digunakan untuk mencegah error. Dari pengalaman ini, orang tersebut memahami pentingnya pembukuan berpasangan.

  • Ada banyak pendapat yang mendukung sistem akuntansi entri tunggal. Akuntansi entri tunggal mungkin lebih mudah, tetapi lebih baik menggunakan pembukuan berpasangan. Sedang mencari materi akuntansi untuk programmer.

  • Ada kesalahpahaman tentang prinsip "make it work, make it right, make it fast". "make it right" adalah tahap kedua, dan pekerjaan berhenti sampai sistem berfungsi dengan benar. Optimasi baru dimulai setelah semua masalah terselesaikan.

  • Jika tidak ada pengujian, bisa muncul masalah kehilangan uang dalam transaksi. Menganggap masalah seperti ini normal saat membangun sistem keuangan adalah keliru.

  • Jika mencoba menciptakan ulang sebagian dari bank, sebaiknya merujuk pada sistem yang sudah tervalidasi. Misalnya, bisa melihat skema transaksi simpanan core banking yang digunakan oleh lembaga keuangan kecil dan menengah di Amerika Serikat.

  • Perangkat lunak yang menangani uang harus diperlakukan dengan sangat hati-hati, dan kesalahan masa lalu harus disadari. Skandal Kantor Pos Inggris menunjukkan dampak nyata dari masalah seperti ini.