Bagaimana Saya Menjaga Aturan Gaji, Kenaikan Pangkat, dan Pensiun Tetap Sejalan dengan Peraturan yang Berubah
On this page
- Pendahuluan
- A. Sistem yang bertindak menurut hukum
- B. Tempat aturannya sebenarnya tinggal
- C. Pendekatan yang saya tolak
- D. Dua belas hambatan yang menghalangi
- Metode
- A. Membaca peraturannya, lalu mengutipnya di samping aturan
- B. Tabel gaji sebagai data bertanggal berlaku
- C. Memeriksa tiap tabel terhadap tabel yang digantikannya
- D. Dua jenis kepegawaian, dua jalur peraturan
- E. Memuat tabel sekali saja
- F. Kenaikan gaji berkala berikutnya diambil dari tabel
- G. Kenaikan pangkat dengan syarat yang berurutan
- H. Batas usia pensiun dari jabatan
- I. Sistem menyarankan, admin memutuskan
- J. Setiap nilai dinilai menurut eranya
- K. Kedudukan hukum yang mengikuti peristiwa
- L. SK yang angkanya diambil dari record
- Hasil dan Pembahasan
- A. Yang berubah ketika peraturan berikutnya datang
- B. Kenapa kutipannya sama pentingnya dengan code
- C. Di mana pendekatan ini cocok
- Simpulan
- Istilah
Pendahuluan
A. Sistem yang bertindak menurut hukum
Sistem kepegawaian untuk ASN bukan cuma menyimpan record. Ia memberi tahu pegawai kapan kenaikan gaji berkalanya jatuh tempo, kapan ia memenuhi syarat naik pangkat, pada tanggal berapa ia pensiun, berapa gaji pokoknya, dan anggota keluarga mana yang berhak atas tunjangan. Semua jawaban itu ditetapkan peraturan — peraturan pemerintah, peraturan presiden, undang-undang, dan aturan badan kepegawaian nasional — bukan oleh organisasi yang menjalankan sistemnya.
Saya sedang membangun sistem seperti itu untuk satu pemerintah kota, sebagai pengganti sistem lama buatan tim lain. Sistem lama juga punya jawaban, tapi banyak di antaranya ditulis ke dalam code-nya bertahun-tahun lalu dan diam-diam menjadi usang ketika peraturan baru menggantikan yang lama. Perhitungan yang benar saat ditulis menjadi keliru pada hari peraturan baru berlaku, dan tak ada apa pun di code-nya yang mengumumkan kejadian itu.
Tantangannya: menjaga aturan gaji, kenaikan pangkat, dan pensiun tetap sejalan dengan peraturan yang menetapkannya — benar untuk tanggal yang dihitung, dan tetap benar sesudah peraturan berikutnya terbit.
Kedua paruh kalimat itu sama pentingnya. "Benar untuk tanggalnya" berarti gaji yang diterima pegawai pada 2018 dihitung menurut peraturan yang berlaku pada 2018, bukan menurut tabel hari ini, sebab riwayat, SK, dan koreksi semuanya merujuk ke masa lalu. "Tetap benar sesudah peraturan berikutnya" berarti tabel gaji baru atau aturan tunjangan baru semestinya cukup saya tambahkan, bukan memaksa saya menulis ulang dan menguji ulang code yang memakainya.
B. Tempat aturannya sebenarnya tinggal
Sumber kebenaran aturan-aturan ini bukan dokumen spesifikasi, melainkan himpunan peraturan yang diterbitkan negara, sering kali mengubah peraturan sebelumnya. Gaji pokok PNS berasal dari peraturan yang pertama terbit pada 1977 dan sudah berkali-kali diubah, dan setiap perubahan mengganti tabel gaji di lampirannya. Pegawai pemerintah dengan perjanjian kerja digaji menurut peraturan presiden yang lain, dengan perubahannya sendiri. Tunjangan pasangan dan anak berasal dari pasangan peraturan yang lain lagi. Batas usia pensiun, syarat kenaikan pangkat, dan penilaian kinerja masing-masing punya peraturannya sendiri.
Jadi sebelum menulis satu aturan pun, saya harus membaca peraturannya sendiri — pasal yang menetapkan syarat dan lampiran yang memuat tabel — bukan menyimpulkan aturan dari apa yang kebetulan dikerjakan sistem lama. Membaca code lama menunjukkan apa yang pernah diimplementasikan; hanya peraturan yang menunjukkan apa yang diwajibkan, dan ketika keduanya berselisih, peraturanlah yang menang.
C. Pendekatan yang saya tolak
Pendekatan paling sederhana adalah menulis tiap aturan sebagai code lengkap dengan angka di dalamnya: tabel gaji sebagai array, "dua tahun" untuk kenaikan gaji berkala, "empat tahun" untuk kenaikan pangkat. Saya menolaknya karena setiap peraturan baru berarti menyunting code, dan nilai lama lenyap begitu diganti, membawa serta setiap perhitungan historis.
Pendekatan sebaliknya adalah mesin aturan umum yang setiap syaratnya berupa konfigurasi. Itu juga saya tolak. Aritmetika aturan-aturan ini — menghitung bulan masa kerja, membulatkan tanggal ke periode kenaikan pangkat berikutnya, membandingkan gaji dua pasangan — lebih jelas dan lebih aman sebagai code yang teruji ketimbang konfigurasi yang tak bisa dibaca di satu tempat. Pendekatan yang saya pilih ada di antara keduanya: yang berubah ketika peraturan berubah adalah data bertanggal berlaku, dan yang tetap adalah code yang mengutip peraturan yang diimplementasikannya.
D. Dua belas hambatan yang menghalangi
Gampang dirumuskan, canggung dibangun. Dua belas rintangan berdiri di antara peraturan di atas kertas dan sistem yang menerapkannya dengan benar.
Hambatan pertama: aturan di sistem lama sudah usang, dan sumber sebenarnya adalah peraturannya sendiri. Menyalin perilaku sistem lama adalah alternatif yang ditolak, sebab ia akan setia menirukan aturan yang sudah diganti.
Hambatan kedua: tabel gaji berganti tiap peraturan, dan masing-masing berlaku sejak tanggal tertentu. Menimpa tabel lama dengan yang baru adalah alternatif yang ditolak; itu membuat setiap perhitungan lampau keliru.
Hambatan ketiga: lampiran peraturan harus ditranskripsi, dan satu sel yang salah ketik tak terlihat. Tabel gaji punya ratusan sel, dan memercayai transkripsi yang hati-hati adalah alternatif yang ditolak.
Hambatan keempat: PNS dan PPPK diatur peraturan yang berbeda. Memperlakukan keduanya sebagai satu skema gaji dengan beberapa pengecualian adalah alternatif yang ditolak.
Hambatan kelima: perhitungan ini dijalankan untuk semua pegawai sekaligus. Daftar jatuh tempo mengajukan pertanyaan yang sama kepada puluhan ribu pegawai, dan mencari tabel sekali per pegawai adalah alternatif yang ditolak.
Hambatan keenam: kenaikan gaji berkala berikutnya bukan sekadar "dua tahun lagi". Selang waktu yang tetap adalah alternatif yang ditolak; jenjangnya bergantung pada tabel gajinya sendiri.
Hambatan ketujuh: kelayakan naik pangkat punya syarat tanggal yang berlapis. Satu aturan "empat tahun sesudah kenaikan terakhir" adalah alternatif yang ditolak, karena hukuman, golongan tertinggi, dan pensiun semuanya mengubah jawabannya.
Hambatan kedelapan: batas usia pensiun bergantung pada jabatan. Satu batas usia untuk semua orang adalah alternatif yang ditolak.
Hambatan kesembilan: kelayakan tunjangan bergantung pada fakta keluarga yang tak sepenuhnya bisa dipercaya sistem. Membiarkan sistem memberi atau mencabut tunjangan sendiri adalah alternatif yang ditolak.
Hambatan kesepuluh: cara menilai kinerja sudah beberapa kali berganti. Menafsirkan setiap nilai lama dengan metode hari ini adalah alternatif yang ditolak.
Hambatan kesebelas: kedudukan hukum pegawai berubah otomatis karena peristiwa yang ditetapkan peraturan. Meminta admin menyetel dan memulihkannya dengan tangan untuk setiap cuti atau penugasan adalah alternatif yang ditolak.
Hambatan kedua belas: SK resmi wajib mengutip dasar hukumnya dan memuat angka yang cocok dengan record. Mengetik angka-angka itu ke template dokumen adalah alternatif yang ditolak.
Urutannya berjalan dari sumber ke luar. Yang pertama soal asal aturannya. Yang kedua sampai kelima soal tabel gaji, tempat hampir semua yang lain bergantung. Di dalam kelompok itu pun urutannya berarti: tabel harus bertanggal dan benar lebih dulu sebelum bisa dicek silang dengan tabel pendahulunya, dipisah menurut jenis kepegawaian, atau dimuat sekali untuk seluruh pegawai. Yang keenam sampai kesebelas adalah aturan yang memakai tabel itu dan riwayat pegawai, dan yang terakhir soal dokumen tempat aturan-aturan itu akhirnya sampai ke orang.
Metode
A. Membaca peraturannya, lalu mengutipnya di samping aturan
Inilah jawaban atas hambatan pertama: saya membaca peraturannya secara langsung — pasal untuk syarat, lampiran untuk tabel — dan setiap aturan di sistem mengutip peraturan yang diimplementasikannya, entah di tabel referensi yang memuatnya, entah di komentar di atas code yang menerapkannya. Ketika satu aturan dipertanyakan, jawabannya nomor peraturan, bukan ingatan tentang perilaku sistem lama.
B. Tabel gaji sebagai data bertanggal berlaku
Untuk hambatan kedua, setiap peraturan gaji adalah satu baris berisi jenis kepegawaian yang diaturnya, nomornya, dan tanggal mulai berlakunya, dan setiap peraturan punya tabel gajinya sendiri menurut golongan dan masa kerja. Untuk mencari gaji pada tanggal tertentu, sistem mengambil peraturan terbaru yang berlaku pada tanggal itu, lalu baris dengan masa kerja terbesar yang tak melebihi masa kerja pegawai.
Gaji pada 2018 karenanya dicari menurut tabel 2015 dan gaji pada 2024 menurut tabel 2024, tanpa kasus khusus, dan menambah peraturan berikutnya berarti menambah satu baris dan satu tabel.
Setiap nominal di tabel ini disimpan sebagai integer dalam satuan terkecil mata uang, konvensi uang yang saya jaga di semua sistem saya:
C. Memeriksa tiap tabel terhadap tabel yang digantikannya
Hambatan ketiga dijawab dengan membiarkan peraturan saling memeriksa. Setiap perubahan menaikkan semua gaji dengan persentase tetap — lima persen pada yang satu, delapan persen pada yang berikutnya — jadi setiap sel tabel baru wajib sama dengan sel padanannya di tabel lama ditambah persentase itu, dalam batas pembulatan yang dipakai peraturannya. Gaji juga wajib naik secara monoton menurut masa kerja dan golongan. Salah transkripsi mematahkan salah satu hubungan itu, dan pemeriksaannya gagal sebelum datanya sempat dipakai.
D. Dua jenis kepegawaian, dua jalur peraturan
Untuk hambatan keempat, jenis kepegawaian menjadi kolom pada peraturan dan pada golongan. PNS dan PPPK masing-masing punya golongan dan rantai peraturannya sendiri, sehingga pencarian tak pernah mencampurnya dan peraturan baru untuk yang satu tak pernah memengaruhi yang lain.
E. Memuat tabel sekali saja
Untuk hambatan kelima, tabel peraturan, golongan, dan gaji itu kecil dan jarang berubah, jadi setiap proses memuatnya sekali lalu menjawab setiap pencarian dari memori. Tanpa itu, daftar jatuh tempo untuk semua pegawai akan menjalankan beberapa query per pegawai — puluhan ribu query untuk satu halaman. Setiap perubahan pada tabel referensi itu mengosongkan salinan yang termuat, sehingga memori tak pernah menyajikan tabel yang usang.
F. Kenaikan gaji berkala berikutnya diambil dari tabel
Hambatan keenam dijawab dengan bertanya kepada tabel gaji, bukan kepada konstanta. Kenaikan berkala berikutnya jatuh pada tanggal 1 bulan ketika masa kerja golongan pegawai mencapai jenjang berikutnya yang memang tercantum di tabel golongannya. Bila satu peraturan mengubah letak jenjang itu, tanggal jatuh temponya ikut berubah tanpa mengubah code, dan nominal kenaikannya dibaca dari tabel, bukan diketik.
G. Kenaikan pangkat dengan syarat yang berurutan
Untuk hambatan ketujuh, tanggal jatuh tempo kenaikan pangkat menerapkan syaratnya berurutan: TMT golongan saat ini ditambah empat tahun, atau lima bila sejak itu pernah dijatuhi hukuman disiplin; dibulatkan maju ke periode kenaikan pangkat berikutnya yang berlaku; tak ada jatuh tempo pada golongan tertinggi; dan tak ada pada atau sesudah tanggal pensiun pegawai. Setiap pegawai yang jatuh tempo diberi tahu lewat email.
H. Batas usia pensiun dari jabatan
Hambatan kedelapan dijawab dengan menurunkan batas usia pensiun dari jabatan yang dipegang pegawai: pertama usia yang ditetapkan untuk posisi itu di peta jabatan kota, lalu usia di katalog jabatan nasional, dan selain itu bawaan 58 tahun. Pensiun berlaku pada tanggal 1 bulan sesudah pegawai mencapai usia itu. Hasilnya disimpan sebagai tanggal turunan dan dihitung ulang setiap kali tanggal lahir atau jabatan berubah, serta sekali sehari untuk jabatan yang bertanggal ke depan.
I. Sistem menyarankan, admin memutuskan
Untuk hambatan kesembilan, aturan tunjangan keluarga diimplementasikan sebagai penasihat, bukan pemutus. Satu pasangan yang masih hidup dari perkawinan yang masih berlangsung berhak; bila suami-istri sama-sama PNS, hanya yang gaji pokoknya lebih tinggi yang menerima. Paling banyak dua anak berhak, atau tiga bila anak ketiga lahir sebelum 1 Maret 1994, dan anak harus berusia di bawah 21, atau sampai 25 selama masih bersekolah. Untuk tiap anggota keluarga, penasihat itu menjawab ya, tidak, atau "perlu tinjauan", beserta alasannya.
Keputusannya tetap di tangan admin, sebab fakta yang menjadi pijakan aturannya — apakah anak masih sekolah, apakah pasangan bekerja di instansi lain — sering kali sudah basi. Saran beserta alasannya mempercepat kerja admin tanpa membiarkan data basi menentukan gaji seseorang.
J. Setiap nilai dinilai menurut eranya
Hambatan kesepuluh dijawab dengan tabel era penilaian: sistem penilaian lama sampai 2013, sistem sasaran kinerja 2014 sampai 2021, tahun transisi menurut peraturan 2019, dan matriks rating yang berlaku sejak 2022. Setiap era mencatat tahun yang dicakupnya dan cara menilainya, sehingga satu nilai ditafsirkan menurut metode yang menghasilkannya. Ketika rentang di dalam satu peraturan saling tumpang tindih, sistem tidak memilih predikat secara otomatis; penilaian itu tetap pada manusia.
K. Kedudukan hukum yang mengikuti peristiwa
Untuk hambatan kesebelas, peristiwa yang menurut peraturan mengubah kedudukan hukum pegawai — cuti di luar tanggungan negara, tugas belajar, pemberhentian, mutasi keluar — menetapkan kedudukan itu selama periode yang dicakupnya lalu memulihkannya sesudahnya. Jenis cuti mana yang berdampak demikian adalah penanda pada jenis cuti di tabel referensinya, bukan syarat di dalam code. Kedudukan yang ditetapkan admin dengan tangan tak pernah ditimpa perubahan otomatis ini.
L. SK yang angkanya diambil dari record
Hambatan kedua belas dijawab dengan membangkitkan draf SK dari record, bukan mengetiknya. SK kenaikan gaji berkala mengutip peraturan yang menjadi dasarnya dan mengambil setiap angka — golongan, masa kerja, gaji lama dan baru, tanggal berlaku — dari data yang dihasilkan aturan-aturan di atas. SK yang hanya boleh diterbitkan badan nasional, seperti kenaikan pangkat dan pensiun, diunggah sebagaimana diterima, bukan dibangkitkan.
Hasil dan Pembahasan
A. Yang berubah ketika peraturan berikutnya datang
Ketika peraturan gaji baru terbit, pekerjaannya kini adalah mentranskripsi lampirannya ke tabel baru, menambah satu baris dengan tanggal berlakunya, dan menjalankan pemeriksaan silang terhadap tabel yang digantikannya. Tak ada perhitungan yang perlu ditulis ulang: gaji masa lalu tetap memakai tabel pada zamannya, dan tanggal jatuh tempo serta kenaikan berkala ke depan mengikuti tabel baru secara otomatis.
B. Kenapa kutipannya sama pentingnya dengan code
Setiap aturan di sistem kini bisa ditelusuri ke satu peraturan. Itu ternyata sama bergunanya dengan perhitungannya sendiri: ketika satu hasil dipertanyakan, pembicaraannya tentang isi peraturan, bukan tentang kerja program, dan orang yang bertanggung jawab atas kepegawaian bisa memeriksa sumbernya sendiri.
C. Di mana pendekatan ini cocok
Memisahkan data yang berubah karena peraturan dari aritmetika yang mengimplementasikannya cocok untuk ranah apa pun yang diatur aturan terbitan yang diubah dari waktu ke waktu: penggajian, perpajakan, bantuan sosial. Ia tidak menghapus keharusan membaca peraturannya; ia menjadikan membaca peraturan sebagai pekerjaan utama, dan menyimpan hasil bacaan itu di satu tempat yang bisa diperiksa.
Simpulan
Aturan yang berasal dari peraturan bukan milik code yang menerapkannya, dan aturan itu tidak diam. Menjaganya tetap benar bermuara pada satu pemisahan: apa yang diubah peraturan — tabel gaji, era penilaian, dampak satu jenis cuti — adalah data bertanggal berlaku, dan yang tetap adalah aritmetika, ditulis sebagai code yang menyebut peraturan yang diimplementasikannya.
Kebiasaan yang akan saya bawa ke sistem teratur mana pun: membaca peraturannya sendiri, bukan sistem yang ada sebelumnya. Code lama menunjukkan apa yang pernah diputuskan seseorang; peraturan menunjukkan apa yang diwajibkan sekarang, dan sistem yang mengutipnya bisa diperiksa oleh orang-orang yang dilayaninya.
Istilah
- Kenaikan gaji berkala
- Kenaikan gaji dalam golongan yang sama, yang jatuh tempo ketika masa kerja pegawai mencapai jenjang berikutnya di tabel gaji.
- Tanggal berlaku
- Tanggal mulai berlakunya satu peraturan; tanggal sebelumnya tetap diatur peraturan yang digantikannya.
- Batas usia pensiun
- Usia saat pegawai wajib pensiun, yang bagi ASN bergantung pada jabatan yang dipegangnya.
Technologies covered
- PHP