Sejarah singkat • lahir di pertemuan para senior di dunia pengembangan software di Utah tahun 2001 untuk menyusun new management paradigm. • 17 pioneer mendiskusikan agile methodology tepatnya di Snowbird Ski Resort di Utah dan menelurkan “Agile Manifesto”. 1. Kent Beck 7. James Grenning 13. Robert C. Martin 2. Mike Beedle 8. Jim Highsmith 14. Steve Mellor 3. Arie van Bennekum 9. Andrew Hunt 15. Ken Schwaber 4. Alistair Cockburn 10. Ron Jeffries 16. Jeff Sutherland 5. Ward Cunningham 11. Jon Kern 17. Dave Thomas 6. Martin Fowler 12. Brian Marick Agile manifesto Apa itu agile ? • Agile adalah suatu metode Pengembangan yang punya rentang waktu singkat (time box), dikerjakan terus-menerus secara incremental (iterative) dimana kebutuhan dan fitur dari aplikasi terus berkembang dan dapat berubah selama masa pengembangan melalui kolaborasi antar anggota tim dan pengguna. • Agile bekerja dengan memecah kebutuhan proyek menjadi kebutuhan-kebutuhan pengembangan yang kecil yang disebut dengan user stories untuk kemudian di proses dalam cycle pengembangan yang disebut dengan iterasi/sprint. Fitur yang ditawarkan Iterative • Seluruh pekerjaan di distribusikan secara incremental dan disebut iterasi • Pengembangan hanya focus kepada iterasi yang sudah di susun dan sifatnya cepat (mingguan) • Setiap iterasi singkat dan sifatnya meneruskan dari itearsi sebelumnya dan mengikuti prioritas yang ingin dikembangkan Feature driven • Pengembangan berdasarkan prioritas dari fitur yang memberikan dampak/value yang nyata. • Prinsip 80/20 dimana berfokus untuk menyediakan 20% fitur utama yang akan digunakan untuk mengcover 80% pekerjaan pengguna Active Customer involvement • User akan ikut dalam proses sprint untuk menyediakan kebutuhan • Setiap iterasi akan di test dan di tunjukan ke client untuk mendapatkan persetujuan fitur sudah sesuai kebutuhan Fitur yang ditawarkan Priority based delivery • Penerapan prioritas terhadap fitur/user stories yang ada • Prioritasi bukan hanya terhadap kebutuhan user, namun juga kebutuhan teknis/team yang ada • Prioritas yang paling tinggi dan di kerjakan lebih dahulu • Prioritasi dievaluasi pada setiap iterasi karena prioritasi bisa berubah pada perjalanan pengembangan Adaptive • Perubahan sangat di terima pada saat proses pengembangan • Tim sangat adaptif terhadap perubahan pada proses pengembangan Empowered Teams • Biasanya tim agile sedikit (maksimal 9) dan dengan interaksi/komunikasi yang baik • Keputusan diambil bersama, tidak murni ada di ketua proyek • Apabila dibutuhkan tim yang besar, tim sprint akan ditambah dan masing-masing sprint tim punya fokusnya masing-masing Fitur yang ditawarkan People Centric • Kemampuan tim lebih sangat dibutuhkan ketimbang proses baku yang harus diikuti • Dokumentasi dan aktifitas yang tidak berdampak pada pengembangan menjadi prioritas yang rendah • Tim yang baik adalah apabila memiliki disiplin kemampuan yang beragam, ketimbang spesialis pada skil tertentu saja Rapid development • Seluruh proses tersambung dari awal sehingga dibutuhakan presisi pada setiap iterasi dari awal Simplicity • Mengedepankan solusi simple dan cepat Fixed Time • target pekerjaan/iterasi sifatnya sebentar (mingguan) Cara kerja Membuat list kebutuhan: • Berdiskusi dengan user dan mengumpulkan seluruh kebutuhan fitur dari software. Biasanya disebuh sebagai user stories dan akan mejadi list kebutuhan Memberikan bobot: • Tim melakukan estimasi secara relative terhadap user stories yang ada agar mendapat gambaran kasar lama pekerjaan Memberikan prioritasi: • Tim memberikan prioritasi bersama user mengenai fitur mana yang paling penting dan perlu ada terlebih dahulu sehingga bisa disusun list dengan urutan prioritas tertinggi Cara kerja pengembangan: • Pengembangan adalah saat value di buat melalui proses pembuatan aplikasi. Aplikasi yang disusun berdasarkan fitur paling prioritas terlebih dahulu dan tidak perlu lengkap dahulu untuk bisa digunakan oleh user. Perubahan di tengah proses : • Pada saat proses iterasi, biasanya akan ditemukan beberapa hal seperti: – Development sesuai target – Kebutuhan development menjadi terlalu banyak • Pada tahap ini, akan ada keputusan yang perlu diambil: – Potong scope pengembangan sesuai dengan budget kontrak awal – Negosiasi kontrak atas perubahan yang terjadi Mengapa perlu menggunakan agile • Meningkatkan Keterlibatan Pelanggan • Meningkatkan kualitas hasil pengembangan • Penyederhanaan delivery • Menurunkan risiko gagal karena tidak sesuai kebutuhan pengguna Kapan sebaiknya menggunakan pendekatan agile • User bersedia untuk ikut di tiap tahap pengembangan • Hasil software dapat di pecah-pecah delivery nya • Kebutuhan fleksibel/user belum tau secara lengkap kebutuhannya • Skill tim yang mumpuni Keuntungan yang bisa di dapat Untuk customer • User lebih aktif terlibat dan masukannya adalah prioritas utama • User mengetahui status secara teratur dan sering • User confirm terhadap tiap hasil pengembangan • Delivery value lebih cepat dan user lebih cepat menggunakan fitur yang dikembangkan tanpa menunggu semuanya lengkap • Lebih banyak pengujian dilakukan sehingga bagi pengguna, tidak banyak kesalahan yang ditemukan pada saat penggunaan software Keuntungan yang bisa didapat Untuk team • Tim proyek terlibat lebih aktif di semua tahapan • Tim secara kolaboratif mengambil keputusan • Pengembangan bersifat Incremental sehingga bisa lebih focus • Fokus pada pengembangan aplikasi • Tim sering menerima umpan balik saat pengujian sehingga rework terhindari • Lebih sedikit waktu yang dihabiskan untuk mengumpulkan kebutuhan karena semua kebutuhan tidak dikumpulkan di awal secara lengkap; Keuntungan yang bisa didapat Untuk team • Cost of development lebih rendah karena hanya focus kepada pengembangan software nya • Tim mengembangkan aplikasi secara kolaboratif dan dalam lingkungan kooperatif • Diskusi non teknis jarang dilakukan sehingga tidak membuang waktu yang tidak perlu bagi tim yang kebanyakan teknikal Kekurangan agile • Dalam hal beberapa pengembangan software, terutama yang besar, di awal proyek akan sulit untuk menilai effort yang diperlukan • Proyek dapat dengan mudah keluar jalur jika user tidak paham atas kebutuhannya • Hanya programmer senior/yang punya skill mumpuni yang mampu mengambil keputusan yang diperlukan selama proses pengembangan karena keputusan harus cepat dan tepat. Oleh karena itu tidak ada tempat untuk programmer pemula, kecuali jika dikombinasikan dengan programmer senior. Waterfall vs agile Waterfal vs agile Perbedaan Traditional Agile Requirement Tetap di awal Dapat berubah Time & people Bisa berubah Sebaiknya tetap Customer involvement Di awal dan di akhir Dari awal sampai akhir Negotiable Minim Tinggi Testing Setelah selesai semua Setelah selesai sprint Feedback Setelah selesai semua Setelah selesai sprint Concentration on Proses dan review Hasil iterasi Focus Terhadap rencana awal Terhadap value yang akan dihasilkan Stages Requirment – design – code – test – Plan – do – check - adjust feedback Metodologi pendekatan agile • Scrum • Extreme Programming (XP) • Dynamic Systems Development Method (DSDM) • Feature-Driven Development (FDD) • Lean and Kanban Software • Development • Crystal Thank You
Pendekatan sederhana untuk SEO: Bagaimana memahami dasar-dasar optimasi mesin pencari dengan cara yang sederhana dan praktis melalui jalur penemuan non-spesialis untuk semua orang