Pertanyaan: Bisakah kita sebagai pengembang belajar dari proses industri manufaktur? Bisakah mengadopsi proses mereka meningkatkan tingkat keberhasilan pengembangan perangkat lunak?
Jawab: Ya tentu saja. Ada banyak pelajaran yang dapat dipelajari oleh para pengembang perangkat lunak dari manufaktur meskipun fakta bahwa pengembangan perangkat lunak adalah proses kreatif. Pengembangan perangkat lunak itu sendiri adalah suatu proses, dan itu mencakup banyak proses lainnya. Semakin baik Anda dapat mendefinisikan dan mengontrol proses-proses tersebut, semakin baik Anda dapat mengontrol proses pengembangan perangkat lunak secara keseluruhan. Itu tidak berarti bahwa Anda harus meresepkan setiap penekanan tombol yang dibuat pengembang; itu hanya berarti bahwa sebagai pengembang, Anda secara alami melakukan tugas-tugas dalam urutan tertentu, dan tugas-tugas itu seringkali dapat dikelola. Berikut ini beberapa contohnya:
pelacakan cacat: Ketika bug diamati atau dilaporkan, apa yang terjadi padanya? Apakah Anda menuliskannya pada secarik kertas dan menempelkannya pada lonjakan 'investigasi'? Apakah nanti Anda menghapus memo itu satu per satu, selidiki, dan akhirnya memindahkannya ke lonjakan 'yang diselesaikan'? Jika Anda melakukannya tanpa gagal setiap kali Anda mendapatkan laporan bug, Anda memiliki proses yang terdefinisi dengan baik, terukur, dan Anda mungkin jauh lebih baik daripada seseorang yang memiliki sistem pelacakan cacat yang canggih dan berteknologi tinggi yang sangat memberatkan bahwa beberapa anggota tim melacak bug dengan cara lain, atau tidak sama sekali.
kontrol versi: Ada kemungkinan besar bahwa Anda menggunakan kontrol versi di mana Anda bekerja, dan kontrol versi jelas jauh lebih berguna ketika semua orang menggunakannya dengan cara yang sama.
desain produk: Apakah Anda memutuskan fitur mana yang akan diterapkan dengan melemparkan anak panah ke dinding yang ditutupi dengan kertas tempel? Jika demikian, Anda punya proses. Saya tidak berpikir siapa pun akan berpendapat bahwa ini adalah proses yang hebat, tetapi setidaknya itu adalah titik awal. Jika Anda mengubah proses, bagaimana Anda bisa tahu dengan pasti bahwa perubahan Anda sebenarnya merupakan peningkatan kecuali jika Anda mengukur sebelum dan sesudah? Kamu tidak bisa
ulasan kode: Apakah tinjauan kode bermanfaat jika proses pengkajian dan kriteria pengkodean berubah untuk setiap tinjauan? Tentu saja tidak.
siklus hidup pengembangan perangkat lunak: Seluruh analisis -> desain -> implementasi -> tes -> siklus pemeliharaan adalah proses yang harus didefinisikan dengan jelas.
Dalam setiap kasus ini, memiliki proses yang ada memungkinkan Anda mengukur input dan output dan menentukan apakah perubahan yang Anda buat memiliki efek yang diinginkan. Tidak memiliki proses berarti bahwa Anda hanya menebak ketika Anda mencoba meningkatkan cara Anda bekerja. Ini benar-benar tentang manufaktur, dan masuk akal untuk meminjam alat pemurnian berturut-turut jika sesuai.
Ada seluruh bidang yang dikhususkan untuk mendefinisikan dan meningkatkan proses yang digunakan untuk membuat dan memelihara perangkat lunak; itu disebut rekayasa perangkat lunak . Tidak mengherankan bahwa Anda memiliki pertanyaan tentang proses pengembangan saat membaca tentang CMMI - CMMI adalah produk dari Institut Rekayasa Perangkat Lunak .
Pengembangan perangkat lunak telah mengadopsi banyak konsep manufaktur:
Sulit untuk tidak melihat pengaruh suku cadang Eli Whitney yang dapat dipertukarkan pada pengembangan OOP dan berbasis komponen .
Teknik manajemen proyek yang digunakan dalam pengembangan perangkat lunak tidak jauh berbeda dari yang dikembangkan untuk pembuatan. Sebagai hanya dua contoh, dunia perangkat lunak baru saja mengadopsi konsep Kanban yang dikembangkan beberapa dekade yang lalu di Toyota, dan grafik Gantt digunakan dalam pembuatan jauh sebelum komputer elektronik pertama dibangun.
Metodologi manajemen kualitas seperti Six Sigma yang dikembangkan untuk manufaktur telah disesuaikan dengan pengembangan perangkat lunak.
Terlepas dari proses yang didorong oleh lingkungan yang berat, pengembang harus terlibat dalam menciptakan hal-hal "dengan cepat".
Apakah Anda memberi tahu saya bahwa seseorang akan memutuskan sendiri untuk menambahkan tambalan ke paket pengenalan wajah, dan mereka akan menambahkannya ke dalam pembuatan produksi tanpa terlebih dahulu menciptakan masalah dalam sistem pelacakan, setelah desain ditinjau, memeriksa kode ke dalam kontrol versi, atau meminta orang pengujian melihatnya terlebih dahulu? Proses kami membutuhkan hal-hal itu untuk beberapa alasan yang sangat bagus. Jika dengan "on the fly" yang Anda maksudkan "di luar proses," itu tidak dapat diterima.
Melakukan hal-hal dengan cepat bertentangan dengan semangat manufaktur.
Sekali lagi, jika "on the fly" berarti "di luar proses," Anda benar. Tetapi jika Anda berpikir bahwa manufaktur tidak memerlukan pemikiran cepat dan mengembangkan solusi kreatif untuk masalah, Anda salah. Semua jenis masalah muncul dalam proses pembuatan - cupcake tidak memiliki cukup krim mengisi, permukaan yang dicat tiba-tiba berhenti melewati uji awal QA, 20% dari bagian jadi hilang cincin penahan penting, sistem adonan pencampur bagian penting ...