Kenalan dengan Extreme Programming
Extreme Programming (XP) merupakan metodologi yang berfokus kepada penerapan teknik pemrograman yang excellence, komunikasi yang jelas, dan kerja sama yang baik. Selain technical excellence, kita melihat bahwa XP juga fokus kepada aspek sosial dalam pengembangan software, yaitu komunikasi dan kerja sama. Komunikasi dan kerja sama yang baik akan membantu tim untuk memiliki produktivitas yang tinggi dan lingkungan yang kondusif dalam membangun software.
Menggunakan XP, tim akan mengembangkan software dalam siklus yang singkat, dikenal dengan istilah iterasi. Sebagai contoh, satu iterasi dapat memiliki durasi 2 minggu atau 1 bulan. Dalam iterasi tersebut, tim akan menghasilkan fitur (atau potongan fitur) dengan prioritas tinggi dan memperoleh feedback yang dibutuhkan. Feedback akhirnya didapatkan lebih cepat dan lebih awal untuk membuat software lebih baik.
Pendekatan perencanaan yang digunakan XP dalam membangun software termasuk pendekatan incremental. Artinya rencana pengembangan dapat berubah secara adaptif sesuai situasi pengembangan software dalam proyek. Perubahan ini diakomodasi untuk menjawab kebutuhan bisnis yang berkembang melalui iterasi dan penyesuaian jadwal implementasi fitur dalam rencana pengembangan.
Sebagai metodologi, XP memiliki sekumpulan praktik (practices) dan nilai (values) untuk mencapai technical excellence. Kita akan membahas lebih detail praktik utama dan nilai dalam XP.
Memiliki keunggulan teknis yang begitu baik (technical excellence) dalam membangun software merupakan dambaan bagi tim maupun organisasi. Tim dengan technical excellence mampu membangun software dengan kualitas tinggi. Memiliki software yang kinerjanya baik, dapat diandalkan, dan minim kesalahan tentu menjadi hal yang disenangi klien maupun pengguna. Metodologi yang dapat kita gunakan untuk membantu tim untuk mencapai technical excellence adalah Extreme Programming.
Continuous Integration
Kode yang sudah dibuat oleh banyak developer dalam tim diintegrasikan kemudian dilakukan test atau pengujian secara otomatis. Praktik ini akan memudahkan tim untuk menemukan feedback lebih cepat, karena prosesnya dilakukan otomatis. Jika ada masalah saat integrasi, tim akan mendapatkan notifikasi. Continuous Integration juga membuat proses rilis software lebih cepat. Kode-kode yang berhasil digabungkan dan berhasil melalui test integrasi berarti siap dirilis ke lingkungan staging atau produksi.
Nilai atau value akan menjadi landasan bagi praktik. Tanpa nilai, praktik akan kehilangan makna dan tanpa arah. Lima nilai dalam XP yang memandu pengembangan adalah komunikasi, kesederhanaan, feedback, keberanian, dan rasa menghormati.
Test-First Programming
Test-First Programming merupakan pendekatan pemrograman dengan cara menyusun kode untuk test terlebih dahulu sebelum menyusun kode untuk aplikasi pengguna. Kode untuk test disusun berdasarkan beberapa skenario yang tertuang dalam User Story. Ketika kode untuk test dijalankan, hasilnya pasti gagal atau tidak lulus test karena memang kode untuk aplikasinya belum dibuat. Selanjutnya kode untuk aplikasi dibuat sehingga kode aplikasi bisa lulus dari pengujian oleh kode untuk test.
Dengan pendekatan ini, tim akan memiliki automated testing. Setiap perubahan yang dilakukan di tengah pengembangan akan jauh lebih aman. Misalnya ada bagian aplikasi yang diubah, tim akan menjalankan automated test untuk memastikan fitur atau fungsi yang sudah dibuat sebelumnya tetap berjalan dengan baik (yang berarti masih lulus test). Jika ada fitur atau fungsi yang gagal atau tidak lulus test, tim akan memeriksa bagian kode dari fitur atau fungsi tersebut dan memperbaikinya.
Rasa menghormati (respect)
Agar kerja sama dan kolaborasi dalam pengembangan berjalan efektif, setiap individu yang terlibat perlu memiliki rasa hormat atau respect terhadap satu sama lain. Individu dalam tim menaruh respect terhadap rekan kerjanya, apapun peran dan jabatannya. Tim menghormati klien, begitu pula sebaliknya. Rasa saling menghormati akan menciptakan lingkungan yang kondusif dan nyaman bagi pengembangan.
Rasa menghormati juga berarti peduli terhadap cara kerja yang digunakan bersama, baik yang berasal dari kesepakatan tim maupun kebijakan perusahaan. Hal ini juga berdampak pada kepedulian terhadap kesuksesan proyek sebagai kesuksesan bersama.
Demikian artikel mengenai extreme programming dari Badr Interactive, jika Anda ingin berdiskusi lebih lanjut mengenai teknik programming yang biasanya digunakan dalam industri, Anda bisa menghubungi kami disini.
Jika kamu bermain dengan kemungkinan atau kesempatan yang diukur oleh probabilitas di dalam game. Kamu mungkin sangat kesal jika hasil probabilitas tidak sesuai dengan yang kamu inginkan. Tak jarang, kamu menyalahkan hoki kamu atau bahkan menyalahkan sistem di dalam game atas apa yang kamu alami. Kemungkinan dan kehokian kamu ternyata ditentukan oleh bilangan probabilitas ini ternyata tidak jarang terjadi di dalam game. Bilangan probabilitas ini disebut juga dengan RNG.
RNG di sini bukanlah tim Dota 2 atau League of Legends melainkan kepanjangan dari Random Number Generator dan merupakan bilangan probabilitas yang menjadi penentu hasil yang kamu dapatkan.
Kemungkinan ini baik berupa critical chance, item drop di dalam game, atau draw yang tidak sesuai dengan yang kamu inginkan.
Pada game kompetitif, menghitung probabilitas ketika bermain tidaklah sesulit menghitung probabilitas untuk mendapatkan skin yang kita harapkan. Perhitungan ini biasanya dilakukan oleh pemain yang memiliki kemampuan bermain di atas rata-rata untuk memperkecil ketergantungan terhadap hoki.
Sebagai contoh, kamu bermain game MOBA dan membeli item-item yang menambah critical chance. Penambahan critical chance ini merupakan cara agar kamu bisa mendapatkan critical damage yang kamu inginkan berdasarkan probabilitas critical. Menghitung chance ini akan sangat membantu kamu untuk memprediksi damage yang kamu berikan kepada musuh. Atau contoh lainnya adalah ketika bermain TGC, pemain biasanya menghitung jumlah kartu dan mengingat kartu yang telah di draw yang bertujuan untuk memprediksi kartu yang akan keluar agar dapat melancarkan strategi untuk mencapai kemenangan.
Sejatinya, RNG bisa membuat hasil sebuah pertandingan jadi tidak menentu. Sekilas ini tentu sangat dibenci di game kompetitif di mana pemain ingin melihat siapa yang lebih baik dalam permainan yang adil dan konsisten. Tidak ada pemain yang mau tiba-tiba kalah karena faktor acak yang tidak bisa mereka kendalikan padahal mereka bermain lebih baik.
Tapi percayalah, jika dikelola dengan baik, hal yang acak dalam sebuah game justru membuat game tersebut tidak hanya menarik untuk dimainkan tapi juga disaksikan.
Baca juga: Arti Smurf di Game Kompetitif
Komunikasi (communication)
Ini merupakan nilai yang penting dalam pengembangan. Software dibangun oleh tim yang terdiri dari banyak individu. Masing-masing individu memiliki pengalaman, kemampuan, dan latar belakang yang berbeda-beda. Komunikasi yang baik akan membangun kerja sama yang solid di antara mereka. Komunikasi juga akan mempererat hubungan antara tim dengan klien dan pengguna. Banyak masalah dalam pengembangan yang mampu diselesaikan melalui komunikasi yang terjalin baik.
Praktik Utama dalam XP
Praktik merupakan hal yang dilakukan. Dalam XP, praktik yang membantu meningkatkan kualitas software dilakukan oleh tim, tidak hanya dilakukan di level biasa namun dilakukan di level yang “extreme”. Beberapa praktik utama yang umum dilakukan dalam XP adalah sebagai berikut:
Dalam membangun software, bekerja di ruangan yang sama merupakan cara yang efektif. Komunikasi terjadi secara instan. Hambatan bisa dikomunikasikan dengan cepat. Terjadi percakapan dan interaksi yang menyenangkan. Inilah praktik yang dinamakan Sit Together atau Duduk Bersama.
Bayangkan suatu skenario dimana anggota tim bekerja di tempat yang terpisah padahal berada di satu gedung yang sama. Skenario lainnya adalah anggota tim bekerja dalam satu ruangan yang sama. Kita bisa membayangkan komunikasi dan diskusi pada tim yang bekerja dalam satu ruangan yang sama lebih baik, mengalir, dan effortless.
Praktik ini mendorong agar tim untuk memiliki peran-peran yang utuh yang dibutuhkan untuk kesuksesan proyek. Istilah lainnya adalah tim yang lintas peran (cross functional). Jika sistem yang dibangun membutuhkan Database Expert, tim perlu memiliki peran tersebut. Jika proyek membutuhkan analisis data, peran Data Analyst atau Data Engineer perlu hadir dalam tim.
Praktik ini juga menekankan agar peran-peran tersebut bekerja sebagai tim. Mereka bekerja dalam satu tujuan yang sama untuk kesuksesan proyek. Mereka mendukung satu sama lain dalam kerjaan dan pembelajaran bersama.
Keberanian (courage)
Ada banyak isu yang niscaya dihadapi tim dalam pengembangan. Nilai keberanian akan membantu tim untuk mengkomunikasikan isu yang ada ke internal tim, manajemen perusahaan, atau klien. Hal ini juga berarti mengambil keputusan terbaik pada situasi tersebut untuk menyelesaikan isu yang muncul.
Sebagai contoh, di tengah pengembangan proyek, tim menerima feedback yang tampaknya sederhana menurut klien, namun hal ini membutuhkan usaha atau effort yang besar untuk mengakomodasi feedback tersebut. Pada situasi ini, tim akan berani mengkomunikasikan effort dan batasan yang ada ke klien sehingga keputusan yang diambil adalah keputusan terbaik untuk kesuksesan bersama.
Umpan balik atau masukan (feedback)
Apa hal yang membuat tim menjadi lebih baik? Lalu apa hal yang membuat software yang dikembangkan juga menjadi lebih baik? Ya itu adalah masukan atau feedback. Feeback bisa datang dari siapapun: individu dalam tim, pengguna, maupun klien. Banyak hal yang dapat berkembang dalam pengembangan: requirements, arsitektur sistem, teknologi, pola desain, tren pasar (market), dan sejenisnya. Feedback memungkinkan tim dan klien untuk mengubah arah pengembangan jika diperlukan sehingga software yang didapatkan lebih optimal dan sesuai kebutuhan.
Kesederhanaan (simplicity)
Nilai kesederhanaan mempengaruhi bagaimana arsitektur sistem didesain dan fitur dikembangkan. Arsitektur sistem atau fitur yang sederhana namun bekerja sesuai kebutuhan akan meminimalkan waste, misalnya tim membangun sesuatu yang biayanya mahal namun sebenarnya belum dibutuhkan.