Lean


23
Oct 10

Lean Software Development

Lean development pertama-tama dicontohkan pada tahun 1980-an oleh dua raksasa otomotif Jepang, yaitu Toyota dan Honda. Kemudian teknik tersebut ditiru untuk diterapkan dalam pengembangan perangkat lunak, maka lahirlah istilah Lean Software Development yang merupakan bagian dari Agile.

Pada dasarnya, Lean memiliki 7 prinsip, yaitu:

  1. Eliminate waste.
  2. Buang apapun yang tidak memberi nilai tambah bagi produk yang dapat dirasakan oleh konsumen.

  3. Amplify learning.
  4. Dalam software development, kita berbicara Lean Development bukan Lean Production. Development berbeda dengan production. Development mirip dengan membuat resep masakan, sedangkan production mirip dengan memasak masakan. Jadi dalam proses development dibutuhkan pemikiran, inovasi, percobaan, dsb yang proses tersebut merupakan proses pembelajaran. Belajar, belajar, dan terus belajar.

  5. Decide as late as posible.
  6. Dunia terus berubah, maka sepatutnya bila keputusan tidak diambil secara tergesa-gesa, maka keputusan tersebut diharapkan semaksimal mungkin supaya sesuai dengan fakta yang ada, bukan keputusan yang berbau spekulasi.

  7. Deliver as fast as posible.
  8. Dulu saat era web 2.0 sedang booming, ada mantra yang cukup terkenal, yaitu ‘realase early release often’. Dengan pengembangan yang cepat, kita bisa menunda keputusan (sejalan dengan prinsip ke-3) dan kita bisa memperoleh feedback yang reliabel. Pada umumnya siklus yang terjadi adalah: Design, implement, feedback, improve.

  9. Empower the team.
  10. Karena pengambilan keputusan ada di akhir dan proses eksekusi sangat cepat, tidak mungkin dilakukan pengaturan secara terpusat. Lean menggunakan ‘pull techniques’ untuk penjadwalan pekerjaan dan memiliki mekanisme pensinyalan lokal yang memungkinkan masing-masing pekerja memberitahu apa yang harus dikerjakan berikutnya. Mekanisme ‘Pull’ dalam lean development merupakan perjanjian untuk membuat perangkat lunak yang lebih baik secara bertahap dalam interval tertentu. Pensinyalan lokal terjadi melalui chart, pertemuan harian, integrasi berkala, dan pengujian (testing) yang komprehensif.

  11. Build integrity in.
  12. Perangkat lunak dengan integritas, maka dia memiliki arsitektur yang koheren, usability yang baik, sesuai dengan tujuan, dan dapat beradaptasi dengan perkembangan jaman.

  13. See the whole.
  14. Integritas pada suatu sistem yang kompleks membutuhkan pengetahuan dari berbagai bidang yang beragam. Tidak bisa berpikir untuk mengembangkan suatu bagian tertentu dari sistem tanpa memperhatikan dampaknya yang terjadi pada bagian lain.

    Sumber:
    “Lean Software Development: An Agile Toolkit” (Mary Poppendieck, Tom Poppendieck), Addison Wesley – 2003