Akhir-akhir ini kita sering sekali mendengar kata agile. Sebenarnya apa itu agile ? Menurut kamus Oxford, agile adalah kemampuan untuk bergerak dengan cepat dan mudah. Biasanya digunakan untuk menggambarkan cara bekerja dimana tempat, waktu dan peran orang yang mengerjakannya dapat disesuaikan sesuai dengan kebutuhan.
Di dalam dunia proyek pengembangan perangkat lunak, sering kita mendengar agile methodology. Jadi apakah agile itu suatu metodologi ? Metodologi itu terdiri dari Metode (Methods), Prosedur (Procedures) dan Aturan (Rules), sedangkan agile bukanlah metode maupun prosedur. Jadi agile bukanlah metodologi. Agile merupakan panduan untuk memilih metode dan prosedur.
sumber: https://www.youtube.com/watch?v=ZZ_vnqvW4DQ
Nilai dan prinsip agile tidak berusahan untuk menetapkan cara tim anda seharusnya bekerja, namun fokus membantu anda dan tim untuk beripikir (THINK) dan berinteraksi (INTERACT) untuk mencapai Agility. Jadi bisa disimpulkan bahwa Agility adalah kemampuan untuk terus beradaptasi dan melakukan perbaikan pada cara Anda bekerja.
Ada beberapa metodologi pengembangan perangkat lunak (Software Development Methodology) yang mengikut nilai dan prinsip agile, diantaranya SCRUM & Extreme Programming.
Agile mempunyai 4 nilai (values) dan 12 prinsip (principles).
Nilai (Values) :
- Lebih mengutamakan individu dan interaksi dibandingkan proses dan alat (Individuals & Interactions over Process & Tools).
- Lebih mengutamakan perangkan lunak yang berfungsi dibadingkan dokumen yang komprehensif (Working Software over Comprehensive Documentation).
- Lebih mengutamakan kerjasama dengan pelanggan dibadingkan negosiasi kontrak (Customer Collaboration over Contract Negotiation).
- Lebih mengutamakan merespons perubahan dibadingkan mengikuti rencana (Responding to Change over Following a Plan).
Prinsip (Principles) :
1. Memuaskan pelanggan (Satisfy the CUSTOMER) :
Prioritas utama kami adalah memuaskan pelanggan melalui pengiriman perangkat lunak berharga secara dini dan berkelanjutan.
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Menyamput perubahan (Welcome CHANGE) :
Menyambut perubahan kebutuhan, bahkan yang telat dalam pengembangan. Proses agile memanfaatkan perubahan untuk keunggulan kompetitif pelanggan.
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
3. Sering mengirimkan (Deliver FREQUENTLY) :
Pengiriman perangkat lunak yang berfungsi secara berkala, dari beberapa minggu hingga beberapa bulan, dengan preferensi pada skala waktu yang lebih singkat.
Delivery working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. Bekerja sama (Work TOGETHER) :
Pelaku bisnis dan pengembang harus bekerja sama setiap hari sepanjang proyek.
Business people and developers must work together daily throughout the project.
5. Kepercayaan dan dukungan (Trust and SUPPORT) :
Bangun proyek di sekitar individu yang termotivasi. Beri mereka lingkungan dan dukungan yang mereka perlukan, dan percayakan mereka untuk menyelesaikan pekerjaannya.
Build projects around motivated indiviudals. Give them the environment and support they need, and trust them to get the job done.
6. Percakapan tatap muka (Face-to-face CONVERATION) :
Metode penyampaian informasi yang paling efisien dan efektif ke dan di dalam tim pengembangan adalah percakapan tatap muka.
The most efficient and effective method of conveying information to and witin a development team is face-to-face conversation.
7. Perangkat lunak yang berfungsi (Working SOFTWARE) :
Perangkat lunak yang berfungsi adalah ukuran utama kemajuan.
Working software is the primary measure of progress.
8. Pengembangan berkelanjutan (Sustainable DEVELOPMENT) :
Proses agile mendorong pengembangan berkelanjutan. Sponsor, pengembang, dan pengguna harus dapat mempertahankan kecepatan yang konstan tanpa batas waktu.
Agile process promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
9. Perhatian terus menerus (Continuous ATTENTION) :
Perhatian terus-menerus terhadap keunggulan teknis dan desain yang baik akan meningkatkan agility.
Continuous attention to technical excellence and good design enhances agility.
10. Menjaga kesederhanaan (Maintain SIMPLICITY) :
Seni memaksimalkan jumlah pekerjaan yang belum selesai – sangatlah penting.
The art of maximizing the amount of work not done – is essential.
11. Tim yang mengatur dirinya sendiri (Self-organizing TEAMS) :
Arsitektur, kebutuhan, dan desain terbaik muncul dari tim yang mengatur dirinya sendiri.
The best architectures, requirements, and designs emerge from self-organizing teams.
12. Merefleksikan dan menyesuaikan (Reflect and ADJUST) :
Secara berkala, tim merenungkan bagaimana menjadi lebih efektif, kemudian menyetel dan menyesuaikan perilakunya.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavious accordingly.