Coding dan Hukum: Konsep Bersama!

Praktisi Ilmu Hukum. Sedang mendalami kajian jurnal informasi law and technology
·waktu baca 10 menit
Tulisan dari Prima Defrian tidak mewakili pandangan dari redaksi kumparan

Ditulis oleh: Prima Defrian
Di era digital, pemrograman komputer dan ilmu hukum sering kali dipandang sebagai dua bidang yang sangat berbeda. Pemrograman identik dengan kode, algoritma, dan instruksi komputer, sedangkan hukum berkaitan dengan peraturan, kontrak, hak, kewajiban, dan penafsiran norma.
Namun, jika dipelajari lebih dalam, keduanya memiliki sejumlah kesamaan mendasar. Baik programmer maupun praktisi hukum harus menggunakan istilah secara konsisten, menyusun struktur yang logis, serta memastikan bahwa setiap bagian memiliki arti yang jelas.
Kesamaan tersebut dapat dipahami meliputi konsep variabel dalam bahasa pemrograman Python dan istilah yang didefinisikan dalam kontrak atau perjanjian hukum.
Variabel memungkinkan programmer menyimpan dan menggunakan suatu nilai melalui nama tertentu. Sementara itu, definisi dalam kontrak menetapkan arti khusus suatu istilah agar para pihak memahami ketentuan perjanjian dengan cara yang konsisten.
Keduanya menunjukkan bahwa ketepatan definisi bukan hanya persoalan teknis, melainkan juga fondasi untuk membangun sistem yang dapat dipahami dan dijalankan dengan benar.
1. Variabel dalam Python dan Definisi Istilah dalam Kontrak
Dalam pemrograman, variabel merupakan nama yang merujuk pada suatu nilai atau objek. Programmer dapat menggunakan nama tersebut berulang kali tanpa harus menuliskan nilai yang sama secara langsung pada setiap bagian program.
Sebagai contoh, perhatikan kode Python berikut:
nama_pihak = "PT Digital Nusantara"
nilai_kontrak = 150_000_000
jangka_waktu = 12
print(nama_pihak)
print(nilai_kontrak)
print(jangka_waktu)
Pada contoh tersebut, terdapat tiga variabel:
- "nama_pihak" menyimpan nama pihak dalam kontrak.
- "nilai_kontrak" menyimpan angka sebesar Rp150.000.000.
- "jangka_waktu" menyimpan angka 12, yang dalam konteks ini diasumsikan mewakili jumlah bulan.
Dengan menggunakan variabel, programmer dapat merujuk pada informasi tersebut secara konsisten dalam bagian program yang berbeda.
Konsep yang hampir sama dapat ditemukan dalam penyusunan kontrak. Sebuah perjanjian biasanya memuat bagian definisi yang menetapkan arti istilah tertentu untuk digunakan pada pasal-pasal berikutnya.
Sebagai contoh, suatu kontrak dapat menyatakan:
Contoh klausul definisi:
"Nilai Kontrak" adalah jumlah pembayaran yang disepakati Para Pihak atas pelaksanaan pekerjaan berdasarkan Perjanjian ini, yaitu sebesar Rp150.000.000 (seratus lima puluh juta rupiah).
"Jangka Waktu" adalah periode pelaksanaan Perjanjian selama 12 (dua belas) bulan, terhitung sejak tanggal mulai berlakunya Perjanjian sebagaimana ditentukan dalam Pasal 3.
Istilah "Nilai Kontrak" dan "Jangka Waktu" kemudian dapat digunakan dalam pasal pembayaran, pelaksanaan pekerjaan, maupun pengakhiran perjanjian.
Persamaannya terletak pada fungsi penamaan. Variabel Python memberikan nama pada suatu nilai, sedangkan definisi kontrak memberikan arti khusus pada istilah yang digunakan dalam dokumen hukum.
Meskipun demikian, keduanya tidak sepenuhnya identik. Variabel merupakan bagian dari struktur program, sementara definisi kontrak harus dipahami berdasarkan keseluruhan isi perjanjian, konteks hukum, dan ketentuan yang berlaku.
2. Mengapa Konsistensi Istilah Sangat Penting?
Bayangkan sebuah program memiliki variabel "nilai_kontrak", tetapi pada bagian berikutnya programmer menggunakan nama "nilai_pembayaran" tanpa sempet menetapkan hubungan antara keduanya.
nilai_kontrak = 150_000_000
# Nama berikut belum pernah didefinisikan.
print(nilai_pembayaran)
Program tersebut akan menghasilkan "NameError" karena Python tidak menemukan nama "nilai_pembayaran" dalam ruang lingkup yang relevan.
Masalah serupa dapat muncul dalam kontrak apabila suatu istilah digunakan tanpa definisi yang memadai atau digunakan dengan arti yang berubah-ubah.
Misalnya, bagian awal perjanjian mendefinisikan "Tanggal Mulai" sebagai tanggal ketika kontrak berlaku. Namun, pasal pelaksanaan pekerjaan menggunakan istilah tersebut seolah-olah berarti tanggal ketika pekerjaan benar-benar dimulai.
Kedua tanggal itu belum tentu sama.
Jika tidak diperjelas, perbedaan tersebut dapat menimbulkan ketidakpastian mengenai kapan kewajiban harus dilaksanakan, kapan tenggat waktu mulai dihitung, atau kapan suatu keterlambatan dapat dinilai terjadi.
Oleh sebab itu, programmer dan penyusun kontrak sama-sama perlu memperhatikan tiga hal:
1. Kejelasan: setiap nama atau istilah memiliki arti yang dapat dipahami.
2. Konsistensi: nama yang sama digunakan untuk merujuk pada hal yang sama, kecuali perbedaan maknanya dijelaskan secara tegas.
3. Keterlacakan: pengguna dapat mengetahui sumber nilai atau arti istilah yang digunakan.
Dalam pemrograman, ketidakkonsistenan dapat menimbulkan kesalahan eksekusi atau hasil yang tidak sesuai harapan. Dalam kontrak, ketidakkonsistenan dapat menimbulkan ambiguitas, perselisihan penafsiran, dan kesulitan dalam pelaksanaan kewajiban.
3. Perbandingan Langsung: Variabel Python dan Istilah Kontrak
Tabel tersebut merupakan perbandingan konseptual, bukan penyamaan hukum secara harfiah. Dalam Python, sebuah nama dapat menunjuk pada objek yang nilainya dapat berubah. Sebaliknya, istilah yang didefinisikan dalam kontrak tidak otomatis berubah hanya karena suatu pihak menggunakan istilah tersebut secara berbeda.
Perubahan hak dan kewajiban kontraktual tetap bergantung pada isi perjanjian, mekanisme perubahan yang disepakati, dan hukum yang berlaku.
4. Contoh Python: Membuat Data Kontrak yang Lebih Terstruktur
Kesamaan antara coding dan penyusunan kontrak dapat dipelajari lebih jauh melalui contoh sederhana.
Misalnya, seorang programmer ingin membuat sistem administrasi kontrak yang mencatat nama para pihak, nilai perjanjian, serta jangka waktu pelaksanaan.
kontrak = {
"nama_pihak": "PT Digital Nusantara",
"nilai_kontrak": 150_000_000,
"jangka_waktu_bulan": 12,
"mata_uang": "IDR"
}
print("Pihak:", kontrak["nama_pihak"])
print("Nilai:", kontrak["nilai_kontrak"])
print("Jangka waktu:", kontrak["jangka_waktu_bulan"], "bulan")
print("Mata uang:", kontrak["mata_uang"])
Dalam contoh tersebut, programmer menggunakan sebuah dictionary Python untuk mengelompokkan beberapa informasi yang berkaitan dengan satu kontrak.
Hasilnya kurang lebih sebagai berikut:
Pihak: PT Digital Nusantara
Nilai: 150000000
Jangka waktu: 12 bulan
Mata uang: IDR
Pendekatan ini memperlihatkan bahwa informasi kontrak dapat disimpan dengan struktur yang jelas. Nama setiap kolom menunjukkan jenis data yang disimpan, sedangkan nilai di dalamnya memberikan informasi yang dibutuhkan.
Dalam praktik administrasi hukum, pendekatan semacam ini berpotensi membantu pengelolaan data kontrak, misalnya untuk pencatatan nilai perjanjian, pengingat tenggat waktu, dan pencarian dokumen.
Namun, kode tersebut baru merupakan contoh struktur data. Kode itu belum dapat menentukan apakah suatu kontrak sah, apakah kewajiban sudah dipenuhi, atau apakah salah satu pihak melakukan wanprestasi. Penilaian hukum membutuhkan pemeriksaan dokumen, fakta, serta ketentuan hukum yang relevan.
5. Dari Variabel Menuju Klausul: Bagaimana Definisi Digunakan dalam Kontrak?
Dalam kontrak, bagian definisi biasanya ditempatkan di awal dokumen atau pada bagian khusus mengenai istilah dan penafsiran. Tujuannya adalah menyediakan acuan bagi pembacaan pasal-pasal berikutnya.
Sebagai contoh, perjanjian jasa dapat memuat definisi berikut:
Pasal 1 — Definisi
1. "Penyedia Jasa" adalah pihak yang berkewajiban melaksanakan layanan sebagaimana diatur dalam Perjanjian ini.
2. "Pengguna Jasa" adalah pihak yang menerima layanan dari Penyedia Jasa.
3. "Hasil Pekerjaan" adalah keluaran pekerjaan yang secara khusus disepakati dalam ruang lingkup layanan.
4. "Tanggal Mulai" adalah tanggal berlakunya pelaksanaan pekerjaan sebagaimana ditentukan dalam Perjanjian ini.
Setelah istilah tersebut didefinisikan, pasal lain dapat menggunakannya secara konsisten.
Contohnya:
Pasal 2 — Ruang Lingkup Pekerjaan
Penyedia Jasa wajib menyerahkan Hasil Pekerjaan kepada Pengguna Jasa sesuai dengan ruang lingkup, spesifikasi, dan jadwal yang disepakati Para Pihak.
Pasal 3 — Jangka Waktu
Pelaksanaan pekerjaan dimulai pada Tanggal Mulai dan berlangsung selama periode yang ditentukan dalam Perjanjian ini, kecuali diubah berdasarkan mekanisme perubahan yang disepakati Para Pihak.
Dengan cara ini, istilah yang digunakan dalam berbagai pasal memiliki acuan yang jelas. Pembaca tidak perlu menebak-nebak siapa yang dimaksud dengan Penyedia Jasa, apa yang termasuk Hasil Pekerjaan, atau tanggal mana yang menjadi dasar perhitungan periode pelaksanaan.
Meski demikian, definisi yang baik harus tetap sesuai dengan substansi perjanjian. Mendefinisikan suatu istilah saja tidak cukup jika ruang lingkup hak, kewajiban, pengecualian, dan konsekuensinya belum diatur secara memadai.
6. Kesamaan Struktur Logika: Kondisi dalam Python dan Klausul Bersyarat
Selain variabel, pemrograman dan kontrak juga memiliki kemiripan dalam penggunaan kondisi.
Dalam Python, pernyataan "if" digunakan untuk menentukan tindakan berdasarkan terpenuhi atau tidaknya suatu kondisi.
Contohnya:
pembayaran_diterima = True
if pembayaran_diterima:
print("Proses dapat dilanjutkan.")
else:
print("Menunggu pembayaran.")
Program tersebut memeriksa nilai "pembayaran_diterima". Jika nilainya "True", program menampilkan pesan bahwa proses dapat dilanjutkan. Jika tidak, program menampilkan pesan bahwa pembayaran masih ditunggu.
Dalam kontrak, logika bersyarat dapat ditemukan pada klausul yang menghubungkan suatu keadaan dengan hak atau kewajiban tertentu.
Contohnya:
"Apabila Pengguna Jasa telah melakukan pembayaran sesuai dengan ketentuan Pasal 4, Penyedia Jasa melaksanakan tahapan pekerjaan berikutnya sesuai dengan jadwal yang disepakati."
Kedua contoh tersebut memiliki pola yang serupa: terdapat kondisi, kemudian diikuti konsekuensi tertentu.
Namun, perbedaannya penting. Python menjalankan kondisi berdasarkan nilai dan aturan yang ditulis dalam program. Kontrak menetapkan hubungan hukum yang penerapan serta penafsirannya dapat bergantung pada fakta, bukti, ketentuan lain dalam perjanjian, dan hukum yang berlaku.
Karena itu, klausul bersyarat tidak cukup hanya memiliki pola logika yang terlihat jelas. Penyusun kontrak juga perlu menentukan pihak yang bertanggung jawab, batas waktu, bukti pemenuhan syarat, pengecualian, dan akibat apabila syarat tidak terpenuhi.
7. Kesalahan Pemrograman dan Risiko Kesalahan Penyusunan Kontrak
Programmer mengenal berbagai jenis kesalahan, seperti kesalahan sintaks, kesalahan nama variabel, dan kesalahan logika. Penyusun kontrak juga menghadapi risiko yang dapat mengganggu kejelasan atau pelaksanaan dokumen.
Beberapa contoh perbandingannya adalah sebagai berikut.
A. Kesalahan nama dan rujukan
Dalam Python, penggunaan nama variabel yang tidak dikenal dapat menyebabkan program gagal berjalan. Dalam kontrak, rujukan kepada pasal atau istilah yang keliru dapat menimbulkan kebingungan mengenai ketentuan yang dimaksud.
B. Kesalahan logika
Program bisa berjalan tanpa kesalahan sintaks tetapi tetap menghasilkan hasil yang salah karena logikanya keliru. Demikian pula, kontrak dapat terlihat rapi secara tata bahasa tetapi tetap memiliki ketentuan yang bertentangan atau tidak memadai.
C. Definisi yang terlalu luas atau sempit
Dalam pemrograman, tipe dan struktur data perlu disesuaikan dengan kebutuhan. Dalam kontrak, istilah juga harus dirumuskan dengan cakupan yang tepat agar tidak memasukkan atau mengecualikan hal yang tidak dimaksudkan para pihak.
D. Perubahan yang tidak konsisten
Ketika struktur program berubah, seluruh bagian yang bergantung pada perubahan tersebut perlu diperiksa. Dalam kontrak, perubahan nilai, jangka waktu, ruang lingkup pekerjaan, atau identitas pihak perlu ditangani sesuai mekanisme perubahan yang berlaku dan tidak boleh diasumsikan otomatis mengubah seluruh ketentuan lainnya.
Pelajaran utamanya adalah bahwa kesalahan kecil pada suatu bagian dapat memengaruhi keseluruhan sistem. Karena itu, pemeriksaan konsistensi perlu menjadi bagian dari proses kerja, bukan hanya dilakukan ketika masalah telah muncul.
8. Apakah Penyusunan Kontrak Bisa Dibantu dengan Python?
Jawabannya bisa, khususnya untuk tugas administratif dan pengolahan data yang terstruktur.
Python dapat digunakan untuk membantu membuat daftar kontrak, memeriksa kelengkapan kolom, menghitung periode, mengidentifikasi data yang belum diisi, atau menghasilkan draf dokumen berdasarkan templat.
Sebagai contoh, sistem sederhana dapat memeriksa apakah informasi dasar suatu kontrak telah tersedia:
kontrak = {
"nama_pihak": "PT Digital Nusantara",
"nilai_kontrak": 150_000_000,
"jangka_waktu_bulan": 12
}
kolom_wajib = [
"nama_pihak",
"nilai_kontrak",
"jangka_waktu_bulan"
]
for kolom in kolom_wajib:
if kolom not in kontrak or kontrak[kolom] is None:
print(f"Data belum tersedia: {kolom}")
Kode tersebut memeriksa keberadaan tiga kolom yang ditentukan sebagai informasi wajib. Jika suatu kolom tidak tersedia atau memiliki nilai "None", program akan memberikan pemberitahuan.
Pemeriksaan ini dapat membantu mengurangi kelalaian administratif. Akan tetapi, kode tersebut belum memeriksa apakah isi kontrak telah memenuhi persyaratan hukum, apakah identitas pihak benar, atau apakah rumusan klausul sudah melindungi kepentingan para pihak secara memadai.
Penggunaan Python dalam pekerjaan hukum karena itu lebih tepat diposisikan sebagai alat bantu administrasi dan pemeriksaan awal, bukan pengganti analisis hukum dan penelaahan dokumen oleh tenaga yang kompeten.
9. Kesimpulan: Coding dan Hukum Sama-Sama Membutuhkan Ketepatan Definisi
Coding dan penyusunan naskah hukum memiliki kesamaan dalam hal struktur, konsistensi, penggunaan istilah, serta hubungan logis antarkomponen.
Dalam Python, variabel memberikan nama kepada nilai yang dapat digunakan kembali dalam program. Dalam kontrak, istilah yang didefinisikan menyediakan acuan agar para pihak memahami ketentuan perjanjian secara konsisten.
Keduanya juga menunjukkan bahwa sebuah sistem tidak cukup hanya terlihat rapi. Sistem harus memiliki definisi yang tepat, hubungan antarkomponen yang jelas, dan mekanisme untuk menangani kesalahan.
Bagi mahasiswa hukum, mempelajari konsep variabel dan logika pemrograman dapat membantu mengembangkan cara berpikir yang terstruktur. Sementara itu, bagi programmer, memahami prinsip perumusan kontrak dapat memperluas wawasan mengenai bagaimana istilah, hak, kewajiban, dan kondisi perlu dirumuskan dengan jelas dalam hubungan profesional.
Pada akhirnya, coding dan hukum memang bukan bidang yang sama, tetapi keduanya dapat saling memberikan pelajaran. Ketika programmer menyusun kode dan praktisi hukum merumuskan kontrak, keduanya sedang berusaha membangun struktur yang dapat dipahami, digunakan secara konsisten, dan menghasilkan konsekuensi sesuai dengan aturan yang telah ditetapkan.
