MobileRobotK4/Education/bahan ajar/agile/1_/3.1.1.7_Working_Agile-id.srt

515 lines
18 KiB
Plaintext

1
00:00:07,200 --> 00:00:12,000
Setelah menonton video ini, Anda akan dapat membuat daftar lima praktik kerja Agile,
2
00:00:12,000 --> 00:00:17,200
jelaskan bekerja dalam batch kecil, tentukan produk minimum yang layak, pahami perilaku
3
00:00:17,200 --> 00:00:22,720
pengembangan yang didorong, memahami pengembangan yang didorong oleh pengujian, menjelaskan cara kerja pemrograman berpasangan.
4
00:00:24,320 --> 00:00:31,200
Jadi mari kita lihat apa artinya bekerja dengan gaya Agile. Pertama, Anda ingin bekerja di
5
00:00:31,200 --> 00:00:36,800
batch kecil. Kami mendapatkan ini dari lean manufacturing. Anda tidak ingin membuat sesuatu dalam jumlah besar
6
00:00:36,800 --> 00:00:41,040
dan kemudian mengetahui bahwa Anda melakukannya salah karena itu banyak pemborosan harus kembali dan berubah
7
00:00:41,040 --> 00:00:47,280
dia. Selanjutnya, Anda ingin menggunakan produk minimum yang layak untuk mencari tahu apa yang disukai pelanggan, apa
8
00:00:47,280 --> 00:00:52,480
tidak disukai pelanggan. Dan kemudian Anda ingin menggunakan praktik seperti pengembangan yang didorong oleh perilaku
9
00:00:52,480 --> 00:00:58,400
dan pengembangan yang didorong oleh pengujian untuk meningkatkan pengujian sistem Anda dari luar ke dalam dan
10
00:00:58,400 --> 00:01:03,760
dari dalam keluar. Dan akhirnya Anda ingin memanfaatkan pemrograman berpasangan. Ini datang
11
00:01:03,760 --> 00:01:08,560
dari pemrograman ekstrim tetapi pemrograman pasangan sangat penting. Jadi kita akan melihat
12
00:01:08,560 --> 00:01:16,800
masing-masing secara bergantian. Bekerja dalam kelompok kecil-- misalkan saya perlu mengirimkan ribuan brosur.
13
00:01:17,600 --> 00:01:22,240
Dan langkah-langkahnya yaitu anda perlu melipat brosur kemudian memasukkan brosur tersebut ke dalam amplop,
14
00:01:22,240 --> 00:01:26,240
dan kemudian segel amplop dan akhirnya cap amplop dengan perangko.
15
00:01:27,200 --> 00:01:32,560
Jadi katakanlah kita akan melakukan ribuan ini dalam kelompok 50, benar, kelompok besar, 50 buah dan
16
00:01:32,560 --> 00:01:37,600
asumsikan bahwa setiap langkah membutuhkan waktu sekitar enam detik untuk diselesaikan. Jadi saya bisa melakukan sekitar 10 langkah per menit.
17
00:01:38,400 --> 00:01:44,080
Dan jadi kita melakukan langkah pertama melipat, kan? Dan pada jam 10 selama satu menit, saya membutuhkan waktu sekitar lima menit untuk
18
00:01:44,080 --> 00:01:50,160
lipat 50 dari mereka. Kemudian saya melanjutkan ke langkah berikutnya. Langkah selanjutnya adalah memasukkan semuanya dan lagi,
19
00:01:50,160 --> 00:01:55,440
jika saya bisa melakukan sekitar 10 dari mereka per menit, jadi saya butuh lima menit lagi, ditambah lima
20
00:01:55,440 --> 00:02:00,080
menit dari sebelumnya. Sekarang aku 10 menit ke dalamnya. Saya sudah melipat semuanya dan memasukkannya lalu saya
21
00:02:00,080 --> 00:02:05,520
lanjutkan ke langkah ketiga untuk menyegel semuanya, kan? Jadi sekarang lagi sekitar 10 per menit saya bisa melakukan yang lain
22
00:02:06,240 --> 00:02:12,160
50 dalam lima menit lagi. Jadi saya sampai 15 menit, kan? Waktu jam dinding. Lalu
23
00:02:12,160 --> 00:02:18,720
akhirnya saya sampai ke langkah empat dan saya butuh 16 menit untuk mendapatkan produk jadi pertama saya kan?
24
00:02:18,720 --> 00:02:23,840
Yang pertama di mana saya memiliki barang-barang yang benar-benar dapat saya periksa dan lihat kualitasnya.
25
00:02:23,840 --> 00:02:30,640
Jadi, bagaimana jika amplop tidak memiliki lem, kan? Itu akan menjadi 11 menit sebelum saya mengetahuinya
26
00:02:30,640 --> 00:02:34,400
ada yang salah. Bagaimana jika ada kesalahan ketik pada brosur? Aku harus pergi jauh-jauh kembali
27
00:02:34,400 --> 00:02:40,560
ke awal, kan? Jadi, ini sangat, sangat boros bekerja dalam batch besar seperti ini.
28
00:02:41,200 --> 00:02:45,920
Sekarang mari kita lihat contoh yang sama dengan aliran satu bagian. Dan lagi, asumsikan setiap langkah membutuhkan waktu
29
00:02:45,920 --> 00:02:51,840
enam detik untuk menyelesaikan. Dengan aliran sepotong tunggal, saya lipat, kan? Dan masukkan ke dalam amplop dan
30
00:02:51,840 --> 00:02:57,040
segel mereka dan beri cap pada mereka dan produk jadi pertama dalam waktu sekitar 24 detik. Sekarang saya
31
00:02:57,040 --> 00:03:02,800
dapat memeriksanya untuk melihat apakah itu berfungsi, melihat apakah itu yang saya pikirkan, dan kemudian biarkan sisanya mengalir
32
00:03:02,800 --> 00:03:09,680
meninggal dunia. Sekarang bagaimana jika amplop tidak memiliki lem? Yah aku akan mencari tahu setelah, eh, mungkin 18 detik, kan?
33
00:03:09,680 --> 00:03:15,280
Dan jika ada kesalahan ketik di brosur, setelah 24 detik, jadi sangat, sangat penting bahwa kita tidak
34
00:03:15,280 --> 00:03:20,640
bekerja dalam dua kelompok yang lebih besar sehingga kami bisa mendapatkan umpan balik yang cepat dan kami dapat berputar dan memahami,
35
00:03:20,640 --> 00:03:24,480
Anda tahu, apakah kita perlu melakukan sesuatu yang berbeda dan kemudian membuat perubahan yang perlu kita lakukan?
36
00:03:25,680 --> 00:03:31,520
Jadi mari kita bicara tentang produk yang layak minimum. Pertama, mari kita pahami apa yang bukan, karena ada
37
00:03:31,520 --> 00:03:36,800
kesalahpahaman bahwa produk yang layak minimum seperti fase pertama dari proyek atau, Anda tahu,
38
00:03:36,800 --> 00:03:42,000
beta pertama atau sesuatu seperti itu. Dan itu tidak. Ini bukan produk minimum yang layak.
39
00:03:42,000 --> 00:03:47,920
Produk minimum yang layak adalah hal minimal yang dapat Anda lakukan untuk membuktikan hipotesis dan keuntungan
40
00:03:47,920 --> 00:03:53,040
belajar dan mendapatkan pemahaman. Perbedaan antara keduanya adalah bahwa yang pertama adalah segalanya
41
00:03:53,040 --> 00:03:57,120
tentang pengiriman, kan? Apa yang akan saya sampaikan? Tapi yang kedua adalah tentang
42
00:03:57,120 --> 00:04:03,920
sedang belajar. Apa yang bisa saya pelajari? Apa yang bisa saya pelajari dari mengeluarkan MVP ini dan mendapatkan umpan balik
43
00:04:03,920 --> 00:04:10,000
dan kemudian mungkin membuat yang berikutnya lebih baik? Jadi, penting bahwa di akhir setiap MVP
44
00:04:10,000 --> 00:04:17,600
Anda memutuskan apakah akan berputar atau bertahan. Mari kita lihat sebuah contoh. Inilah tim yang sedang berkembang
45
00:04:17,600 --> 00:04:22,800
produk minimum yang layak untuk pelanggan yang menginginkan mobil. Jadi, pada iterasi pertama, mereka memberikan
46
00:04:22,800 --> 00:04:27,280
roda. Pelanggan seperti, "Apa yang akan saya lakukan dengan roda? Saya tidak dapat melakukan apa pun dengan ini?" Suka,
47
00:04:27,280 --> 00:04:31,920
baik, kami sedang mengerjakan iterasi, kami mencoba untuk gesit di sini, bukan? Dan pada iterasi berikutnya, kita akan
48
00:04:31,920 --> 00:04:36,640
memberi Anda beberapa lagi. Dan mereka memberi mereka sasis dan itu seperti, oke, "Saya benar-benar tidak bisa melakukan apa-apa
49
00:04:36,640 --> 00:04:40,640
dengan ini." Dan akhirnya, Anda tahu, mereka memberi mereka mobil tanpa roda kemudi dan kemudian
50
00:04:41,360 --> 00:04:48,080
akhirnya mereka mendapatkan mobil, kan? Dan mereka mendapatkan coupe ini. Tim itu tidak mengerti
51
00:04:48,080 --> 00:04:51,520
bagaimana membuat produk yang layak minimum. Mereka hanya melakukan pengembangan berulang.
52
00:04:52,240 --> 00:04:58,560
Tim kedua memahami nilai dari pembuatan MVP. Pada awalnya, mereka memberi mereka
53
00:04:58,560 --> 00:05:03,200
skateboard dan pelanggan seperti, "Saya meminta mobil dan Anda memberi saya skateboard."
54
00:05:03,200 --> 00:05:09,360
Whoa, whoa kita sedang menguji warnanya. Bagaimana Anda menyukai warna merah itu? Apakah itu warna yang Anda inginkan? "Oh ya,
55
00:05:09,360 --> 00:05:15,280
merah agak keren tapi Anda tahu itu sangat sulit untuk dikemudikan." Tidak, kami akan memperbaikinya di MVP berikutnya dan
56
00:05:15,280 --> 00:05:20,160
kemudian mereka menambahkan cara untuk mengarahkannya dan pelanggan seperti, "Baiklah, Anda memang memberi saya cara untuk mengarahkannya
57
00:05:20,160 --> 00:05:25,120
tapi aku tidak bisa pergi terlalu cepat. Saya membutuhkan bentuk penggerak yang lebih baik." Dan kemudian kita akan mengatasinya dalam
58
00:05:25,120 --> 00:05:30,800
MVP berikutnya. Pada iterasi berikutnya, mereka memberi mereka pedal. Di suatu tempat di sepanjang jalan sementara pelanggan
59
00:05:30,800 --> 00:05:38,560
sedang mengendarai sepeda motor itu merasakan angin menerpa rambut mereka, mereka memutuskan, "Saya ingin sebuah mobil konvertibel." Dalam
60
00:05:38,560 --> 00:05:43,120
contoh pertama, pelanggan mendapatkan persis apa yang mereka minta berbulan-bulan sebelumnya karena mereka hanya
61
00:05:43,120 --> 00:05:49,440
mengikuti rencana tetapi dalam contoh kedua pelanggan mendapatkan apa yang mereka inginkan
62
00:05:49,440 --> 00:05:55,200
karena mereka bekerja secara interaktif dengan tim pengembangan dan pada akhirnya, Anda berkembang
63
00:05:55,200 --> 00:05:59,440
sesuatu yang sedikit berbeda tetapi lebih dekat dengan apa yang benar-benar diinginkan pelanggan.
64
00:06:01,280 --> 00:06:07,680
Perkembangan yang didorong oleh perilaku adalah ketika kita menggambarkan sistem dari luar ke dalam. Ini biasanya
65
00:06:07,680 --> 00:06:13,360
dilakukan pada tingkat pengujian integrasi, bukan? Jadi, di sinilah kami mengambil pelanggan
66
00:06:13,360 --> 00:06:18,880
tampilan sistem biasanya saat Anda melakukan pengujian BDD, Anda melakukannya terhadap antarmuka pengguna,
67
00:06:18,880 --> 00:06:24,800
Baik? Anda melakukannya terhadap hal yang dilihat pelanggan untuk melihat apakah sistem berperilaku
68
00:06:24,800 --> 00:06:28,640
cara yang seharusnya. Jadi, jika itu adalah sistem e-commerce, ketika saya memasukkan sesuatu ke keranjang saya, apakah itu?
69
00:06:28,640 --> 00:06:33,040
berperilaku seperti yang saya inginkan? Ketika saya mentransfer keranjang ke pesanan, apakah itu berperilaku seperti yang saya inginkan? Dia
70
00:06:33,040 --> 00:06:37,920
benar-benar mengambil pendekatan luar-dalam. Itu tidak terlalu peduli dengan hal-hal yang terjadi di bawahnya.
71
00:06:39,040 --> 00:06:44,720
Yang keren adalah ia menggunakan satu sintaks yang dapat digunakan oleh pengembang dan pemangku kepentingan
72
00:06:44,720 --> 00:06:50,160
digunakan untuk menggambarkan sistem dan menyepakati perilaku sistem, tentang apa yang dilakukan sistem.
73
00:06:50,160 --> 00:06:57,200
Jadi, mari kita lihat sintaks itu. Ini dimulai dengan skenario fitur BDD ini. Dimana saya katakan,
74
00:06:57,200 --> 00:07:03,680
"Sebagai jumlah peran, jadi, saya ingin tahu untuk siapa ini. Saya perlu beberapa fungsi, kan? Jadi apa itu
75
00:07:03,680 --> 00:07:09,600
itu fungsi yang sebenarnya kita butuhkan agar saya mendapatkan nilai bisnis?" Jadi, sekarang Anda tahu
76
00:07:09,600 --> 00:07:14,240
Untuk siapa ini. Apakah untuk pelanggan? Untuk administrator sistem, bukan? Siapa yang mendapatkan
77
00:07:14,240 --> 00:07:19,840
nilai dari ini apa yang mereka butuhkan dan mengapa mereka membutuhkannya? Dan itulah awal dari Anda
78
00:07:19,840 --> 00:07:25,440
file fitur. Dan kemudian Anda mulai menjalankan skenario dan di sinilah kami menggunakan hal umum ini
79
00:07:25,440 --> 00:07:32,560
sintaksis. Ini dikenal sebagai sintaks Gherkin setelah acar Gherkin. Dan itu berjalan seperti ini:
80
00:07:32,560 --> 00:07:37,760
Diberi serangkaian prasyarat, bukan? Jadi, skenario seperti itu-- mengingat ini benar.
81
00:07:37,760 --> 00:07:43,920
Saya punya dua item di keranjang saya. Saya mendapat tiga item yang saya pesan, terserah. Ketika suatu peristiwa terjadi,
82
00:07:43,920 --> 00:07:50,320
Baik? Jadi, itulah hal yang sedang diuji. Maka saya harus melihat beberapa hasil yang dapat diamati. Jadi, menggunakan ini
83
00:07:50,320 --> 00:07:56,560
diberikan sintaks kapan-maka, pengembang dapat memahaminya, pemangku kepentingan dapat memahaminya, semua orang dapat
84
00:07:56,560 --> 00:08:02,800
pahami sintaks umum ini bahwa ketika saya memiliki sesuatu di troli saya dan kemudian saya menghapus troli saya, Anda
85
00:08:02,800 --> 00:08:08,400
tahu, saya seharusnya tidak melihat apa pun di keranjang saya. Jadi sangat, sangat penting untuk memiliki sintaks dalam BDD ini
86
00:08:08,400 --> 00:08:17,600
skenario. Pengembangan yang didorong oleh pengujian adalah pengujian sistem dari dalam ke luar. Tidak seperti yang didorong oleh perilaku
87
00:08:17,600 --> 00:08:22,720
perkembangan. Hal ini berkaitan dengan internal sistem, modul tunggal. Biasanya ini
88
00:08:22,720 --> 00:08:27,680
disebut pengujian unit, bukan? Dan ini adalah sesuatu yang didorong oleh kasus uji unit dan kami ingin membuatnya
89
00:08:27,680 --> 00:08:33,280
yakin bahwa dengan input ini saya mendapatkan output ini pada level modul kecil. Saya tidak tahu apakah ketika saya menempatkan
90
00:08:33,280 --> 00:08:37,920
mereka semua bersama-sama saya akan mendapatkan perilaku yang saya inginkan. Itu semacam BDD tapi untuk TDD, test drive
91
00:08:37,920 --> 00:08:43,520
pengembangan, saya hanya menguji sistem di tingkat unit dan Anda menulis tes
92
00:08:43,520 --> 00:08:48,720
kasus pertama untuk kode yang Anda inginkan dan kemudian Anda menulis kode yang cukup untuk membuat kasus uji itu lulus
93
00:08:48,720 --> 00:08:53,280
dan kemudian Anda mulai dari awal lagi dan refactor. Jadi alur kerjanya berjalan seperti ini:
94
00:08:53,280 --> 00:08:58,960
Saya menulis kasus uji. Anda mungkin berkata, "Anda menulis kasus uji sebelum Anda menulis kode?" Ya ini membuat saya
95
00:08:59,760 --> 00:09:04,640
ditampilkan pada apa yang seharusnya dilakukan kode. Ketika saya memanggil ini, bagaimana saya ingin memanggil ini? apa itu?
96
00:09:04,640 --> 00:09:09,920
parameter yang saya pikir ingin saya sampaikan dan lalu apa fungsinya untuk saya? Jadi, Anda menulis test case terlebih dahulu
97
00:09:09,920 --> 00:09:16,080
kemudian Anda menulis kode yang cukup untuk membuat kasus uji itu lulus dan kemudian setelah lulus maka Anda dapat melakukan refactor
98
00:09:16,080 --> 00:09:21,120
kode karena sekarang Anda memiliki kasus uji untuk membuat Anda jujur, Anda akan tahu jika Anda melanggar sesuatu.
99
00:09:21,120 --> 00:09:26,960
Sekarang, karena ketika test case berjalan dan gagal biasanya berubah menjadi merah dan kemudian ketika berhasil
100
00:09:26,960 --> 00:09:33,360
benar berubah menjadi hijau; kita cenderung menyebutnya Merah, Hijau, Refactor. Tonton test case, tulis test case
101
00:09:33,360 --> 00:09:38,800
menontonnya gagal, buat saja cukup tulis kode untuk membuatnya lulus, dan kemudian refactor membuatnya-- Anda mungkin tidak
102
00:09:38,800 --> 00:09:42,560
telah membuatnya sangat elegan hanya untuk membuatnya lulus-- sekarang Anda dapat kembali dan Anda dapat menambahkan segala macam
103
00:09:42,560 --> 00:09:47,520
pemeriksaan kesalahan dan yang lainnya membuatnya sedikit lebih, eh, kuat dan kemudian jalankan kasus uji. Memastikan
104
00:09:47,520 --> 00:09:55,280
Anda tidak merusak apa pun. Pemrograman berpasangan. Pemrograman pasangan, Anda mungkin mengatakan dua pemrogram bekerja
105
00:09:55,280 --> 00:10:00,960
bersama-sama pada hal yang sama, eh, dan hal pertama adalah: Saya membayar dua orang untuk melakukan satu pekerjaan?
106
00:10:01,600 --> 00:10:06,400
Tetapi sebenarnya itu berhasil dengan sangat baik karena apa yang Anda lakukan adalah Anda memilikinya
107
00:10:06,400 --> 00:10:11,360
orang yang menulis kode dan kemudian Anda memiliki orang lain yang memperhatikan kode tersebut.
108
00:10:11,360 --> 00:10:15,920
Jadi pertanyaannya adalah, apakah Anda lebih suka menemukan bug dalam produksi? Apakah Anda lebih suka menemukan bug saat Anda?
109
00:10:15,920 --> 00:10:20,320
menulis kode? Jauh lebih murah untuk menemukannya saat Anda sedang menulis kode, jadi miliki dua set
110
00:10:20,320 --> 00:10:25,120
mata, mereka memeriksa satu sama lain dan mereka bolak-balik. Bukan hanya satu dan kemudian yang lain.
111
00:10:25,120 --> 00:10:29,840
Biasanya dalam 20 menit bertahap, kan? Seseorang menulis kode, yang lain sedang menonton dan mereka
112
00:10:29,840 --> 00:10:33,760
tidak hanya menonton. Terkadang mereka mencari sesuatu, terkadang mereka berdiskusi. "Bagaimana menurutmu
113
00:10:33,760 --> 00:10:38,000
Saya harus memanggil variabel ini? Menurut Anda apa yang harus saya sebut fungsi ini?" Benar? Ini dua set
114
00:10:38,000 --> 00:10:44,080
pikiran bekerja di sekitar kode ini dan apa yang terjadi adalah Anda benar-benar mendapatkan kode kualitas yang lebih tinggi di akhir
115
00:10:44,080 --> 00:10:49,360
hari, kan? Kualitas kode naik karena dua orang sudah memeriksanya dan kapan
116
00:10:49,360 --> 00:10:54,560
Anda berkata, "Saya tidak mampu membayar dua orang untuk menulis satu kode." Anda tidak mampu untuk tidak membayar dua
117
00:10:54,560 --> 00:10:59,280
orang untuk menulisnya karena menulis kode adalah bagian yang murah. Debugging itu, mempertahankan dalam produksi,
118
00:10:59,280 --> 00:11:04,000
itu bagian yang mahal dan jadi jika Anda ingin bagian yang mahal menjadi lebih murah, Anda ingin memilikinya
119
00:11:04,000 --> 00:11:09,040
programmer Anda melakukan pemrograman berpasangan. Ini juga sangat bagus untuk menempatkan programmer senior dengan junior
120
00:11:09,040 --> 00:11:13,760
programmer. Sekarang programmer junior dapat melihat: Bagaimana programmer senior mendekati masalah?
121
00:11:13,760 --> 00:11:18,480
Jadi mereka belajar, mereka mendapatkan bimbingan, dan kemudian program senior dapat melihat bagaimana orang junior
122
00:11:18,480 --> 00:11:23,600
sedang bermesraan. Atau Anda mendapatkan orang yang tidak terbiasa dengan kode yang bekerja dengan seseorang yang. Kamu sekarang
123
00:11:23,600 --> 00:11:27,760
buat lebih banyak orang mempelajari kode karena mereka dan mereka mendapatkan seperti tutorial dari
124
00:11:27,760 --> 00:11:33,200
orang lain. Jadi pemrograman berpasangan adalah cara yang sangat, sangat bagus untuk membawa semua orang Anda aktif
125
00:11:33,200 --> 00:11:39,440
tim Anda hingga level tertentu. Dalam video ini Anda belajar bahwa bekerja dalam kelompok kecil berarti
126
00:11:39,440 --> 00:11:45,840
memberikan sesuatu yang berguna dengan cepat, MVP adalah hal termurah dan termudah yang dapat Anda lakukan untuk menguji
127
00:11:45,840 --> 00:11:50,640
hipotesis dan belajar. Pengembangan yang didorong oleh perilaku memastikan Anda membangun hal yang benar.
128
00:11:51,520 --> 00:11:54,240
Dan pengembangan yang didorong oleh pengujian memastikan Anda membangunnya dengan benar.
129
00:11:55,360 --> 00:12:05,600
Sementara pemrograman berpasangan memungkinkan Anda untuk menemukan cacat lebih awal dan meningkatkan kualitas kode Anda.