Live life to the fullest

my random thoughts and stories

Pengenalan Extreme Programming

with 13 comments

Software development merupakan salah satu bentuk engineering yang berkembang sejak diciptakannya komputer. Jika dibandingkan dengan engineering lain yang ada, seperti arsitektur, machine engineering, maka disiplin ilmu ini tergolong muda. Dalam perkembangannya kita melihat berbagai hal sudah dihasilkan. Awalnya manusia berinteraksi dengan komputer dengan menggunakan bahasa mesin yang direpresentasikan dengan nilai-nilai biner. Kemudian muncul bahasa rakitan yg menggantikan penggunaan nilai-nilai biner tersebut dengan simbol-simbol opcodes. Berikutnya lahirlah berbagai bahasa pemrograman tingkat tinggi yg membuat pemrograman semakin mudah dengan struktur yang dekat dengan bahasa manusia. Sejak saat itu produktivitas pembuatan software juga meningkat. Software rumit semacam sistem operasi juga semakin modern.

Di luar keberhasilan-keberhasilan tersebut tak terhitung pula jumlah pengembangan software yang mengalami kegagalan. Sering kita dengar project A dihentikan karena over budget, project B berhasil sampai pada production tetapi dengan defect rate sangat tinggi. Metodologi pengembangan software memang sudah ada pada project-project tersebut, tetapi mengapa kegagalan masih saja menjadi satu hal yg sangat mengancam? Sepertinya keberhasilan diambil dari sebuah kotak undian dengan kesempatan acak, terkadang berhasil, terkadang gagal.

Extreme Programming (dikenal juga dengan XP) muncul menawarkan sebuah disiplin dalam pengembangan software. Klaim dari penggagasnya adalah disiplin ini akan menghapus kesan bahwa keberhasilan software development hanya dapat dicapai dengan keberuntungan. Nilai dasar yang terkandung di dalamnya adalah: Komunikasi (Communication), Kesederhanaan (Simplicity), Umpan balik (Feedback), Keberanian (Courage). Ya nilai-nilai ini memang bukan suatu hal yg baru, tetapi lewat pengalaman dari serangkaian project penggagas bahwa hal-hal inilah yang dapat menekan resiko kegagalan suatu project. Dalam hal ini XP hanya mencoba untuk mengumpulkannya dan memberinya sebuah nama.

Komunikasi menjadi hal yang sangat menentukan dalam sebuah tim pengembangan software. Kegagalan komunikasi antar pihak-pihak yang berkepentingan dalam pengembangan software pastinya akan menimbulkan masalah-masalah yg tidak diinginkan seperti: proses bisnis yang dibuat tidak sesuai, anggota tim menghadapi masalah yg tidak bisa diselesaikan, atasan mendapatkan laporan kejutan sehari sebelum deadline, dsb. Pihak-pihak yang berkepentingan (selanjutnya disebut Role) dalam hal ini mencakup: programmer, customer, coach, tracker, tester, consultant, big boss (penjelasan rinci tentang masing-masing role dapat dibaca di buku Extreme Programming Explained).

Kesederhanaan mengacu pada desain sistem yang akan dibuat. Berlawanan dengan disiplin software development lainnya, XP menganjurkan desain yang berevolusi sepanjang proses pengembangan. Seringkali programmer berpikir terlalu kompleks dalam menyelesaikan suatu permasalahan. Pada saat yang lain mereka berpikir bagaimana supaya sistem menjadi fleksibel untuk masa depan. Dalam mengambil keputusan demikian biasanya hanya berdasar pada spekulasi saja, di mana pada akhirnya perkiraan tersebut meleset, sistem tidak pernah diuntungkan dengan desain fleksibel yang super kompleks tersebut. Satu prinsip yang berkaitan dengan ini adalah “You aren’t gonna need it“, di mana sangat dianjurkan agar dalam membangun sesuatu terlebih dahulu kita memastikan bahwa hal ini memang dibutuhkan.

Umpan balik diperlukan untuk mengetahui kemajuan dari proses dan kualitas dari aplikasi yang dibangun. Informasi ini harus dikumpulkan setiap interval waktu yang singkat secara konsisten. Ini dimaksudkan agar hal-hal yang menjadi masalah dalam proses pengembangan dapat diketahui sedini mungkin dan customer dapat membuat keputusan berdasarkan informasi tersebut.

Keberanian. Ini merupakan nilai yang menjadi katalisator bagi ketiga nilai sebelumnya. Keberanian diperlukan untuk mengatakan bahwa target deadline yang diinginkan customer tidak mungkin tercapai, untuk mengambil keputusan saat code yang sudah dibuat ternyata harus dibuang karena kesalahan informasi.

Nilai-nilai di atas menjadi bagian inti dari Extreme Programming. Tetapi untuk mencapainya perlu ada strategi konkrit yang siap untuk diaplikasikan. Strategi tersebut akan dibahas di lain waktu.

Written by jecki

October 19, 2007 at 1:38 pm

Posted in Software Development

Tagged with

13 Responses

Subscribe to comments with RSS.

  1. Tulisannya sangat membantu dalam penyusunan tugas akhir saya 🙂 terima kasih

    Armand

    April 22, 2008 at 4:37 pm

  2. Terima kasih untuk komentarnya. Senang tulisan ini bisa memberikan nilai positif.

    jecki

    April 23, 2008 at 5:51 am

  3. Artikel yang bagus mas jecki,
    apakah di Indonesia sudah ada pihak yang menyediakan training agile methodology semacam extreme programming?

    bustanil

    May 30, 2008 at 1:27 pm

  4. Terima kasih Pak Bustanil. Sayangnya saya belum dapat membantu memberikan informasi tentang training Agile Methodology di Indonesia. Walaupun sebenarnya Agile telah ada lebih dari dua dekade tapi pemakainya masih belum banyak di Indonesia.

    Akan tetapi buku-buku Agile sudah cukup banyak. Seri buku Extreme Programming Explained dan Extreme Programming Explored merupakan salah dua yang membahas Agile (tentunya dalam hal ini Extreme Programming).

    Demikian semoga membantu.

    jecki

    May 30, 2008 at 2:46 pm

  5. Kalo baca buku sih sudah, tinggal prakteknya. Tapi alangkah leblih baik lagi jika belajar dari yang sudah pengalaman, karena menurut saya untuk coba-coba di area production sangat beresiko. Mas Jecki sendiri sudah pernah menggunakan extreme programming?

    bustanil

    May 30, 2008 at 5:51 pm

  6. @Bustanil
    Menggunakan XP secara penuh saya belum pernah. Ini berkaitan dengan keputusan manajemen perusahaan. Tapi yang pasti banyak nilai-nilai dari XP yang saya coba terapkan. Tentunya saya masih dalam tahap belajar juga. Salah satu yang terbukti efektif menurut saya Unit Testing. Meskipun terkadang rasanya malas untuk menulis test code tapi keuntungan dari adanya unit test sangat terasa. Saya merasa lebih percaya diri kalau code tersebut akan berjalan sebagaimana mestinya, tentunya dibuktikan dengan unit test yang berhasil. Refactoring juga salah satu yang sangat bermanfaat.

    jecki

    June 5, 2008 at 4:24 pm

  7. wah.. tulisan ini sangat membantu saya untuk membuat paper tugas kampus saya. Kebetulan saya ada mata kuliah seminar, jadi ada tugas paper mengenai extreme programming. Kalo punya data yang lebih banyak mengenai extreme programming posting lagi yah..
    Kira2 dapetin buku extreme programming dimana yah..????
    Bisa tolong kasih tau ga ya..
    Btw Thx before lho…

    rachel

    October 25, 2008 at 11:21 am

  8. saya ada judul TA extreme programming..

    ada ga ya buku yang bahasa indonesianya..

    kalo ada

    tolong banget email alamat webnya yang jual buku tersebyt ataupun alamat toko yang jual buku itu di email ke email saya di pradigda@student.eepis-its.edu

    pradigda

    January 27, 2009 at 5:30 am

  9. @paradigda:
    Saya belum pernah menemukan buku XP berbahasa Indonesia. Menurut saya langsung saja menggunakan buku sumber asli dari penggagasnya sendiri, Kent Beck, judulnya “Extreme Programming Explained”.

    Semoga sukses dengan TA-nya.

    jecki

    January 27, 2009 at 6:56 am

  10. Boleh tau pak kapan kita memutuskan untuk menggunakan XP? maksudnya kriteria2 atau latar belakang apa yang menyebabkan kita menggunakan XP?

    buditias

    September 30, 2011 at 4:27 pm

    • @buditias:

      XP ini adalah sebuah metodologi pengembangan software. Lahir dari ketidakpuasan terhadap metode pengembangan konvensional semisal Waterfall yang sering kali tidak menghasilkan software sesuai dengan keinginan user.

      XP hadir sebagai salah satu metode pengembangan software yang agile (selain: scrum, crystal). Sebelum memutuskan menggunakan XP harus memahami nilai-nilai agile (lihat http://agilemanifesto.org/). Ini penting karena pemahaman tentang XP oleh masing-masing individu atau organisasi bisa berbeda-beda. Dalam melakukan XP pun harus disesuaikan dengan organisasi di mana project tersebut berjalan. Yang penting adalah esensi nilai Agile-nya.

      Saya ambil contoh misalnya Pair Programming yang sampai saat ini di semua institusi di mana saya pernah bekerja belum ada manajemen yang berani mempersilahkan untuk melakukannya. Bagi manajemen Pair Programming ini adalah suatu pemborosan. “Dua orang mengerjakan kode program yang sama? Terus kalau yang satu lagi ngetik, satunya lagi ngapain dong?”. Kira-kira seperti itu situasinya.

      jecki

      October 3, 2011 at 8:43 am

      • Terima kasih atas balasannya.

        Lalu pada kondisi seperti apa kita mengimplementasikan XP ?

        buditias

        October 3, 2011 at 8:58 am

      • @buditias:
        XP itu hanya salah satu metode pengembangan software. Sebelum bisa memutuskan untuk menggunakan XP ya harus memahami dulu esensinya. “Cocok ga nilai-nilainya dengan nilai-nilai saya?”. Kalau ya maka XP bisa dipakai. Kalau tidak cocok nilainya maka memakai XP bisa jadi tidak membawa manfaat yang berarti.

        jecki

        October 3, 2011 at 9:09 am


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: