Membuat Monitoring Progress Learner Menggunakan Python, Pandas dan Streamlit
- Habib Abdurrasyid
- 04 Apr, 2022
Kenapa Aku Bikin Ini
Waktu itu aku jadi Academic Program Manager buat program AWS re/Start, dan aku pegang beberapa cohort sekaligus. Tiap cohort punya gradebook Canvas LMS sendiri, dan satu gradebook bisa punya lebih dari 170 kolom dengan data yang campur-campur. Knowledge Check, Lab, nilai, flag completion — semuanya ada di satu file.
Awalnya, mereview tiap cohort secara manual masih aman. Tapi begitu programnya tumbuh jadi 10 cohort atau lebih per batch, cara manual ini mulai makan waktu terlalu banyak dan makin gampang salah.
Aku butuh cara yang lebih baik, jadi aku bikin tool-nya sendiri.
Masalahnya di Lapangan
Canvas LMS itu sebenarnya sistem yang bagus. Cuma gradebook yang dia ekspor dirancang supaya lengkap, bukan supaya gampang dibaca. Ini yang aku hadapi tiap minggu:
- Satu file CSV per cohort
- 170+ kolom per file, campur Knowledge Check, Lab, dan lain-lain
- Nggak ada pemisahan yang jelas antara nilai KC, completion Lab, dan data course umum
- Target progress mingguan yang harus dicek satu per satu buat tiap learner
Kalau cohort-nya 10, berarti 10 file dan ratusan baris yang harus dilewati manual. Waktu programnya juga jalan di India barengan, totalnya jadi lebih dari 40 cohort. Review manual sudah nggak masuk akal lagi.
Yang Aku Bangun
Aku bikin aplikasi web pakai Python, Pandas, dan Streamlit. Idenya: bikin sesimpel mungkin — upload file, dapat hasil.
Alurnya kayak gini:
graph LR
A[Upload CSVs] --> B[Parse Data]
B --> C[Aggregate KC and Lab]
C --> D[Check Weekly Targets]
D --> E[Download Summary]
Nggak ada setup yang ribet. Yang pakai tool ini adalah program coordinator, bukan engineer, jadi interface-nya harus langsung bisa dipahami.
Yang dilakukan aplikasinya:
- Menerima beberapa upload CSV sekaligus (satu per cohort)
- Otomatis mencari dan mem-parsing kolom Knowledge Check
- Otomatis mencari dan mem-parsing kolom completion Lab
- Menghitung progress tiap learner terhadap target mingguan
- Menghasilkan summary per cohort yang rapi dan bisa di-download
Tech Stack
Aku pilih tools yang aku sudah kenal baik, yang bisa dibangun cepat dan tetap gampang di-maintain nanti.
- Python buat logika utamanya
- Pandas buat menangani DataFrame 170+ kolom tanpa jadi berantakan
- Streamlit karena bikin web UI yang jalan pakai Python hitungannya jam, bukan hari
- PythonAnywhere buat hosting, biar siapa pun bisa akses tanpa install apa-apa
Ini bukan stack paling canggih, tapi memang inilah yang pas buat masalah ini. Tool-nya harus jalan dengan andal dan bisa dipakai rekan tim yang non-teknis. Dan itu yang aku dapat dari stack ini.
Satu Tambahan: Leaderboard
Setelah tool utamanya jalan, aku menambahkan leaderboard progress yang bisa dilihat learner, pakai Google Sheets.
Idenya simpel. Learner bisa lihat nilai KC dan Lab mereka sendiri dibandingkan dengan yang lain di cohort-nya. Ini berefek dua hal:
- Mengurangi jumlah pesan reminder yang harus dikirim coordinator
- Memberi learner cara buat memantau diri sendiri tanpa harus menunggu ada yang memberi tahu bagaimana perkembangan mereka
Tambahan kecil, tapi bikin pengalaman keduanya jadi lebih enak.
Hasilnya
Tool ini akhirnya dipakai di beberapa batch:
- 3 batch AWS re/Start total
- 10+ cohort di Indonesia
- 40+ cohort di India
Waktu yang dibutuhkan buat memproses tiap batch turun jauh dibanding cara manual. Waktu yang tersisa itu bisa dipakai coordinator buat benar-benar mendampingi learner, bukan buat ngurus spreadsheet.
Yang Aku Ubah Kalau Membangunnya Lagi
Kalau dilihat balik, ada beberapa hal yang akan aku lakukan berbeda:
Ambil gradebook otomatis. Sekarang masih ada orang yang harus download file dari Canvas lalu upload-nya. Akan lebih baik kalau langsung tarik dari Canvas API.
Chart bawaan. Output-nya CSV yang rapi, tapi buat melihat tren dari waktu ke waktu masih perlu kerja ekstra. Menaruh chart dasar langsung di aplikasinya akan sangat membantu.
Timeline tracking. Sekarang tool-nya cuma menampilkan kondisi saat ini. Kalau progress dilacak per minggu, pola-pola awal akan lebih cepat kelihatan.
Tapi buat masalah yang sedang diselesaikan saat itu, tool ini sudah bekerja dengan baik.