Penggunaan Software Versioning di Kelas Pemrograman


Ini cerita sebenernya sudah pengen saya tulis sejak 2 tahun lalu, tapi karena alasan “malas” dan dalih “saya bukan penulis”, karena itu baru tertuangkan sekarang. Sehingga ini jadinya rapel kisah 2 tahun yang lalu.

Sejak akhir tahun 2013, saat saya baru pertama kali mengajar penuh 2 kelas pemrograman, saya sudah ingin sekali mengajarkan bagaimana cara Collaborative coding dan Software Versioning atau Version Control kepada mahasiswa. Terlebih karena kelas yang saya ajar saat itu adalah prodi D3, di mana saya merasa hal tersebut sangatlah penting bagi mereka. Bagi saya -dan ditekankan oleh rekan-rekan saya- bahwa fatal hukumnya jika lulusan informatikan tapi tidak mengetahui apa itu software versioning, tidak mengetahui apa itu Git atau SVN. Padahal hal tersebut sangat digunakan di dunia kerja Programmer.https://grollchristian.files.wordpress.com/2013/09/git-logo.jpgNamun pada saat itu saya masih dalam tahap meraba-raba bagaimana cara terefektif dan terefisien dalam mengajar dan menyampaikan informasi. Karena itu pada tahap ini saya belum berani ngapa-ngapain. Dosen baru kok mau macem-macem.

Tapi pada saat itu saya sudah bertekad suatu saat akan mengajarkannya. Karena saya tahu bagaimana umumnya proses pengerjaan tugas besar di IF, terutama tugas besar yang bersifat koding adalah:

satu kelompok, satu yang ngoding, sisanya supporter.

I DON’T LIKE IT.
Well, tapi ya gimana lagi, selama ini cara mereka mengerjakan adalah seperti itu. Kalau setiap anggota mengerjakan masing-masing, mereka merasa kesulitan saat menggabungkannya. Harus transfer sana-sini menggunakan flash disk atau di-email, lalu kodingnya harus ditulis versinya:

versi 1, versi 2, versi bener, yang ini, fix, dll.

Dari situ kebanyakan mereka menyimpulkan bahwa ngerjain di dalam satu komputer adalah cara yang paling efektif, karena selama mereka tidak pernah diberikan informasi adanya tools yang dapat membantu mengatasi permasalahan tersebut. Padahal penggunaan tools tersebut sangat digunakan terutama jika mereka lulus ingin menjadi seorang Programmer.


So, awal tahun 2014, semester ini saya sudah mulai mengajar kelas program studi S1. Di semester itu saya mulai mengajarkan materi collaborative coding dan software versioning ke mahasiswa di materi Pemrograman Berbasis Objek. Namun pada saat itu saya masih ragu untuk mengajarkan Git atau SVN ke mahasiswa. Salah satu alasannya adalah karena saya takut mereka ngga ngerti cara makainya dan apa gunanya.

Karena itu, dengan dalih fungsinya adalah biar setiap mahasiswa bisa ngerjain tugas besar tanpa harus ketemu di suatu tempat tertentu; tanpa harus ngerjain tugas di komputer yang sama, dan masing-masing bisa mengerjakan bagiannya di komputer masing-masing namun hasilnya secara otomatis tetap terhubung dan disatukan, pada 2 kelas OOP saat itu saya ajarkan cara Collaboration menggunakan fitur Developer Collaboration dari IDE Netbeans, IDE yang saat itu digunakan di kelas. Well, pada kondisi itu saya masih pada tahap inisiasi, jadi hasilnya tidak terlalu memuaskan. Terlebih karena memang waktu untuk mahasiswa mengeksplor fitur tersebut. So, I thought, it’s fine, for now.


Semester baru dimulai, saya masih mencoba merencanakan bagaimana cara memasukkan fungsionalitas Git ke dalam materi, dan selama setahun berikutnya saya hanya memberikan sosialisasi mengenai GitHub kepada mahasiswa. Saya memilih GitHub karena pada saat itu GitHub mulai booming dengan segala keunggulannya mengalahkan TortoiseSVN yang biasa saya gunakan dulu. Setahun saya mensosialisasikan sembari merencanakan proses pembelajaran dan penugasan yang akan memanfaatkan kemampuan GitHub.

Lalu, pada akhir tahun 2014, di tengah saya sedang mensosialisasikan penggunaan GitHub, saya menemukan sebuah artikel yang ditulis oleh Sébastien Saunier berjudul “Practical example of using git in a school”.
Then I thought, THIS IS IT.
Ini adalah sumber yang saya butuhkan, materi mengenai penggunaan Git di sekolah. Mekanisme yang diusulkan adalah agar sang pengajar membuat repositori yang berisi tugas yang harus dikerjakan oleh siswa, kemudian siswa diharuskan untuk melakukan Fork pada repositori tersebut dan mengerjakan sendiri di repositori masing-masing.

Dengan mekanisme ini, proses pengerjaan setiap siswa, baik individu maupun kelompok dapat dipantau dan pengerjaan secara kelompok/kolaboratif untuk mengerjakan sebuah program secara bersama-sama juga dapat dilakukan.


Semester genap awal tahun 2015 saya mulai menginstruksikan mahasiswa di kelas untuk segera membuat akun GitHub dan mengerjakan Tugas Besar secara kolaboratif menggunakan GitHub. Tapi lagi-lagi, karena saat itu saya masih dalam masa perancangan proses pengajaran menggunakan GitHub, hasilnya tidak lebih dari setengah kelas yang sempat menggunakan fitur GitHub yang ada. OK, tidak apa, milestone semester ini berarti paling tidak ada 2 kelas di mana mahasiwanya sudah memiliki akun GitHub.

Semester ganjil tahun ajaran 2015/2016 saya mulai menjalankan rencana untuk memberikan pengajaran menggunakan fitur GitHub. Semester ini saya mengajar kelas Algoritma Struktur Data, Rekayasa Aplikasi Internet, dan -yang membuat saya terkejut- Praktikum Pencarian Informasi. Praktikum yang sejak awal mendengar materinya 2 tahun yang lalu saya merasa ini Praktikum yang materinya absurd, praktikum kok bukan kaya praktikum. Sontak langsung terpikir untuk mengajukan perubahan materi di Praktikum ini dan memasukkan materi GitHub kedalamnya. Tujuannya agar bahkan mahasiswa semester 1 pun langsung mengetahui adanya tool bernama GitHub tersebut. Saya sudah sangat bersyukur saat materi GitHub benar-benar diberikan di praktikum tersebut, tapi saya tidak merencanakan untuk mengevaluasi hasilnya. Well, lebih baik fokus ke 2 materi yg memang direncanakan saja.

Pada 2 kelas ASD dan 1 kelas RAI, saya coba terapkan mekanisme pemberian tugas, pengerjaan, pengumpulan, dan penilaian baik tugas harian maupun tugas besar melalui fitur GitHub mengadopsi mekanisme pengajaran dari artikel Sébastien Saunier. Saya tidak bisa mengatakan bahwa prosesnya tanpa hambatan, banyak sekali kendala dari mahasiswa yang memang banyak belum tahu mengenai fitur tool tersebut, kesiapan mahasiswa, dan yang terpenting kemauan. Kebanyakan karena banyak mahasiswa yang belum paham mengenai manfaat akan tool tersebut.

Salah satu pukulan terbesar saya adalah di salah satu kelas, baru sampai tugas ke-2 yang saya berikan melalui tool tersebut, seorang mahasiswa menghampiri saya dan meminta agar pengumpulan tugas kembali ke cara konvensional. Saat saya tanya kenapa harus kembali ke cara konvensional? ia mengatakan -yang akan saya quote-

saya tidak merasakan adanya manfaat dari github.

Wow, saya bilang dalam hati. Kamu bisa mengatakan demikian karena kamu belum merasakan dunia kerja programmer, nak. Kalau sudah kerja serbagai programmer, di mana program dikerjakan tidak oleh kamu sendiri, kamu masih mau ngumpulin code kamu dengan cara konvensional? Kamu kira ini masih jaman segitu? Katanya Informatika? Saat saya ceritaka kejadian hari itu melalui twitter, teman saya menjawab twit saya dan membalasnya dengan sebuah twit -yang akan saya quote-

saya tidak merasakan manfaat programmer yang tidak bisa git *sigh*

Terlebih lagi, salah satu alasan saya terdorong agar artikel ini segera jadi adalah, pada awal semester genap 2015/2016, Pak Dekan menyatakan bahwa target buat lulusan IF ditujukan untuk industri 5 tahun ke depan. Saat itu kalau boleh saya nyinyir, saya ingin mengatakan: target untuk industri, tapi git aja ga tahu. Lalu nyinyiran saya dibalas oleh teman saya -yang saya quote-

kalaiu ga mau jadi programmer ga perlu ngerti github pak #eh.

Well, ga salah juga sih, tapi….
Kalau mau ditambahkan lagi, bisa dilihat di beberapa lowongan pekerjaan programmer akhir-akhir ini sudah pada meminta akun github pelamarnya. Karena di situ pihak perusahaan dapat melihat track record programming sang pelamar. Ga percaya? Bisa coba baca baik-baik lowongan-lowongan yang pernah di-share di HIC

Anyway, di akhir semester ganjil kemarin, saya belum bisa menyimpulkan bahwa mekanisme yang saya terapkan berhasil atau sukses, masih banyak hal yang perlu dievaluasi. Namun paling tidak sudah bertambah minimal 3 kelas yang sudah tahu dan mengenal lebih dalam mengenai Git dan Software Versioning. Semester ini saya coba tetap menerapkan penggunaan GitHub untuk pengerjaan tugas dan tugas besar. Sebagai tambahan, saya coba memeperkenalkan model Scrum ke dalam proses pengerjaan Tugas Besar. Kelihatannya memang susah, tapi sebenernya ya simple, kok. Asal semua mau mencoba dan berusaha. Jadi, untuk sekarang kita coba aja dulu.

Saya cuma bisa berharap bahwa ilmu yang saya berikan bisa berguna.

,

3 responses to “Penggunaan Software Versioning di Kelas Pemrograman”

    • dengan adanya software versioning, semua update (chekpoin) terhadap file terekam, dan kita bisa kembali ke suatu checkpoin terdahulu setiap saat.

      jadi setiap ada perubahan penting, ga harus bikin file versi1, versi2, yang ini, dll dsb,

      dan kalau ada salah2 bisa sewaktu-waktu di-rollback

Leave a Reply