Agile dengan Scrum


Catatan belajar  Scrum Agile Software Development dan tentang bagaimana Scrum Agile Software Development  mengubah cara orang berpikir tentang pengembangan perangkat lunak yang lebih baik dan fleksibel.

Apa itu Agile?

  1. Waterfall

    • Waterfall adalah sofware development adalah metoed yang digunakan sebelum “Agile” diperkenalkan.
    • Waterfall menggunakan  “consistent sequences of stages” atau proses berurutan yang konsekuen (dan tentunya sulit mengadaptasi perubahan) yaitu pada setiap tahapnya yaitu pada tahap Design, Build dan Test.
    • waterfall
    • Proses-proses berurutan tersebut biasanya  melibatkan group (orang-orang) yang berbeda dan atau bahkan departement yang berbeda untuk melakukan setiap tahap tersebut (Design, Build dan Test), dimana setiap pekerjaan pada suatu tahap telah  diselesaikan suatu grup/department maka mereka akan melemparkan pekerjaan tersebut ke grup/depertemen ditahap selanjutnya.
    • Masalahnya adalah saat handoff (perpindahan pekerjaan) pekerjaan ke group/depertemen di step selanjutnya ini terkadang seperti melemparkan pekerjaan ke balik tembok begitu saja karena group selanjutnya yang melakukan handoff pekerjaan tersebut tidak banyak komunikasi dengan group sebelumnya yang berada diproses sebelumnya.
    • Beberapa masalah lain yang sering muncul adalah:
      • Perbedaan interpretasi dari tiap group di setiap proses yang berbeda dapat menghasilkan perangkat lunak yang jauh berbeda dari apa yang diharapkan pada awalnya sehingga banyak waktu dan biaya yang terbuang karenanya.
      • Tidak banyak kesepatan untuk melakukan perubahan selama proses proses  sedang berjalan.
      • Bila tidak memungkinakan melakukan perubahan dalam project seperti merubah priorities dan mengadaptasi masukan-masukan berharga yang didapatkan dari luar maka bisa jadi product yang dikembangkan sudah out of date dan tidak lagi menarik saat di release dan tidak bisa bersaing dengan kompetitor.
      • problem-with-waterfall
      • Masalah diatas timbul karena tidak adanya kolaborasi antara group/departement di tiap level proses yang berbeda.
  2. Agile Manifesto

  3. Jenis-jenis “agile”

    1. Scrum
    2. Lean and Kamban
    3. Extreme Programming (XP) seperti termasuk: Pair programming, Code Review, Test Driven development dan Unit Testing.
    4. jenis2scrum
  4. Apa yang “Agile” dapat lakukan untukku ?

    • Agile bertujuan untuk mengatasi masalah umum dalam pengambangan software, praktik penggunaan Agile merubah dari sekedar membuat dokumen formal mengenai design dan requirement terlebih dahulu menjadi lebih mengajak  customer untuk terlibat ebih jauh dalam mencari solusi bersama-sama dalam proses-proses iterative, Agile team berusaha untuk mengurangi resiko dalam pengambangan software dengan kemampuan untuk merespon perubahan.
    • Mengapa penting belajar Agile Software development :
      • Pertimbangkan ini: menambah kemampuan untuk bekerja dengan orang lain, kesempatan untuk melamar pekerjaan yang lebih terbuka terhadap orang-orang yang memiliki keahlian Agile Software development.
      • Kita menemukan banyak banyak software developer bekerja secara sendiri namun dengan belajar Agile kita menambah kemampuan dalam bekerja sama dalam team bahkan saat team tersebut tidak mengimplementasikan Agile kemapuan tersebut misalnya kemampuan untuk mengatur prioritas pekerjaan dan bagaimana mengajak customer untuk terlibat dalam perkerajaan.
      • Selanjutnya kita fokus dengan satu agile model yaitu Scrum.
  5. Review, “Jadi apa itu Agile ?”

 Agile software development mendorong komunikasi dalam team dan self-organization dimana sukses utama diukur dengan software yang berfungsi. mengajak serta customer dalam tahap development dan dapat merespon  requirement yang berubah-ubah.

Scrum Basic

  1. What is Scrum
    1. Scrum mendorong komunikasi dalam team  dan self organization dimana sukses utama adalah diukur dari Software yang berfungsi, meilbatkan pendapat/suara consumen dalam tahap proses pengambangan dan kemampuan merespon requirment yang berubah-ubah.
    2. Metodologi scrum adalam model dari Agile yang terdiri dari well defined framework untuk melakukan pengembangan software dalam sebuah team.
    3. Scrum berasal dari olahraga rugby yaitu:
      • In rugby union a scrum is a means of restarting play after a minor infringement. It involves up to eight players from each team, known as the pack or forward pack, binding together in three rows and interlocking with the free opposing teams forwards.
      • Makna sesuai kontek Agile:
      • scrum_adalah
    4. Who
      1. Roles of Scrum team:
        • who-terdiri-dari
        • Product Owner
          • Berperan sebagai perwakulan dari sura customer dan berperan dalam mengurus product backlog. product owner memiliki tanggung jawab untuk menentukan apa yang harus team kerjakar beserta urutan pengerjaannya.
            • Orang di luar scrum team yang juga menentukan bagaimana program ini seharusnya di sebut stackholder (Client, Customer, Manager di luar scrum team dll). product owner harus berkomunikasi dengan para stackholder mengenai produk dan prioritas pengerjaannya.
            • Daftar tugas Product Owner :
              • Menentukan apa yang dikerjakan team
              • Menentukan urutan prioritas pekerjaan
              • Menyimpan items pekerjaan di product back log
              • Bekerja dengan stackeholder untuk memahami kebutuhan bisnis proses
              • Bekerja dengan customer juga untuk memahami kebutuhan bisnis proses
              • Tidak ada orang lain yang memiiki kewenangan untuk meminta development team dalam mengerjakan sesuatu. stakeholder atau siapapun di luar team harus berbicara dengan product owner dalam pengerjaan sesuatu fitur atau perubahan oleh team scrum.
              • Secara umum product owner memiliki kewajiban memastikan visi dari sebuah product untuk sesuai dengan roadmap.
              • Product owner harus bisa berkomunikasi dengan baik bagaimana pengerjaan product kedepan.
              • Product Vision dan Product road map adalah bagian dari disiplin ilmu product management di Scrum hal ini tidak dijelaskan secara spesific.
              • Tugas Utama:
                • Mengurus backlog
                • untuk sekarang kita cukup berfikir bahwa backlogs adalah to-do list untuk team.
                • Mengurus urutan pengerjaan dimana yang paling penting adalah yang paling atas.
                • Pada umumnya product backlog item (PBI) dibuat dalam bentuk user story:
                  • User stories mendefine:
                    • Siapa usernya
                    • apa yang mereka perlukan
                    • dan mengapa mereka memerlukan
                • Product owner harus available dalam berjalannya sebuah sprint
                • Developer berkomunikasi dan bertanya pada product owner tentang pekerjaan yang telah mereka kerjakan atau mereviewnya.
                • Transfer informasi antara product owner dan developer bukan handoff tapi collaboration.
        • Scrum Master
          • Merupakan suatu posisi yang spesial dalam scrum dimana scrum master berperan untuk memastikan pekerjaan team berjalan dengan baik dan mulus dengan memfasilitasi scrum dan menghilangkan hambatan dalam proses yang sedang dikerjakan. semua hal yang terjadi dan dilakukan oleh team dalam mengerjakan pekerjaan mereka dalam sprint haru menjadi perhatian seorang scrum master.
          • Dengan peran ini maka scrum master adalah fasilitator scrum dan harus bersifat tegas dalam memastikan tema tidak mengerjakan hal yang menyimpang dari perkerjaan seharusnya maupun dari scrum sprint,dan memastikan sprint tetap berjalan pada track yang benar.
          • Scrum master mengurus logistic dan menjadwal berbagai scrum events dan mengelola srum tools.
          • Scrum master bertugas memastikan bahwa team tidak terganggu dan terpecah konsentrasinya oleh pekerjaan diluar sprint bahkan oleh product owner.
        • Development Team Member
          • Seua orang yang menulis dan mengetes code, bertanggung jawab untuk self-assigning tugas dan mengecek apakah perkerjaan sudah sesuai dengan acceptance kriteria.
          • Berkomitment untuk menyelesaikan pekerjaan-pekerjaan dalam suatu sprint.
          • Berbagi definition of done dan mengeset standar yang digunakan dan disepakati dalam team sebelum mereka menyatakan backlog items selesai.
          • Idealnya scrum team member memiliki fungsi yang bersilangan yang artinya merkea punya keahlian yang fleksible dalam berkontribusi didalam team, misalnya frontend developer di dalam team tapi jaka ada pekerjaan lain dalam print tsb yang membutuhkan bantuannya maka dia akan ikut berpartispasi dalam menyelesaikan tugas tersebut. hal ini karena Output dari team lebih penting dari pada output personal team member.
          • Team member dapat bertanya pada scrum master tentang bagaimana team membawa sprint tetap melaju kedepan.
          • Dalam scrum development team direpresentasikan oleh programmer yang bertanggung jawab menulis dan mengetest code.
    5. What and When
      1. Sprint
        1. Adalah sebuah iterasi yang dilaksanakan oleh team.
        2. Team dapat menghabiskan beberapa sprints dalam mempersiapkan release dari sebuah software.
        3. Spring dimulai dengan komitmen team tentang pekerjaan yang akan diselesaikan dan berakhir dengan demonstrasi product.
        4. Ketika banyak details dari item backlog dapat ditemukan sebelum team memasuki sprint sebgaian besar pekerjaan untuk dibangun dan di test berlangsung ditengah-tengah sprint.
        5. Maximum sprint tidak boleh lebih dari satu bulan atau mengacu pada timebox yang disepakati bersama.
        6. Panjang waktu sebuah Sprint tidak boleh melebihi dari batasan yang telah di tentukan dan semua orang berkomitmen untuk mnyelesaikan pekrjaan dalam waktu sprint yang telah disepakati.
        7. Sprint baru segera dimulai setalah sprint sebelumnya selesai.
        8. kalimat “Potentially shippable product” ini adalah hal penting yang sering dibahas selama sprint ini karena seperti yang telah di deklarasikan dalam agile manifesto, “We value working software over comprehensive documentation”, yang artinya disini kita akanmemiliki software yang di design, dibangun dan di test.
      2. Scrum Events (Scrum Ceremonies)
        1. Terdpat berberapa event yang mendukung berjalannya Scrum yaitu:
          1. Sprint planning
            • Team berkumul untuk mempersiapkan sprint baru, mempersiapkan items mana saja yang akan di dlam sprint baru tersebut.
          2. Daily standup
            • Pada daily standup angguta team menginformaikan tentang status pekerjaannya, apakah ada kendala atau issue yang menghambat.
          3. Backlog refinement
            • Team melakukan review terhadap backlog items dan diperkirakan tingkat kesulitan pengerjaannya.
          4. Sprint Review
            • Pada sprint review kita melakukan demonstrasi pada stakeholders tentang fungsionalitas product.
          5. Retrospectif
            1. Team menunetukan area dimana dapat dilakukan perbaikan dan menentukan goal yang terukur untuk sprint selanjutnya
    1. Why and How
  1. bersambung ….

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s