Tuesday, December 15, 2015

Extreme Programming VS Real Programming di Indonesia

Beberapa saat yang lalu saya tidak sengaja membaca mengenai Extreme programming atau biasa disebut XP. Apakah itu XP? Singkatnya XP adalah sebuah metodologi yang terlihat menyenangkan dalam kegiatan mengembangkan software. XP merupakah salah satu dasar dari agile dimana metedologi ini cenderung mengunakan pendekatan Object-Oriented. Dalam praktiknya, medetologi ini hanya terdiri dari 2-9 orang di setiap team. Metedologi ini cocok di gunakan untuk anggota team yang pro dan user mengetahui betul apa yang di inginkannya. 

Sebelumnya saya akan membahas sedikit mengenai metedologi XP, yaitu Core Value dari XP dan XP Practice.

XP Core Value : 

  • Communication 
    • Komunikasi menjadi kunci keberhasilan dalam pengembangan software pada XP
  • Simplicity
    • Code yang dibuat sesimple mungkin untuk memenuhi kebutuhan saat ini tanpa memikirkan kebutuhan di masa depan. 
  • Feedback
    • Feedback baik dari user maupun sesama anggota akan membantu mempercepat peningkatan kualitas system. Karena jika system sudah 90% jadi baru ada feedback, akan menghabiskan waktu lama untuk memperbaikinya.
  • Courage
    • Keberanian untuk melalukan observasi dan membuat ulang apabila ada kesalahan pada system.

XP Practice :

  • Planning 
    • Planning pada XP dilakukan dalam waktu yang singkat dan tidak mendetail. Disini progammer hanya menentukan garis besar tugas tidak mendetail hingga setiap fungsi- fungsi ataupun parameternya.
  • Testing
    • Testing pada XP lebih kearah small testing per module.
  • Pair Programming
    • Dua orang programmer mengerjakan sebuah proyek pada sebuah device. Sehingga lebih cepat dan lebih baik dalam menemukan solusi sebuah masalah.
  • Simple Design
    • Code yang dibangun sesimple mungkin.
  • Refactoring the Code
    • Berani merefactor code untuk membuatnya lebih simple dan lebih efisien.
  • Owning the Code Collectively
    • Setiap orang dapat memperbaiki code karena memiliki komunikasi yang baik antar anggota team sehingga semua anggota mengetahui cara kerja dan struktur kode tersebut.
  • Continuous Integration
    • Setiap service yang sudah dibuat oleh masing-masing team di tes secara continue.
  • On-Site Customer
    • Customer harus siap untuk berinteraksi dengan programmer sehingga mempermudah apabila ada kesalahan atau kekurangan dari system yang ada. XP tidak memiliki planning yang detail sehingga customer berperan besar dalam pengembangan.
  • System Metaphorp
    • Sebuah deskripsi mengenai system yang dibuat untuk memudahkan anggota team dan customer mengenal cara kerja system secara naratif.
  • Small Releases
    • Merilis setiap versi dalam waktu yang singkat.  
  • Forty-Hour Week
    • Jam kerja tidak melebihi 40jam perminggu untuk mencegah tingginya tingkat setres. Karena tingkat setres yang tinggi akan memperhambat kinerja.
  • Coding Standards
    • Naming conversion sangat penting untuk mempermudah anggota team lain memperbaiki dan mengerti code yang ada

Dari definisi di atas, XP menitik beratkan pada simple , cepat dan efisien. Untuk mencapai hal tersebut dibutuhkan orang- orang expert yang memiliki core value tersebut diatas dan melakukan XP praktik. Selain itu XP akan berjalan dengan baik apabila client bersedia terlibat dan mengerti dengan baik apa yang mereka inginkan. Serta tidak memiliki sifat tamak :D 

XP sendiri sebenarnya menarik untuk dilakukan dan sangat efisien. Tetapi pada kenyataan programming di Indonesia kebanyakan client tidak mengerti apa yang diinginkan sehingga sulit untuk menerapkan hal tersebut. 

Core ValueKenyataan di Real
Communication
Jarang terjadi komunikasi antara user dengan team developer dikarenakan client yang tidak terlalu mengerti mengenai apa yang mereka inginkan. Tidak jarang client meminta spesifikasi yang tidak memungkinkan padahal batas waktu pengerjaan tidak berubah. Hal itu membuat team developer enggan untuk melakukan komunikasi kepada pihak client.
Simplicity
Tidak jarang team developer membuat fitur yang mungkin akan terjadi di masa depan untuk membuat nilai jual software telihat lebih baik. Tetapi ketika ada kesalahan dalam flow utama, fitur berlebih itu ada kalanya memperlambat perbaikan. Sedangkan setelah dirilis, fitur tersebut ternyata tidak pernah digunakan, Itu sering kali hanya memperlambat pengembangan project
Feedback
Rendahnya komunikasi dengan client membuat jarang ada feedback yang diterima oleh pihak developer. Hal tersebut sering kali membuat developer kesulitan untuk memperbaikinya. Ada kalanya team developer sudah mengharapkan feedback tetapi pihak client tidak mengerti dengan baik apa yang diinginkan oleh pihak mereka sehingga tidak dapat memberikan feedback untuk memperbaiki system.
CourageBeberapa developer tentunya memiliki keberanian untuk merombak code. Karena memperbaiki code untuk kesalahan atau untuk mendapatkan hasil yang lebih efisien. 



XP Practice Kenyataan di Real 
PlanningPlaning memang sering dibuat sangat simple baik pembagian tugas maupun service yang akan dikerjakan
TestingTesting biasa baru dilakukan setelah banyak service telah siap digunakan.
Pair Programming 
Hal ini sangat jarang terjadi. Kebanyakan setiap developer memiliki tugasnya sendiri- sendiri. Menurut saya mungkin akan efisien ketika 2 orang mmelakukan pekerjaan pada 1 laptop. Karena mereka akan berfokus pada pekerjaannya tanpa melakukan selingan. Dan akan lebih cepat selesai karena solusi sangat cepat ditemukan. Serta akan membantu menemukan code yang lebih efisien.
Simple Design
Code yang dibangun sesuai dengan pribadi developernya. Tidak memadahinya resource IT membuat programmer- programmer baru tidak diperhatikan dan tidak mendapatkan nasihat mengenai simple code. Sehingga tidak jarang ada code- code yang tidak efisien di buat oleh programmer muda.
Refactoring the CodeTidak banyak team developer yang bersedia dengan ikhlas merefactor code mereka. Faktor- faktornya karena code mereka kebanyakan tidak simple dan sudah komplek sehinnga bila di refaktor mereka tidak tau apa ada module lain yang terkena imbas.
Owning the Code Collectively Tidak jarang developer satu sama lain tidak mengerti dengan detail pekerjaan yang lain. Sehingga memperbaiki code orang akan sangat beresiko. 
Continuous Integration Hal ini sudah cukup baik di terapkan pada keadaan saat ini. Integrasi dilakukan setelah system siap digunakan untuk melihat kesuksesan pengembangan system
On-Site CustomerHal ini juga sudah terjadi pada beberapa keadaan dan hal tersebut memudah dalam mendapat penjelasan. Karena walaupun menggunakan messanger, ada kalanya susah mendapatkan pemahaman yang tepat sesuai keinginan user.
System Metaphorp Rendahanya proses dokumentasi membuat hal ini jarang sekali dilakuka. Tidak jarang developer tidak mengetahui alur system keseluruhan dengan baik.
Small ReleasesHal ini sudah cukup sering dilakukan, ada kalanya developer team melakukan release per module sehingga progress bisa terlihat lebih jelas.
Forty-Hour Week Pada dasarnya jam kerja di kantor Indonesia adalah 8 jam sehari. Tetapi di XP mengharapkan 8 jam yang efisian. Tetapi ada kalanya developer tidak melakukannya dengan baik sehingga membuat pekerjaan tidak selesai pada waktunya. 
Coding StandardNaming sudah cukup sering dilakukan. Bahkan kebanyakan framework saat ini juga membantu dalam hal naming conversion. Hal itu tentunya sangat membantu dalam develop sebuah system.


Walaupun banyak dari perusahaan di Indonesia berusaha menerapkan agile metodology, tetapi masih banyak juga yang tidak menjalankan XP yang merupakan dasar dari metodology agile sebagai best praktiknya.
Masih berkembangnya IT di Indonesia masih membuat pengembangannya mengalami pasang surut kebahagiaan baik dari segi developer maupun client.

Semoga tulisan ini dapat menyadarkan kita sesama developer maupun client bahwa di dunia ini ada metodologi yang mendukung kebahagiaan client dan developer :D

No comments:

Post a Comment