Penggunaan Kembali Kode sebagai Masalah
Saya sedang memikirkan pertanyaan ini tentang pengiriman perangkat lunak, dan saya terus kembali ke masalah pengulangan dan / atau reproduksibilitas . Mereka penting, karena jika Anda tidak mengulangi proyek maka menjadi lebih sulit untuk meningkatkan proses yang Anda gunakan untuk membangun proyek. Rekayasa melibatkan peningkatan proses yang terlibat dalam desain dan konstruksi untuk menghasilkan proyek berkualitas lebih tinggi.
Perangkat lunak dapat sangat bergantung pada penggunaan kembali karena bentuk digitalnya. Alih-alih menulis ulang modul, kami hanya menyebutnya lagi atau menyalinnya ke sistem lain. Beberapa contohnya adalah otentikasi / login atau mungkin fungsi logging. Ada banyak contoh terkenal untuk kategori-kategori tersebut, dan kebijaksanaan konvensional adalah menggunakan kembali apa yang ada alih-alih menggulirkan kategori Anda.
Beberapa Perbandingan dengan Disiplin Lain
Konstruksi
Sebaliknya, konstruksi sistem fisik (bangunan, jembatan) tidak dapat digunakan kembali. Memang benar bahwa cetak biru sebuah rumah dapat digunakan berulang kali untuk membangun salinan rumah yang sama, tetapi pembangunannya harus dilakukan setiap waktu. Potong & tempel tidak berfungsi seperti itu di dunia analog. Cetak biru jembatan kurang dapat digunakan kembali oleh rumah karena kondisi lokasi akan bervariasi.
Pembangun ahli adalah ahli yang diakui telah merancang dan / atau membangun puluhan, ratusan, atau ribuan hal di area mereka. Misalnya, Frank Lloyd Wright , seorang arsitek dan desainer terkenal di dunia designed more than 1,000 structures and completed 532 works
. Berbeda dengan Anders Hejlsberg yang telah merancang "hanya" lima bahasa (Turbo Pascal; Delphi; J ++; C #; Typcript). Dalam banyak hal, ini perbandingan yang tidak adil karena domainnya berbeda. Tetapi pada tingkat yang luas, produksi yang dapat diukur dari dua orang yang sangat cerdas sangat berbeda.
Seni bela diri
Seniman bela diri akan mengatakan bahwa penguasaan gerakan hanya datang dari ribuan pengulangan. Setelah sebagian besar pengulangan itu dilakukan, banyak seniman bela diri terkejut melihat bagaimana kata atau bentuk yang sebelumnya kompleks itu menjadi sederhana. Instruktur dari siswa tersebut juga akan memperhatikan bagaimana gerakan menjadi lebih lancar dan terarah serta memiliki ekonomi gerak. Demikian juga, seniman bela diri yang berpengalaman dapat mengambil katas yang lebih kompleks lebih cepat daripada siswa yang kurang berpengalaman. Pengalaman dari pengulangan telah memberi mereka kerangka kerja atau proses yang memungkinkan mereka untuk belajar lebih cepat.
Woodworking
Pekerja kayu mengalami transformasi serupa. Tukang kayu penghobi selalu merujuk kembali ke proyek pertama mereka yang membutuhkan banyak laci. Jika mereka menyelesaikan proyek, mereka mendapatkan apresiasi baru untuk efisiensi yang dihasilkan jalur perakitan. Ada manfaat lain seperti pemahaman yang lebih baik tentang cara meletakkan bagian-bagian laci pada lembar stok untuk memaksimalkan penggunaan kayu. Dibandingkan dengan penghobi, pekerja kayu profesional dapat lebih cepat merancang, memulai, dan membuat barang yang telah mereka buat berkali-kali sebelumnya. Mereka juga mendapatkan kemampuan untuk melihat masalah yang melekat dalam desain orang lain setelah melakukan kesalahan dalam pekerjaan mereka.
Jadi, apakah penggunaan kembali perangkat lunak mencegah pengembang perangkat lunak menjadi lebih mahir?
Dalam banyak hal, desain dan konstruksi perangkat lunak selalu baru. Kami tidak mengulangi pekerjaan sebelumnya, karena jika kami dapat menggunakan kembali modul, pustaka, atau sistem, maka kami melakukannya. Kami lebih suka memperluas sistem yang ada sebelum menulis ulang semuanya dari awal. Tetapi pengulangan itulah yang memungkinkan kami menemukan efisiensi dalam desain dan konstruksi. Siapa pun yang telah berlatih olahraga atau aktivitas fisik akan memberi tahu Anda bahwa pengulangan adalah kunci untuk menjadi seorang praktisi yang baik.
Pertanyaan saya: Apakah kemampuan perangkat lunak untuk digunakan kembali mencegah peningkatan proses yang diperlukan dan efisiensi yang datang dari pengulangan proyek?