Ketika perangkat lunak pertama kali dikembangkan, proses pengembangan tidak sesuai dengan segala jenis tata kelola. Kemudian muncullah air terjun , yang memperkenalkan gagasan bahwa pengembangan perangkat lunak dapat ditentukan pada saat aplikasi dibuat atau dibangun.
Biasanya diperlukan waktu lebih lama untuk menguji dan menerapkan perangkat lunak daripada sekarang karena tidak ada keseimbangan dan tidak ada pemeriksaan di antaranya selama proses pengembangan. Akibatnya, kami menerima perangkat lunak berkualitas rendah dengan kesalahan dan bug, dibuat lebih lama dari tenggat waktu yang ditetapkan. Fokus utamanya adalah pada perencanaan proyek yang panjang dan berlarut-larut.
Desain air terjun telah dikaitkan dengan model kendala tiga, juga disebut segitiga manajemen proyek. Setiap sisi segitiga mewakili salah satu kendala manajemen proyek: skala , waktu, dan biaya . Seperti yang ditulis Angelo Beretta , model kendala rangkap tiga menyatakan bahwa “biaya adalah fungsi dari waktu dan volume, dan ketiga faktor ini terkait dengan cara tertentu dan dapat diprediksi… Jika kita ingin mempersingkat waktu tunggu (waktu), kita harus meningkatkan biaya. Model tersebut juga menyiratkan bahwa jika kami ingin meningkatkan volume, kami harus meningkatkan biaya atau waktu tunggu. "
Pindah dari Air Terjun ke Agile
Air terjun datang kepada kami dari produksi dan teknik mesin, yang sulit dibayangkan tanpa proses linier. Sebelum Anda membangun atap, Anda membangun dinding. Masalah pengembangan perangkat lunak juga dipandang sebagai sesuatu yang dapat diselesaikan melalui perencanaan.
Pada akhirnya, air terjun dikenali sebagai pendekatan yang berbahaya, berlawanan dengan pendekatan intuitif untuk pengembangan perangkat lunak. Sangat sering nilai sebuah proyek tidak dapat ditentukan hingga akhir siklus proyek. Dalam banyak kasus, proyek gagal. Selain itu, pelanggan tidak melihat perangkat lunak yang berfungsi hingga proyek selesai.
Agile menyiratkan pendekatan berbeda yang menjauh dari perencanaan seluruh proyek, mengikat tanggal perkiraan dan laporan. Metodologi tangkas mengasumsikan dan memperhitungkan ketidakpastian. Ini mendorong Anda untuk bereaksi terhadap perubahan, bukan mengabaikannya. Perubahan dipandang sebagai cara untuk memenuhi kebutuhan pelanggan.
Nilai-nilai tangkas
Agile diatur oleh Agile Manifesto. Inilah 12 prinsipnya :
- Kepuasan pelanggan adalah prioritas tertinggi.
- Mengubah persyaratan didorong, bahkan di tahap pengembangan selanjutnya.
- Produk yang berfungsi harus dirilis sesering mungkin.
- Pengembang dan perwakilan bisnis harus bekerja sama.
- Para profesional yang termotivasi harus mengerjakan proyek tersebut.
- Komunikasi langsung adalah cara paling praktis dan efektif untuk bertukar informasi.
- Produk yang berfungsi adalah indikator utama kemajuan.
- Proses tangkas berkontribusi pada pembangunan berkelanjutan.
- Penting untuk memperhatikan keunggulan teknis dan desain yang baik.
- Kesederhanaan itu penting.
- Solusi arsitektur, persyaratan, dan ide desain terbaik datang dari tim yang mengatur dirinya sendiri.
- Renungkan secara teratur cara untuk meningkatkan kinerja dan menyesuaikan gaya kerja Anda.
4 ide utama Agile:
- orang dan interaksi lebih penting daripada proses dan alat,
- produk yang berfungsi lebih penting daripada dokumentasi yang komprehensif,
- kerja sama dengan pelanggan lebih penting daripada menyetujui persyaratan kontrak,
- bersedia untuk berubah lebih penting daripada mengikuti rencana awal.
Pendekatan ini sangat berbeda dengan air terjun yang keras. Di Agile, klien adalah anggota tim pengembangan. Di air terjun, dia hanya terlibat di awal, saat menentukan kebutuhan bisnis, dan di akhir, saat mempertimbangkan produk akhir. Di Agile, klien membantu tim menulis kriteria penerimaan produk dan tetap terlibat selama keseluruhan proses. Selain itu, Agile membutuhkan perubahan dan perbaikan terus menerus dari semua anggota organisasi. Tim pengembangan bekerja dengan tim lain termasuk manajer proyek dan penguji. Siapa melakukan apa dan kapan tergantung pada peran yang ditugaskan dan didiskusikan dengan seluruh tim.
Pengembangan perangkat lunak yang tangkas
Pengembangan perangkat lunak tangkas memerlukan perencanaan adaptif, desain evolusioner, dan pengiriman produk akhir. Banyak metodologi, struktur, dan praktik pengembangan perangkat lunak yang dikategorikan sebagai agile, termasuk:
- Scrum
- Kanban ( )
- XP ( )
- Lean
- DevOps
- FDD ( )
- TDD ( )
- Crystal
- DSDM ( )
- ASD ( )
Mereka semua digunakan sendiri-sendiri atau dikombinasikan dengan metodologi lain untuk pengembangan dan penerapan perangkat lunak. Yang paling umum adalah Scrum , Kanban (atau kombinasi disebut Scrumban) dan DevOps.
Scrum adalah kerangka kerja di mana tim bekerja secara independen dan lintas fungsi untuk meningkatkan kecepatan pengiriman produk jadi dan menambah nilai bisnis klien. Tim tersebut biasanya terdiri dari Scrum Master, Manajer Produk, dan Pengembang. Fokus utama dalam Scrum adalah pada iterasi yang lebih cepat dengan peningkatan yang lebih sedikit .
KanbanMerupakan kerangka kerja Agile, terkadang juga disebut sebagai sistem manajemen alur kerja. Ini membantu tim memvisualisasikan pekerjaan mereka dan meningkatkan efisiensi (sambil tetap gesit). Kanban biasanya berupa papan tulis digital atau fisik. Tugas tim berpindah-pindah papan tergantung pada tahapannya: tugas belum dimulai, dalam proses, sedang diuji, diselesaikan. Kanban memungkinkan setiap anggota tim untuk melihat status tugas.
Nilai DevOps
DevOps adalah budaya, cara berpikir, cara mengembangkan perangkat lunak atau infrastruktur, dan cara membangun dan menerapkan perangkat lunak dan aplikasi. Operasi dan pengembangan tidak terpisah; mereka bekerja secara bersamaan tanpa mengganggu satu sama lain.
DevOps didasarkan pada dua area lainnya: Lean dan Agile. DevOps bukanlah nama atau peran dalam sebuah perusahaan. Ini sebenarnya adalah komitmen yang dibuat oleh organisasi atau tim dalam hal pengiriman, penerapan, dan integrasi produk yang berkelanjutan. Menurut Jin Kim , penulis The Phoenix and The Unicorn Project, ada tiga "jalur" yang menentukan prinsip DevOps:
- prinsip aliran,
- prinsip umpan balik,
- prinsip pembelajaran tanpa akhir.
Pengembangan perangkat lunak DevOps
DevOps adalah praktik yang gesit. Dalam bentuk aslinya, ini mewakili budaya dan pemikiran bersama tentang pengembangan perangkat lunak dan implementasi teknologi informasi atau infrastruktur.
Saat Anda memikirkan tentang otomatisasi, cloud, layanan mikro, Anda memikirkan tentang DevOps.
Nicole Forsgren, Jez Humble dan Jin Kim telah menulis buku Hurry Up! Cara Membangun dan Menskalakan Organisasi Berkinerja Tinggi. " Dalam sebuah wawancara, mereka menjelaskan apa itu DevOps:
- Masalah pengiriman perangkat lunak yang efektif. Ini memiliki dampak signifikan terhadap profitabilitas, pangsa pasar, kualitas, kepuasan pelanggan, tujuan dan misi organisasi.
- Perusahaan dengan efisiensi tinggi mencapai kecepatan pengembangan, stabilitas, kualitas tinggi. Mereka tidak perlu mengorbankan apa pun untuk mencapai semua ini.
- Anda dapat meningkatkan kinerja Anda dengan menerapkan prinsip dan praktik DevOps dari Lean, Agile.
- Penerapan praktik dan peluang ini juga memengaruhi budaya organisasi Anda. Ini, pada gilirannya, memengaruhi keefektifan perangkat lunak Anda dan produktivitas organisasi.
- Dibutuhkan banyak pekerjaan untuk mengetahui bagaimana meningkatkan efisiensi.
DevOps dan Agile
Terlepas dari kesamaan, DevOps dan Agile jauh dari hal yang sama. Beberapa orang berpendapat bahwa DevOps lebih baik daripada Agile. Memahami hal itu penting untuk menghindari kebingungan.
Kesamaan
- Keduanya adalah metodologi pengembangan perangkat lunak, Anda tidak dapat membantahnya.
- Agile telah ada selama lebih dari 20 tahun, dan DevOps juga relatif baru.
- Kedua pendekatan ini percaya pada pengembangan perangkat lunak yang cepat. Prinsip mereka didasarkan pada bagaimana mengembangkan perangkat lunak dengan cepat tanpa merugikan pelanggan atau operasi.
Perbedaan
- , .
- , DevOps, Agile. , Agile , . DevOps, , , . .
- Agile , . DevOps , DevOps . , .
- DevOps , Agile . Agile MVP ( ) .
- Agile — , .
Agile | DevOps |
---|---|
, | |
Agile dan DevOps adalah hal yang berbeda, meskipun kesamaannya membuat banyak orang berpikir bahwa keduanya adalah satu dan sama. Kesalahpahaman ini merugikan Agile dan DevOps.
Saya bekerja di Agile dan dari pengalaman saya, saya dapat mengatakan bahwa sangat penting bagi tim dan organisasi untuk memahami apa itu DevOps dan Agile. Anda juga perlu memahami bagaimana mereka membantu tim bekerja lebih cepat dan lebih efisien, memastikan kualitas produk, dan meningkatkan kepuasan pelanggan.
Agile dan DevOps sama sekali bukan saingan satu sama lain (setidaknya belum ada alasan). Mereka adalah sekutu, bukan musuh di bidang yang gesit. Agile dan DevOps dapat bekerja secara eksklusif dan inklusif, yang memungkinkan keduanya ada di ruang yang sama.
Terjemahan: Diana Sheremieva
Pelajari lebih lanjut tentang cara mendapatkan profesi profil tinggi dari awal atau Naik Level dalam keterampilan dan gaji dengan mengikuti kursus online berbayar SkillFactory:
- Kursus DevOps (12 bulan)
Lebih banyak kursus
- Machine Learning (12 )
- Data Science (12 )
- (9 )
- «Python -» (9 )