Wednesday 14 January 2015

Menggunakan Lean Management dalam Pendekatan AGILE atau SCRUM

Prinsip-prinsip dasar manajemen Lean telah lama diterapkan dan teraplikasi dengan baik dalam industri terutama dalam operasi produksi di pabrik Toyota. Dalam beberapa riset saat ini, ternyata terapan Lean dapat diadaptasikan dalam industri Teknologi Informasi terutama dalam pengembangan software yang menggunakan metodologi Agile, terutama Scrum sebagai salah satu bentuk metodologi Agile.

Tulisan ini bertujuan untuk melihat secara ringkas bagaimana prinsip-prinsip Lean dapat diterapkan dalam pengembangan software atau perangkat lunak dalam industri Teknologi Informasi. Sebelum kita menuju ke sana, mungkin kita akan melihat terlebih dahulu secara singkat apa itu manajemen Lean.

Manajemen dan Prinsip dari Lean

Secara sederhana, saya dapat mengatakan 3 point penting disini, yaitu dalam sebuah kegiatan industri atau proses dari input menjadi output kita harus mengendalikan hal-hal sbagai berikut:
  • Selalu focus kepada membangun added-value kepada customer atau klien. Kita sering mengenalnya sebagai customer-driven.
  • Kedua adalah fokus kepada menghilangkan proses/kegiatan yang tidak berkaitan secara langsung terhadap peningkatan added value.
  • Dan yang ketiga adalah proses ini harus berjalan secara terus menerus dan berkelanjutan.
Dalam pelaksanaannya, program ini harus dijalankan secara menyeluruh dengan melibatkan semua unsur mulai dari supplier sampai customer dan semua pihak yang terlibat di dalam proses transformasi dari input menjadi output. 

Mari kita mencoba untuk melihat ilustrasi mengenai prinsip-prinsip Lean secara singkat dan sederhana. Salah satu contoh prinsip Lean, adalah menemukan defect atau kesalahan atau ketimpangan secara dini. Adalah sebuah fakta, pada saat defect baru ditemukan diakhir proses, banyak sekali waktu dan tenaga yang telah terbuang untuk sampai di proses akhir. Bayangkan karena asumsi yang salah dalam proses design dan baru terdeteksi ditahapan akhir, maka seluruh waktu, tenaga dan uang yang dikeluarkan akan menjadi sangat signifikan hilang percuma. 

Salah satu cara untuk mengimplementasikan prinsip manajemen Lean pada kasus di atas, maka manajemen meminta bahwa selalu ada review dari semua pihak baik itu customer, supplier dan pihak-pihak yang terlibat langsung dalam proses secara reguler. Kebanyakan kelayakan atau review menyeluruh baru dilakukan pada saat testing akhir. Effort yang sedikit kita keluarkan untuk review jauh lebih baik dibandingkan effort yang akan terbuang banyak jika kita hanya melakukan review diakhir. Ini sesuai dengan prinsip Lean untuk meng-eliminasi kegiatan yang sebenarnya dilakukan terhadap produk yang defect (elimate waste of making defective product).

Terdapat 7 prinsip pemborosan (atau kegiatan yang tidak berkaitan langsung terhadap pningkatan added-value) yang harus dihilangkan. Semua pihak terlibat mencoba untuk mengidentifikasi kemungkinan munculnya hal ini dan menyiapkan strategi untuk menghilangkannya.
  • Eliminate waste of overproduction
  • Eliminate waste of time on hand (waiting)
  • Eliminate waste of transportation
  • Eliminate waste of processing itself
  • Eliminate waste of stock on hand (inventory)
  • Eliminate waste of movement
  • Eliminate waste of making defective product
Pada ilustrasi sebelumnya, kondisi tersebut mengacu pada prinsip yang terakhir yaitu menghilang pemborosan yang terjadi karena produk yang kita bangun adalah produk defect. Kiini mari kita lihat ilustrasi yang lain. 

Lean adalah proses berkelanjutan, sedapat mungkin kita dapat memenuhi kebutuhan dan memberikan added value yang cepat kepada customer atau client sehingga mereka para client dapat memanfaatkan added value dari produk kita secara cepat. Selanjutnya kita bisa menambahkan added value berikutnya secara berkelanjutan. 

Kita sering melihat sebuah situasi dimana kita berlama-lama untuk menghasilkan sesuatu yang cukup "sophisticated" menurut kita, tetapi belum tentu semua itu kan dibutuhkan oleh client atau customer kita. Pendekatan Lean, lebih menekankan added-value yang bertahap dan berkelanjutan. Added value apa yang paling diperlukan oleh client atau customer pada saat ini (penekanan "paling diperlukan pada saat ini"), maka kita akan fokus hanya itu yang akan kita lakukan dan implementasi secepatnya. Selanjutnya akan berjalan secara terus menerus berkelanjutan sesuai dengan pembelajaran semua pihak yang terlibat.

Kita tidak perlu melakukan "overproduction" dengan mengembangkan sendiri keinginan atau imajinasi kita, sementara hal tersebut belum tentu dibutuhkan pada saat ini. Jika pada saat pengembangan muncul ide-ide tambahan, jadikan itu sebagai catatan untuk pengembangan yang selanjutkan. Kita harus fokus kepada kebutuhan saat ini.


Manajemen Lean dan Metodelogi PengembanganSoftware AGILE/SCRUM 

Prinsip-prinsip yang dimiliki oleh Manajemen berbasis Lean memiliki kesamaan dengan metodologi pengembangan software yang saat ini lebih dikenal dengan sebutan metode AGILE. Metode pengembangan software menggunakan Agile memiliki kesamaan prinsip dengan Lean. 

Agile adalah salah satu metodologi pengembangan software yang menekankan proses kolaborasi, adanya iterasi proses pengembangan yang terus menerus dan adanya incremental product (silahkan baca tulisan saya mengenai Agile di blog ini "Tentang Agile"). Situasi atau prinsip ini sangat menyatu dengan Lean. Untuk itu, banyak beberapa buku yang menyatakan bahwa Lean adalah salah satu metode pengembangan software di bawah Agile. 

Dalam praktek pengembangan software, prinsip-prinsip Lean sering digunakan secara bersama-sama (incorporated) dengan metode pengembangan Agile. Dan salah satu metode Agile yang populer saat ini adalah Scrum. Proyek pengembangan software yang berjalan menggunakan metode Scrum dapat memasukkan prinsip-prinsip Lean. (silahkan baca juga metode Scrum di blog ini "Tentang Scrum")


Lean Software Development 

Sekarang, mari kita lihat bagaimana kita dapat mengadopsi prinsip-prinsip Lean dalam pengembangan software dan prinsip ini dapat disatukan pada saat kita menjalan proyek IT menggunakan Scrum. Kita dapat meng-ilustrasi-kan proyek yang diajalankan dengan cara Scrum adalah membagi proyek yang besar menjadi beberapa bagian dan setiap bagian akan menghasilkan incremental product. 

Kita mengenal konsep yang namanya "sprint", katakanlah tim Scrum ini menetapkan setiap sprint adalah 3 minggu. Maka tim ini akan menetapkan sub-produk apa saja yang akan dihasilkan dari sprint pertama sampe sprint terakhir dimana setiap sprint akan berjalan 3 minggu. Selama 3 minggu (1 sprint), mereka akan fokus dengan satu added value atau "running version software". Kemudian, mereka akan fokus kepada potongan running version berikutnya dan dikerjakan dalam waktu yang sama (sprint kedua) dan begitu seterusnya.

Tentu saja, prinsip-prinsip Lean dapat disinergikan dengan pelaksaan pengembangan proyek menggunakan Scrum.

a. Menghilangkan aktifitas yang tidak berkaitan langsung dengan End Product
Fokuskan waktu dan tenaga serta diskusi kita dengan spesifik added value yang kita harapkan sebagai sebuah End Product. Software atau aplikasi yang kita kembangkan harus berdasarkan keinginan client. Imajinasi atau ide sesaat yang muncul pada saat pembuatan program, cukup menjadi catatan terlebih dahulu dan nantinya akan menjadi bahan untuk pengembangan selanjutnya. Kita tidak terlalu perlu untuk berlama-lama dengan ide-ide baru yang tiba-tiba datang. Fokus dengan apa yang diinginkan client saat ini dan diskusikan nanti ide-ide baru setelah bagian ini selesai. 

b. Melakukan pembelajaran secara berkelanjutan
Pada saat pengembangan berlangsung, kita dapat selalu melibatkan user atau klien untuk mencoba atau mereview atau pengecek apakah progress pengembangan dan memberikan kesempatan kepada mereka untuk menyampaikan feedback. Sedapat mungkin kita sudah melibatkan user dari awal selain sebagai sarana untuk mendapatkan early feedback, juga dapat dijadikan wahana untuk proses pembelajaran guna pengembangan yang berkelanjutan.

c. Menunda sesuatu sampai memang dibutuhkan
Pada saat program/software sedang dibuat, begitu banyak ide yang tiba-tiba datang dan mengalir begitu deras. Dalam prinsip Lean, sebaiknya kita menunda untuk mengimplementasikan sesuatu yang bukan menjadi tujuan utama saat ini. Kita harus fokus untuk memenuhi added value yang sangat ini telah ditunggu oleh klien kita, karena bisa jadi, jika kita terlambat sedikit saja, kerugian besar terhadap peluang bisnis menjadi hilang. Yang kedua, apa yang kita inginkan atau kita pikirkan adalah sesuatu yang belum tentu benar-benar dibutuhkan klien kita saat ini.

d. Deliver Software as fast as possible
Klien kita adalah pihak yang berperang dengan waktu karena kesempatan memiliki parameter waktu. Suatu kesempatan bisnis akan menjadi hilang dan effort yang kita keluarkan menjadi tidak bermakna jika kita terlambat mengantisipasinya. Untuk itu, Lean menekankan untuk fokus kepada kebutuhan klien "saat ini". Secepatnya selesaikan modul utama yang dibutuhkan, untuk kemudian dapat dikembangkan sebagai proses belajar yang berkelanjutan.

e. Empower Programming Team
Berikan para programmer kesempatan untuk juga mengakses informasi dan libatkan mereka mulai dari awal sampai akhir. Akan banyak hal yang dapat didefiniskan secara bersama mengenai End-Product jika programmer diberikan kesempatan untuk juga meng-akses semua informasi yang ada serta dilibatkan.
Selama proses pngembangan, kita cukup berdiskusi dengan programmer mengenai timeline secara bersama. Pada saat timeline itu disepakati, maka berikan mereka power dan otoritas untuk memutuskan bagaimana dia membuat program, selama itu berfokus kepada end-product dan memenuhi target timeline.

f. Pengujian sistem atau testing terintegrasi selama proses development
Selama proses pengembangan, Lean mngharapkan kita untuk selalu dapat melakukan testing dan sesi customer/client feedback, yang sebisa mungkin dilakukan secara reguler sebagai bagian yang terintegrasi selama proses pengembangan (dari awal sampai akhir). Lean tidak mengharapkan bahwa pegujian sistem hanya akan dilakukan diakhir proses, melainkan sebagai aktifitas yang reguler dan tidak hanya dilakukan diakhir proses sehingga kesalahan asumsi dapat dideteksi lebih awal.

g. Focus kepada system secara penyeluruh
Ongoing testing tidak hanya dilakukan di level unit testing, Lean mengharapkan aktifitas ongoing testing (yang dilakukan sebagai bagian dari proses development) juga mencakup system level. Dan aktifitas ini diharapkan sebagai sebuah kolaborasi antar tim untuk melihat kemungkinan adanya defect lebih awal.



--------
Link:
Topik tentang mengenai kehidupan di Singapura: Kehidupan di Singapura 
Topik tentang mengenali teknologi informasi: Mengenali Teknologi Informasi


#### 2015 ####
Semoga Bermanfaat
"Suatu hari di tahun 2015. Saat itu, terlihat beberapa buku Lean Management di Tampines Library sewaktu menemani anak-anak di sana dan tiba-tiba ingat beberapa beberapa bacaan sebelumnya di kantor."

1 comment:

  1. Halo pak. Saya ingin bertanya, apakah setiap selesai di testing oleh user, masih membutuhkan sign off oleh user ?
    Apabila ada kejadian user berubah setelah sign off, akan dikerjakan di sprint berikutnya ?
    Pak apa ada email yang bisa saya hubungi ? Saya ingin bertanya mengenai scrum pak..
    Terimakasih banyak.

    ReplyDelete

Catatan Pendidikan Menengah (SMP) atau Secondary School di Singapura

Perjalanan pendidikan atau education journey yang akan dilalui oleh lulusan SD atau Primary School akan berlanjut ke jenjang berikutnya yang...