[Week 11] Menuju Sprint Review Kedua
Sesuai judulnya, post ini akan menceritakan banyak improvement sepanjang kami menjalani sprint kedua ini. Selama sprint ini, kami telah menerapkan solusi perbaikan yang kami cetuskan setelah melalui evaluasi, yaitu melakukan pertemuan rutin dan biasanya kami habiskan dengan hackathon sambil berdiskusi. Pertemuan kami biasanya dilaksanakan dua kali sepanjang pekan. Hal ini berdampak besar pada perkembangan proyek kami, seperti proyeksi velocity (task selesai per sprint) yang semakin tinggi serta rasa kepemilikan yang ada pada diri kami, tercermin dari semakin sering terjadinya progress report dan transfer knowledge.
Selama sprint review kedua, kami mulai menemukan banyak bugs selama pengerjaan. Bug yang paling sering terjadi adalah package npm acapkali corrupt sehingga kami melakukan reinstall. Selain itu terdapat pula bug dimana kami harus menambahkan sebuah file assetsTransformer.js yang berguna untuk membuat assets dapat dibaca oleh test suite.
Saya mendapatkan bagian untuk membuat layout untuk bagian daftar pesan serta fungsionalitasnya. Hingga saat ini saya sudah menyelesaikan bagian layouting dan dapat dilihat pada gambar di bawah. Data tersebut adalah data dummy karena belum diterima dari database. Sayangnya fitur pesan ini harus dinomorduakan karena workload-nya yang ternyata cukup besar, sehingga kami lebih memilih untuk berfokus pada fitur homepage dan add products sale untuk diselesaikan sebelum sprint review.
Setelah hampir dua sprint, saya semakin memahami konsep agile selama pengembangan proyek ini. Teman-teman saya dari kelompok lain mengatakan bahwa banyak story mereka yang ditolak dan diubah oleh product owner, dan hal itu menggambarkan betapa mudahnya spesifikasi proyek berubah mengikuti kebutuhan. Saya juga semakin merasakan bahwa komunikasi (terutama tatap muka) dan disiplin adalah komponen yang penting selama pelaksanaan agile development, karena dengan pertemuan rutin yang kami lakukan terbukti bahwa kinerja kami juga semakin meningkat. Agile juga menekankan pada kualitas yang dapat dicapai melalui berbagai testing yang telah kami lakukan, seperti continuous integration dan test driven development. Berdasarkan buku berjudul Manifesto for Agile Software Development yang ditulis oleh 17 programmer, terdapat 12 rules principles yang diterapkan pada agile. Keduabelas rules tersebut adalah
- Produk cepat rilis dan berkesinambungan untuk memuaskan pengguna
- Menerima perubahan
- Produk dirilis secara rutin dalam waktu singkat (pekan bukan bulan)
- Pebisnis dan teknisi wajib bekerja sama
- Pengembang harus termotivasi
- Perbanyak tatap muka
- Progress utamanya dilihat melalui software yang dirilis
- Pengembangan pada agile sustainable
- Technical excellence and good design
- Simple
- Self-organized team membuat arsitektur, kebutuhan dan design terbaik
- Tim harus melipatgandakan kemampuannya supaya semakin efektif
Selain itu saya juga teringat pada materi Clean Code yang dibawakan oleh kak Nia dari MOKA pada guest lecture beberapa pekan lalu. Clean code diibaratkan sebuah puisi yang ditulis dengan indah, yaitu elegan, efisien dan dapat dimengerti dengan mudah oleh yang membaca. Terdapat beberapa rules yang harus dipatuhi untuk mencapai clean code, seperti gunakan nama method yang jelas, meminimalkan kemungkinan salah paham, menggunakan nama yang dapat dicari dan memiliki arti, membuat function yang kecil usahakan hanya satu objective dalam satu function, tidak memiliki duplikasi serta memiliki comment yang sedikit, bahkan disarankan untuk tidak sama sekali, namun bermakna. Lalu untuk menangani error sebaiknya kita membuat try catch untuk setiap function yang mungkin dapat mengembalikan nilai error. Pada bagian catch, dibuat pula exception yang menerima error tersebut dan sebaiknya sudah ada ketentuan umum mengenai exception yang dijadikan acuan dalam membuat exception. Selain itu kita juga dilarang untuk mengembalikan nilai null, baik secara langsung atau dioper ke fungsi lain. Dalam melakukan unit testing, kita harus mengacu pada rule FIRST (Fast, Independent, Repeatable, Self-Repeating, Timely). Test harus bersih (dapat dibaca dengan baik) serta memiliki satu tujuan per test
Lalu mengapa Test Driven Development (TDD), yang bahkan kini kabarnya sudah diterapkan sejak perkuliahan PPW, penting untuk diterapkan pada software development? TDD mendorong programmer untuk berpikir lebih visioner karena untuk membuat test, programmer harus memahami secara utuh spesifikasi dari program tersebut hingga ke bagaimana pengguna umum nantinya akan menemukan error pada program tersebut. Test tersebut pada awalnya memang dirancang untuk gagal, dan melalui error message tersebutlah programmer dapat mengacu dalam pembuatan kode hingga akhirnya tidak ada error message tersisa dan seluruh code dicover oleh test yang ada. Hal ini menjaga kualitas dari program yang dibuat karena terhindar dari error dan bugs.