PPL Story : Sprint Perdana #SebuahLangkahPertama

Refo Ilmiya
AdHub Team
Published in
5 min readFeb 25, 2019
Hacker

Halo sobat AdHub, sebelumnya perkenalkan nama saya Refo Ilmiya Akbar, biasa dipanggil Refo. Saya disini berperan sebagai hacker. Hacker disini jangan disamakan dengan hacker yang banyak muncul di film atau berita sebagai orang jahat yang berurusan di bidang keamanan sistem. Namun, istilah hacker dalam mata perkuliahan ini diartikan sebagai orang yang bertanggung jawab terhadap pekerjaan yang berhubungan dengan backend. Perlu diketahui bahwa hacker disini tidak bekerja sendirian karena dikhawatirkan akan kewalahan dalam menangani sistem yang akan dibangun karena cukup besar. Sehingga, dibentuklah tim hacker yang terdiri dari empat orang yaitu Saya, Bhaga, Hafizh, dan Jihad.

Penggunaan Version Control System

Tampilan laman Version Control System Interface gitlab.cs.ui.ac.id

Version Control System merupakan hal yang sangat penting dalam pembuatan suatu proyek besar yang dikerjakan secara kolaboratif. Kita perlu mengetahui apakah hal yang kita kerjakan berbenturan dengan pekerjaan yang dilakukan oleh rekan kerja kita. Artinya kita perlu mengetahui perubahan apa sajakah yang dilakukan pada proyek yang ktia kerjakan dan kita ingin perubahan tersebut tercatat secara otomatis. Disini, Git hadir sebagai version control system yang digunakan para developer untuk mengembangkan software secara bersama-bersama. Terdapat beberapa fungsi khusus yang dimiliki oleh Git untuk melakukan operasi yang berkaitan dengan version control, diantaranya adalah sebagai berikut:

  • Git Init : Digunakan untuk membuat repositori git baru.
  • Git Status : Digunakan untuk mengetahui berkas-berkas mana yang berada dalam keadaan tertentu.
  • Git Add : Merupakan awal dari alur-kerja dasar git. Digunakan untuk melakukan perubahan (penambahan ke Indeks)
  • Git Commit : Merekam perubahan yang terjadi pada repository. Sekarang perubahan telah tercatat secara lokal namun belum secara remote.
  • Git Push : Digunakan untuk meng-update remote reference berikut dengan objek yang bersangkutan.
  • Git Pull : Digunakan untuk mengambil dan mengunduh konten dari repositori jarak jauh dan segera memperbarui repositori lokal agar sesuai dengan konten itu.

Gitlab merupakan salah satu manajer repositori Git berbasis web dengan fitur wiki dan pelacakan masalah, menggunakan lisensi sumber terbuka. Pada Pengembangan Proyek Perangkat Lunak kali ini, Fasilkom menyediakan gitlab.cs.ui.ac.id dimana kami dapat menggunaakn interface tersebut untuk bekerja secara kolaboratif dengan maksimal dan terkontrol oleh fakultas sehingga proyek yang kami kembangkan dapat dijamin kualitasnya dan menghasilkan produk yang memuaskan.

Metode Pengembangan Perangkat Lunak

Agile Software Development adalah sebuah grup metodologi-metodologi pengembangan software yang berbasis pada pengembangan iteratif dimana keperluan dan solusi pengembangan software berubah terus menerus. Perlu diketahui bahwa meskipun definisi agile development diatas terdengar tidak practical karena terdapat kata “berubah terus menerus”, nyatanya agile development kini kerap digunakan pada beberapa perusahaan besar diantaranya adalah Electronic Arts, Cronj, dan ABN Amro. Ternyata, agile membantu mereka dalam memprioritaskan feature sets, builds, termasuk jadwal deadline dan usaha atau beban yang perlu dikerahkan untuk merealisasikan Sprint Goal yang telah ditetapkan. Umumnya Sprint dilakukan selama dua minggu. Agile sendiri memiliki kelebihan dan kekurangan sendiri dalam pelaksanaannya. Namun, dalam konteks pengerjaan dalam waktu singkat ini, agile sangat cocok digunakan dalam pengembangan proyek yang saat ini sedang kami lakukan.

Test Driven Development (TDD)

A good programmer is someone who always looks both ways before crossing a one-way street.” — Doug Linder

Sesuai dengan namanya, Test Driven Development adalah pengembangan yang didasari oleh Test. Intinya, kita wajib menuliskan test terlebih dahulu baru melakukan implementasi code. Stepnya adalah sebagai berikut :

TDD in a nutshell
  1. Sebelum menulis kode, tuliskan test-nya terlebih dahulu. Pastikan kita memasukkan semua kemungkinan yang dapat kita pikirkan untuk input dan outputnya.
  2. Jalankan test-nya, dan pastikan test-nya fail karena belum ada kode apapun untuk membuat test-nya pass. (Kita dapat membuat fungsi kosong pada views.py)
  3. Ketik working code seminimum mungkin dengan tujuan agar test-nya pass.
  4. Jalankan test dan cek apakah test-nya pass. Jika belum pass, maka perbaiki working code kita sampai memenuhi ekspektasi dari test.
  5. Apabila working code yang kita tulis terlihat berantakan, kita dapat melakukan refactoring, artinya kita memperbaiki kode tersebut selama test-nya masih pass, hal itu menandakan tidak ada masalah pada kode yang kita ubah.
  6. Ulangi proses dari no 1–5 untuk fungsi-fungsi lainnya.

Kebanyakan mahasiswa merasa ‘terberatkan’ dengan peraturan yang mewajibkan kami untuk melakukan TDD pada pengembangan proyek yang saat ini sedang kami jalani. Namun, hal tersebut mengartikan bahwa banyak dari mahasiswa yang belum mengerti betapa bermanfaatnya implementasi TDD dalam pengembangan suatu perangkat lunak.

Tujuan diberlakukannya TDD sungguh mulia, yaitu memudahkan Programmer. Namun, kebanyakan dari Mahasiswa merasa yang dirasakan adalah sebaliknya. Hal ini perlu diluruskan karena TDD memiliki beberapa manfaat diantaranya adalah sebagai berikut:

  • Menghindarkan Kita dari debugger
  • Mengurangi bug pada fitur baru dan fitur yang ada
  • Mengurangi biaya perubahan (cost of change)
  • Memperbaiki desain
  • Mendorong refactoring
  • Membangun safety net untuk bertahan melawan programmer lain
  • Menyenangkan
  • Memaksa Kita untuk tenang dan berpikir
  • Mempercepat pengembangan dengan menghilangkan waste
  • Mengurangi rasa takut

Itulah sebagian dari banyak lainnya manfaat yang dapat kita raih dengan mengimplementasi TDD sejak dini. Cukup jelas bahwa tidak ada kerugian yang kita dapatkan dari menerapkan TDD dalam mengembangkan suatu produk. Namun perlu dimaklumi bahwa saat ini kami masih dalam tahap belajar sehingga mungkin TDD yang kami terapkan tidak sesuai ekspektasi atau tidak seaplikatif seperti di dunia nyata nantinya. Sehingga, kedepannya kami ingin menjelajahi lebih lanjut tentang penerapan TDD agar dapat kami pahami dan aplikasikan terutama pada produk yang saat ini kami kembangkan.

Malas melakukan Test Driven Development? Coba Pikir Ulang

Progress Sprint Pertama

Sprint Pertama telah dimulai dan kelompok kami juga sudah memiliki beberapa progress. Progress yang telah kami kerjakan diantaranya adalah kami telah selesai mengerjakan Product Backlog Item (PBI) pertama yang berjudul “Sebagai User Saya Ingin Memilih Platform”. PBI tersebut dilakukan dengan menyimpan Platform pilihan user ke dalam Cookies dengan key Platform. Nantinya, platform yang dipilih tersebut akan digunakan untuk menentukan apa yang akan ditampilkan pada page selanjutnya. PBI ini diselesaikan sesuai TDD dan memiliki coverage 100%.

Terlihat penerapan TDD dengan Tag [RED],[GREEN], dan [REFACTOR]

Selain itu, Saya juga mengambil task berikutnya yaitu menyimpan Pilihan Demografi User ke dalam Cookies namun masih menunggu kepastian dari rekan saya karena saat ini belum diketahui fitur apa saja (seperti usia, kota, keywords) yang perlu disimpan karena hal tersebut berpengaruh dengan penembakan API yang dilakukan nantinya.

Sekian Postingan saya kali ini.
Source Code dapat ditemukan di: https://gitlab.cs.ui.ac.id/ppl-fasilkom-ui/2019/PPLA2/tree/US-1-Sebagai_User_Saya_Ingin_Memilih_Platform_Iklan

Salam,

Refo Ilmiya Akbar

1606876033

--

--