Menerapkan Computational Thinking untuk Masalah Inkonsistensi Data App Remunerasi

Bismillahirrohmaanirrohiim. Alhamdulillahi Robbil 'Alamiin. Allahumma Sholli 'Alaa Sayyidinaa Muhammad.

Siang itu, saya baru sampai kantor. Saya datang lebih siang dari biasanya karena mengantar istri kontrol kandungan ke Puskesmas. Baru sebentar saya duduk dan melihat-lihat layar komputer, atasan saya mengirim chat di grup.

"Mas Muslim, ke ruangan saya."

Seperti karyawan pada umumnya, saya menjawab, "baik, Pak."

Saya langsung menuju ke ruangan beliau. Tanpa basa-basi yang lama, saya langsung dijelaskan perihal masalah yang ada di aplikasi yang saya kembangkan.

"Datanya tidak konsisten," jelas beliau sambil menunjukkan letak data mana yang tidak konsisten. Data itu adalah data yang lumayan penting dan jika ada kesalahan, akibatnya fatal. Ya. Data itu adalah data catatan yang berhubungan dengan uang.

Kemudian, beliau menjelaskan tentang konsep mengenai pencatatan akuntansi. Beliau mengira bahwa saya sudah tahu tentang hal tersebut. Saya pun dengan agak kikuk menjawab, "belum tahu, Pak."

Well, intinya adalah data saya perlu dijadikan konsisten. Apabila ada kesalahan data setelah dilakukan pembayaran, tidak apa-apa. Nanti, kita lakukan pembenaran catatan, namun pada record data yang lain.

Oke. Setelah rapat singkat di ruangan beliau, saya kemudian berfikir mengenai beberapa hal yang perlu saya lakukan. Masalah utamanya adalah pencatatan data tentang jabatan yang tidak independen.

Data jabatan tersebut sangat tergantung dengan data yang ada di sistem lain. Hal ini menyebabkan jika data pada sistem lain dihapus atau diubah, data jabatan di app remunerasi bisa berantakan di sisi tampilannya.

Dari sini, saya mulai coba menerapkan apa yang pernah saya pelajari di materi Computational Thinking. Dalam computational thinking, saya diajari bahwa cara untuk menyelesaikan masalah adalah "dengan menguraikan setiap masalah menjadi beberapa bagian atau tahapan yang efektif dan efisien".

Anyway, saya pertama kali belajar computational thinking dari kursus online oleh University of Michigan. Sementara itu, kalimat yang saya kutip di atas berasal dari blog Dicoding.

Masalah Utama

Oke. Jadi, masalahnya apa?

Ya. Seperti yang saya catat di catatan saya, masalahnya adalah data di aplikasi remunerasi tidak konsisten karena bisa berubah meskipun sudah tercatat dibayar.


Submasalah

Dari masalah yang sangat umum tersebut (menurut saya, masalah tersebut sangat umum karena tidak bisa diselesaikan dengan sekali atau dua kali klik mouse), saya membaginya menjadi dua masalah utama.

Dua submasalah tersebut adalah:

  1. Data P1 bisa berubah meskipun sudah dibayarkan ketika ada data jabatan disinkronisasi ulang.
  2. Data rekap informasi jabatan ikut berubah ketika ada data di master yang diubah.

Pada hari saya menulis ini, saya akan berfokus terlebih dahulu pada masalah yang menurut saya lebih penting, yaitu submasalah nomor 2.

Breakdown Submasalah Nomor 2

Dari submasalah "Data rekap informasi jabatan ikut berubah ketika ada data di master yang diubah" tersebut, saya merasa perlu memecahnya kembali menjadi masalah yang lebih kecil. Hal tersebut karena pencatatan jabatan tersebut tidak hanya berdampak pada satu proses, tetapi beberapa proses.

Secara garis besar, saya membagi submasalah tersebut menjadi dua masalah yang perlu diperbaiki. Pembagiannya adalah sebagai berikut:

  1. Tampilan jabatan tidak konsisten. Hal ini karena beberapa data jabatan tidak tersimpan secara paten, tetapi mengambil data yang ditampilkan berdasar data yang ada di data master.
  2. Data jabatan sangat tergantung dengan perubahan data di SIMPEG (Sistem Informasi Kepegawaian). Apabila ada data yang dihapus pada sistem tersebut, data di aplikasi remunerasi, meskipun hanya tampilan, akan menjadi berantakan.

Solusi

Setelah saya merasa masalah yang saya pecah sudah sampai pada bagian yang paling kecil, inilah saatnya saya memikirkan solusi untuk tiap masalah yang ada.

Pertama, saya telah merumuskan langkah-langkah untuk memperbaiki breakdown submasalah nomor 2-1. Solusi utama dari masalah tersebut adalah membuat data informasi jabatan di tampilan P2 aplikasi remunerasi menjadi konsisten. Caranya adalah:

  • Buat tabel untuk menyimpan data informasi jabatan.
  • Isi tabel dengan data informasi jabatan sesuai data di masa lalu menggunakan query biasa. Hal ini untuk mengisi kekosongan data di masa lalu menggunakan data yang sesuai secara cepat.
  • Update API remunerasi P2 agar mengambil data dari tabel informasi jabatan.
  • Update API sinkronisasi jabatan agar memperbarui tabel informasi jabatan secara otomatis.
  • Buat API sinkronisasi jabatan tidak bisa sinkronisasi ulang ketika P1 pada bulan tersebut sudah dibayarkan.

Kemudian, saya juga telah merumuskan langkah-langkah untuk memperbaiki breakdown submasalah nomor 2-2. Solusi utama dari masalah tersebut adalah membuat data rekap jabatan menjadi tidak tergantung SIMPEG ketika data di SIMPEG berubah. Caranya adalah:

  • Tambah kolom untuk menyimpan data satuan kerja, kode satuan kerja, dan kode jabatan di tabel rekap jabatan.
  • Isi kolom dengan data satuan kerja, kode satuan kerja, dan kode jabatan sesuai data di masa lalu.
  • Update API yang mengambil data rekap jabatan agar mengambil data dari tabel rekap jabatan.
  • Update API sinkronisasi jabatan agar memperbarui kolom satuan kerja, kode satuan kerja, dan kode jabatan secara otomatis.

Saya juga sudah mencatatnya di aplikasi yang biasa saya gunakan untuk mencatat perubahan apa yang akan saya lakukan di aplikasi yang saya kerjakan, Everote. Catatan tersebut saya lengkapi juga dengan versi menggunakan sistem versioning X.Y.Z (semantic versioning) untuk mencatat perubahannya. Tujuan saya adalah agar saya tidak perlu mengetik hal random saat saya melakukan commit ke git atas perubahan kode yang saya buat.


 

Selanjutnya, saya akan melakukan perubahan yang diperlukan tersebut.

Referensi

  1. https://www.coursera.org/learn/compthinking
  2. https://www.dicoding.com/blog/apa-itu-computational-thinking/
  3. https://www.geeksforgeeks.org/introduction-semantic-versioning/

Wallahul muwafiq ilaa aqwamith thooriq.

Komentar

Postingan populer dari blog ini

Update dari Composer 1 ke Composer 2 di Ubuntu 20.04

Cara Mengatasi "Access denied for user 'root'@'localhost' (mysqli_real_connect(): (HY000/1698))" di Ubuntu 20.04 LTS

Cara Mengatasi "Login without a password is forbidden by configuration (see AllowNoPassword)" di Ubuntu 20.04 LTS