Menjadi Lead Programmer di Propensi: Apa aja yang harus disiapin?

Muhammad Azis Husein
Experience Worth Sharing
6 min readAug 28, 2021

--

Hello, readers! Pada kesempatan kali ini saya ingin bercerita sedikit mengenai pengalaman saya menjadi Lead Programmer di mata kuliah Propensi. Pengalaman ini hanya berdasarkan perspektif pribadi saya ya, jadi tidak berarti secara umum pengalaman menjadi Lead Programmer di Propensi ini akan persis seperti apa yang saya alami. Karena setiap kelompok dan setiap proyek punya dinamikanya masing-masing.

Sekilas Terkait Propensi

Propensi merupakan akronim dari Proyek Pengembangan Sistem Informasi, yaitu salah satu mata kuliah dari program studi Sistem Informasi. Matkul ini biasanya diambil di semester enam perkuliahan dan memiliki bobot sebesar 6 sks. Pada mata kuliah ini, intinya mahasiswa akan mengerjakan sebuah proyek dari klien bersama dengan kelompoknya yang beranggotakan 5 mahasiswa.

Proses pengerjaan proyek di Propensi dituntut untuk melalui tahapan-tahapan penuh dari Software Development Life Cycle (SDLC). Mulai dari tahap analisis hingga tahap implementasi. Karena dituntut untuk melalui tahapan secara penuh, maka dalam satu kelompok, setiap anggotanya akan memegang peran yang berbeda-beda. Peran-peran yang tersedia antara lain Project Manager, System Analyst, Lead Programmer, System Designer, dan Technical Writer and Tester. Akan tetapi pada kesempatan kali ini, kita hanya akan membahas mengenai peran Lead Programmer.

Seperti terlihat dari nama perannya, mungkin sudah cukup tergambar apa sebenarnya tugas dari seorang Lead Programmer. Ya, tentu tugas utamanya adalah membimbing anggota kelompok lainnya dalam melaksanakan programming di tahap implementasi. Apakah hanya Lead Programmer hanya bertugas saat tahap implementasi saja? Tentu tidak, karena di matkul ini, setiap mahasiswa diharapkan memahami setiap proses yang ada. Oleh karena itu Lead Programmer juga harus membantu pengerjaan di tahap analisis, desain, dan penulisan dokumen.

Note: setiap anggota memiliki use case masing-masing untuk dikerjakan dari mulai analisis hingga implementasinya

Alasan Menjadi Lead Programmer

Jadi sebelum masuk masa perkuliahan Propensi, kita akan diminta untuk mengisi sebuah Google formulir yang kurang lebih isinya adalah mengurutkan prioritas peran yang ingin kita ambil. Saat itu dari awal saya memang sudah memilih Lead Programmer di prioritas pertama disusul oleh Project Manager di prioritas kedua. Kenapa sih saya memilih peran ini? Jawaban singkatnya adalah karena menurut saya hanya peran itu yang bisa saya lakukan (saya tidak berbakat di bidang desain, menjadi desainer bukan cita cita saya, sedangkan untuk menjadi system analyst saya juga harus mempertimbangkan nilai Analisis Perancangan Sistem saya yang belum memuaskan).

Sebenernya alasannya sesederhana itu aja sih. Ditambah saat sudah terbentuk kelompok (anggotanya ini disusun oleh dosen ya jadi tidak bisa memilih), ternyata memang tidak ada anggota lain yang memprioritaskan peran untuk menjadi Lead Programmer. Maka peran itulah yang saya jalani selama perkuliahan Propensi ini.

Hal-Hal yang Harus Dipersiapkan

Pada dasarnya karena Propensi adalah sebuah mata kuliah di mana mahasiswa mengikutinya untuk belajar, maka hal terpenting yang harus disiapkan oleh semua peserta kuliah ini (tidak hanya Lead Programmer) adalah mindset untuk mau belajar dan mengeksplor hal baru. Akan tetapi karena proyek yang dijalani adalah proyek real dari klien, maka kita sedikit banyak harus menguasai dan harus sudah memahami materi kuliah ini sejak awal mata kuliah ini berjalan. Untuk itu ada beberapa hal dasar yang harus kita siapkan untuk menghadapi matkul ini, khususnya pada tulisan ini untuk Lead Programmer.

Hal dasar pertama yang harus dimiliki adalah tech stack. Karena kita akan mengembangkan sebuah sistem informasi, tentunya kita membutuhkan teknologi untuk dapat mengimplementasikannya. Maka dari itu, sebagai seorang Lead Programmer, minimal kita harus menguasai satu tech stack mulai dari front-end, back-end, dan database sehingga dapat menghasilkan suatu software. Hal ini cukup penting karena pada prosesnya nanti Lead Programmer-lah yang harus membantu anggota lainnya memahami tech stack yang digunakan untuk mengembangkan sistem

Hal dasar kedua yaitu git workflow. Karena dalam prosesnya kita akan bekerja secara paralel dengan anggota kelompok kita, maka setidaknya Lead Programmer harus memiliki sedikit pemahaman dasar terkait git workflow dan menyiapkan skema pengembangan untuk menghindari banyaknya conflict pada repositori proyek saat pengembangan berlangsung. Hal ini dapat menghemat waktu jika skema pengembangan dibuat dengan baik dan mudah dipahami oleh anggota kelompok lainnya.

Selanjutnya yang ketiga adalah basic deployment. Hal ini cukup penting karena sistem yang kita buat akan kita deploy setelah seluruh fase selesai dijalankan. Jika Lead Programmer sudah memiliki basic pemahaman terkait deployment (minimal heroku), itu akan mempermudah pekerjaan di akhir mata kuliah Propensi.

NB: segitu dulu, kalau mau tau lebih detail bisa langsung tanya-tanya aja ke kakak tingkat yang sudah pernah ambil matkul Propensi (*hal-hal di atas cuman opini saya aja ya!)

Sedikit Pengalaman Saya

Menjadi seorang Lead Programmer di mata kuliah ini ternyata tidak semulus mengerjakan proyek IT yang pernah saya kerjakan sebelum-sebelumnya. Di awal saya berekspektasi bahwa yang akan saya lakukan cukup membagi-bagi tugas untuk dikerjakan setiap anggota kelompok dan me-review hasilnya sebelum melakukan merge ke base branch. Akan tetapi pada realisasinya, tidak semua anggota kelompok memiliki intensi yang positif terhadap programming sehingga seringkali kita juga harus memotivasi anggota lainnya untuk bisa melakukan tugasnya semaksimal mungkin.

Awalnya saya agak turun semangat melihat realita ini, tapi setelah dipikir-pikir, hal tersebut wajar saja terjadi karena memang tidak semua mahasiswa Fasilkom (terutama Sistem Informasi) memiliki tujuan karir ke arah programming. Maka di situ tugas Lead Programmer bukan hanya sekedar membagi tugas dan me-review pekerjaan anggota lainnya, namun tugas Lead Programmer juga untuk memberikan contoh, membimbing, serta memotivasi anggota lain untuk memaksimalkan apa yang mereka miliki. Pada akhirnya, seorang Lead Programmer juga harus bisa mengatur ekspektasinya terhadap apa yang dikerjakan oleh kelompok. Karena kembali lagi, definisi sistem yang baik dalam mata kuliah ini bukanlah sistem yang super bagus, tapi sistem yang baik adalah sistem yang selesai.

Walaupun harus mengatur ekspektasi, bukan berarti sistem ini dibuat yang penting selesai aja ya, karena sebenarnya ini kesempatan yang bagus banget buat kita ngerasain environment pengembangan sistem secara semi-real. Jadi, kita tetap harus berusaha seoptimal mungkin untuk membuat sistem yang baik. Untuk mengoptimalkan proses implementasi, maka ada beberapa tips untuk dilakukan seorang Lead Programmer pada mata kuliah ini:

  1. Usahakan cari client yang demand tech stack-nya sudah pernah digunakan atau minimal familiar oleh Lead Programmer dan anggota lainnya
  2. Jika client tidak memiliki demand tech stack (dibebaskan), maka coba tawarkan kepada anggota kelompok tech stack apa saja yang dikuasai oleh Lead Programmer dan tanyakan yang mana yang paling familiar untuk mereka
  3. Setelah mendapat client, menentukan requirement kasar, dan menentukan tech stack, Lead Programmer sebisa mungkin langsung menginisiasi pembuatan repository yang dilengkapi dengan penjelasan pre-requirement, set up environment guide, workflow dan code convension pada README.md agar anggota lain dapat mulai menyiapkan dari jauh-jauh hari
  4. Ketika sudah memasuki fase desain (satu fase sebelum implementasi), sebisa mungkin Lead Programmer mulai mengerjakan base code, initial feature, dan sedikit use case-nya untuk dijadikan contoh code oleh anggota lainnya ketika masuk fase implementasi nanti

Kurang lebih itu sedikit tips dari saya untuk kalian yang berniat mengambil role ini pada saat Propensi nanti. Untuk lebih jauhnya, boleh banget nih kalau mau nanya-nanya ke kakak tingkat yang sudah pernah mengambil mata kuliah Propensi.

Note: sedikit reminder lagi, ketika melihat hasilnya, kemungkinan kita akan merasa sangat tidak memenuhi ekspektasi. Akan tetapi ga perlu terlalu resah, yang terpenting tunjukkan gimana effort dan keseriusan kalian dalam mengerjakan proyek ini. Dosen gak cuman nilai dari hasil akhirnya aja kok, tapi setiap tahap yang dijalani itu dilihat sama dosen dan asdos

What I Get From Propensi

Oke bagian ini mungkin singkat aja buat penutupan. Kalau masalah jam terbang mengerjakan proyek pastinya bisa banget didapetin di mata kuliah ini. Pengalaman ngoding juga jelas saya dapetin banget di sini. Akan tetapi menurut saya, hal yang benar-benar menambah wawasan saya selepas mata kuliah ini adalah bagaimana mencoba membuat teman-teman kita yang sebenernya gak terlalu punya minat ke programming, tapi tetep mau untuk mengerjakan use case nya masing-masing terlepas dari seberapa perfect hasilnya nanti. Dari mata kuliah ini saya juga belajar untuk menghargai dan mengapresiasi hasil kerja keras tim terlepas dari seberapa banyak bugs yang harus dibenahi. Pada akhirnya, mata kuliah ini mengajarkan kita semua untuk mengoptimalkan usaha pada prosesnya dan mengatur ekspektasi pada hasilnya. Karena upaya dan ekspektasi adalah kuasa kita untuk mengaturnya, sedangkan hasil dari apa yang kita kerjakan dan penilaian orang lain bukan hal yang dapat kita atur.

--

--