Friday, March 16, 2018

The Power of Agile


Agile adalah satu prinsip dalam model project management yang sekarang ini banyak digunakan. Hal ini terkait dengan berkembangnya banyak produk teknologi, software produk, aplikasi, yang dikembangkan oleh startup yg menjamur. Jika dulu kita mengenal project management banyak digunakan untuk project konstruksi, building, dan bangunan fisik lainnya. Sekarang dengan trend perusahaan yang mengutamakan scalability dan low asset, maka perusahaan membangun “virtual asset” yaitu software as a service. Pendekatan project management yang digunakanpun ikut berubah, jika dulu mengikuti proses waterfall, sekarang mengikuti agile.
Pola waterfall mensyaratkan kita sudah memiliki “bangunan yang sudah jadi secara mental”. Yang kemudian dituangkan dalam produk requirement. Misalkan membangun rumah, kita sudah tahu persis bentuk rumahnya, bentuk tampilan muka dan belakang, pintunya dimana, jendela dimana, kamar ada berapa, tembok menggunakan material apa, pintu, jendela, ubin pakai material apa, tembok rumah dan dinding dalam rumah menggunakan cat apa, dsb. Kita sudah tahu persis perwujudan fisik rumah yang sudah jadi secara mental. Kemudian hal ini dituangkan dalam perwujudan product requirement dan spesifikasi.
Ada moto dalam project management waterall yaitu “no gold plating”. Tidak ada spesifikasi dan scope yang berubah saat project berjalan. Semuanya dikunci dan dituangkan dalam kontrak yang disepakati sebelum project dijalankan. Kemudian proses dijalankan mulai dari fase initiating, planning, executing, control, sampai closing. Tidak ada gold plating, tidak ada perubahan scope. Satu perubahan pada spesifikasi akan menimbulkan masalah ke project plan keseluruhan. Goal yang harus dicapai adalah On Quality, On Time, On Cost, dan On Scope.
Setiap fase dijalankan secara serial, mulai dari fase initiating ke planning dan seterusnya. Tidak ada turning back, karena akan mengganggu project secara keseluruhan. Di dalamnya kita juga mengenal knowledge areas yaitu management time, cost, scope, resources, quality, procurement, communication, risk, dsb. Saat pola waterfall ini diadopsi oleh project manager dalam membuat produk software maka masalah muncul. Software beda dengan produk fisik. Produk software memiliki requirement yang berkembang dengan sangat cepat seiring waktu. Software memiliki bug yang baru ditemui pada proses testing. Customer dari produk software ada banyak dan memiliki preference dan keinginan untuk customisasi. Bentuk akhir berupa user interface perlu diupdate mengikuti desain yang terbaru. Feature yang dibutuhkan terkadang baru diketahui tidak pada awal project. Dan sebagainya.
Sedemikan banyak masalah dan perbedaan antara produk software dan produk bangunan fisik, maka saat project management waterfall diadopsi oleh project manager maka muncul masalah-masalah berikut: Software banyak yang tidak selesai, banyak yang error saat delivery, banyak produk jadi yang membutuhkan rework, banyak software yang gagal dideliver, banyak software yang sudah dideliver ternyata akhirnya tidak dipakai, dan masih banyak masalah lainnya. Akhirnya para project manager berkumpul dan memikirkan perlu adanya pendekatan yang baru. Sampai akhirnya lahirlah Agile. Berbeda dengan waterfall, agile menggunakan prinsip iterasi. Produk tidak dibangun sekaligus besar, tetapi dibangun kecil-kecil tapi sering. Tujuannya adalah meminimalkan resiko diakhir project. Pola pengembangan software yaitu desain-build-test-release dipecah dalam banyak iterasi yang disebut sebagai sprint box.
Product final dengan feature lengkapnya juga dipecah-pecah menjadi produk kecil dengan fitur minim tapi bisa berjalan, yang disebut dengan  minimum viable product. Hal ini tidak memungkinkan untuk produk fisik konstruksi, tapi mungkin untuk produk software. Bayangkan jika waterfall kita membuat bangunan rumah, pertama kita buat fondasi dulu, kemudian dinding, kemudian atap, kemudian pintu dan jendela, kemudian finishing berupa pengecatan. Jika di agile, maka ilustrasinya adalah pertama kita bikin rumah burung dara, terus bikin rumah anjing, bikin rumah kuda, bikin rumah sederhana, sampai akhirnya bikin rumah mewah. Bentuknya tetap rumah dan berfungsi, tetapi fiturnya sedikit. Bangunan fisik hal ini tidak mungkin, tapi kalau membuat software hal ini mungkin.
Keuntungan yang didapat adalah: Produk akan lebih cepat terdeliver ke customer, jika ada kesalahan maka akan cepat dikoreksi, resiko juga akan lebih kecil karena kesalahan terdeteksi lebih awal, feature-feature baru dapat ditambahkan pada iterasi berikutnya, lebih uptodate dan mengikuti trend, secara bisnis akan menguntungkan karena ada produk yang sudah bisa dideliver, perubahan feature baru pada produk dan perbaikan bug akan masuk dalam update produk, ada kepastian kapan software akan dideliver, team development memiliki tanggungjawab yang jelas dalam mendeliver produk sesuai target waktu dan komitmen.
Kita mengenal ada 4 agile manifesto yaitu: deliverables produk lebih penting dibanding dokumentasi proyek, interaksi individu lebih pentiing dibanding proses tools, kolaborasi dengan customer lebih penting dibanding negosiasi kontrak, merespon perubahan dibanding hanya mengikuti plan. Ini yang membedakan agile dengan waterfall. Sedangkan metodologi yang digunakan mengikuti agile adalah scrum. Jika agile menjelaskan prinsipnya maka scrum menjelaskan organisasi dan prosesnya. Organisasi scrum terdiri dari 3 yaitu scrum master, product owner, dan team developer.
 Scrum master berperan sebagai coach, memastikan team mengikuti rule of the game, membantu meresolve masalah terkait proses scrum. Product owner adalah orang yang bertanggung jawab terhadap produk, mendeliver value ke pelanggan, mampu menyediakan resources, dan mengatasi hambatan selama proses development. Team member bertugas mendesain, build, memastikan kualitas produk, dan mendeliver produk tepat waktu. Ketiga peran ini mengikuti proses scrum secara iterasi mulai dari visioning, release planning, spesifikasi, sprint planning, daily standup, sprint review, dan retro.
Proses Visioning adalah membuat user stories untuk menjelaskan apa yang akan dibuat, untuk siapa dibuat, dan kenapa harus dibuat. User stories datang dari semua stakeholder mulai dari produk owner, customer, dan team developer. User stories ini dikumpulkan dalam suatu list yang disebut produk backlog. Salah satu artifact dalam scrum methodology. Produk backlog ini memprioritaskan user stories berdasarkan value terhadap customer. Prioritas dibagi menjadi 3 yaitu high, medium, low.  Setelah produk backlog selesai maka masuk ke tahapan release planning. Proses ini berupa meeting yang bertujuan merancang release dalam kotak2 sprint. Caranya adalah dengan mengumpulkan beberapa user stories ke dalam satu sprint box. Dengan catatan bahwa jika user stories tersebut dibuat maka akan menjadi satu deliverables. Meskipun itu baru bersifat minimal. Akhirnya semua akan dikelompokkan dalam beberapa sprint box dan memberi estimasi akan ada berapa kali sprint dan kapan akan dilakukan release. Setiap release akan memiliki rentang waktu tidak lebih dari 1 bulan. Baru kemudian akan disusul oleh release berikutnya.
Proses berikutnya adalah spesifikasi yaitu setiap user stories yang ada harus memiliki acceptance criteria, termasuk screenshotnya akan seperti apa. Tahapan spesifikasi adalah merinci requirement dari user stories. Karena spesifikasi ini akan dikunci saat masuk ke tahapan sprint. Proses berikutnya adalah sprint planning, yaitu membuat rencana pelaksanaan sprint. User stories yang ada akan diberikan estimasi waktu yang dibutuhkan untuk penyelesaian. Dan setiap penyelesaian maksimal adalah 8 jam. Jika lebih dari 8 jam maka akan dipecah menjadi beberapa task dengan waktu kurang dari 8 jam. Disini task sudah mencakup desain, coding, test, dan fine tune. Kemudian diberikan urutan task mana yang akan dikerjakan dulu.
Setelah sprint planning maka masuk ke tahapan pekerjaan sprint yang sesungguhnya. Setiap hari akan dimulai daily standup meeting di depan sprint planning board. Dimana ada task yang sudah direncanakan dan waktu yang dibutuhkan. Di dalam prinsip agile, ada komitmen dan tanggungjawab individu. Disini produk owner tidak melakukan assignment tetapi justru anggota team yang melakukan pull. Mereka mengambil tanggung jawab dalam menentukan task yang akan dikerjakan dan komitmen penyelesaian. Setiap daily standup meeting setiap anggota team development akan menyampaikan tiga hal yaitu: Apa yang kemarin sudah dikerjakan, Apa yang akan dikerjakan, Apa masalah yang ditemui jika ada. Hal ini untuk showcase apa yang sudah dikerjakan, dan memunculkan perasaan accomplishment, ownership terhadap work result, dan tidak ada informasi yang hilang selama proses. Daily standup meeting maksimal waktunya 15 menit. Jika ada masalah tidak dibahas dimeeting tapi harus diselesaikan secara offliine.
Setelah melakukan beberapa kali iterasi dalam sprint, maka akan sampai pada titik sprint tersebut selesai dan masuk ke proses sprint review. Sprint review adalah meeting untuk menunjukkan apa yang sudah dikerjakan dan mendapat feedback. Team akan mendemonstrasikan hasil sprint yang sudah ditest dan accept. Kemudian akan mendapat feedback atas pekerjaan mereka. Tahapan berikutnya adalah retro. Retro adalah meeting untuk mengevaluasi performance team. Bagaimana team bekerja, apa yang bagus dan apa yang perlu diimprove. Retro akan mengevaluasi laporan selama sprint seperti burn up chart dan burn down chart, berapa tugas yang selesai tepat waktu, berapa tugas masih tersisa, bagaimana performance individu, berapa jumlah defect, berapa kali test gagal, dan sebagainya. Hasil evaluasi ini akan dituangkan dalam action plan untuk perbaikan kinerja team. Proses sprint ini akan diulang terus-menerus, sehingga deliverables produk makin lama akan makin sempurna dengan update terbaru.
Sehingga bisa kita simpulkan Agile dan metode Scrum ini adalah focus pada deliverables yang cepat, meminimalkan resiko dengan frequent test inspection, align dengan kebutuhan customer yang terus berkembang, dan menekankan pada tanggungjawab serta komitmen dari anggota team. Pertanyaan yang sering muncul adalah apakah Agile Scrum ini dapat diimplementasikan untuk project non software? Jika kita melihat prinsip-prinsip dan proses yang dijelaskan, maka sangat mungkin untuk menerapkan Agile scrum untuk project non-software. Sudahkah anda mencoba menggunakan Agile?

No comments:

Post a Comment