Hari ini saya memutuskan untuk melakukan instalasi bersih untuk driver Creative Sound Blaster, karena mereka selalu mulai mengalami glitching sendiri setelah beberapa waktu. Dan itu berarti saya harus melalui seluruh prosedur pembersihan. Dan itu memakan waktu hampir 2 jam ..
Dan jujur, saya tidak bisa melihat alasannya ?! Dan meskipun Creative, IMHO, adalah pemenang pertama mutlak untuk menghasilkan perangkat lunak berkualitas buruk yang tidak pernah berfungsi, masalah yang menggembung tidak eksklusif bagi mereka.
PC dengan driver kamera digital Canon akan memiliki sekitar 10 entri Canon yang saling berhubungan dengan semua jenis koneksi. Visual Studio juga merupakan contoh utama, ada sekitar 50 atau lebih entri untuk instalasi penuh, dan memperbaiki hal itu hanya mungkin dengan nuking lengkap. Dan bahkan setelah itu berhasil merusak seluruh menginstal OS ketika saya meningkatkan dari VS2k8 ke VS2k8SP1 atau sesuatu. Ternyata 5GB ruang kosong tidak cukup untuk tambalan 300MB ...
Jadi ini sepertinya merupakan masalah yang tersebar luas. Hampir setiap aplikasi saat ini biasanya berisi unpacker, beberapa "teman" spywarish yang diinstal, driver biasanya sekitar 600MB untuk semua termasuk printer dan sebagainya.
Tapi kenapa? Apakah ini kesalahan pengembang? Aplikasi seperti itu adalah mimpi buruk untuk didukung, mereka tidak pernah berfungsi 100% saat ini, dan hampir semua pengguna yang saya tahu sangat negatif tentang semua mengasapi yang mereka dapatkan sebagai driver wajib menginstal untuk USB thumb drive / Printer / Kamera / Sound Card / Browser.
Tampaknya NSIS dari Nullsoft adalah satu-satunya sistem pengaturan bersih yang tidak membengkak, dari yang saya tahu, misalnya, instal Firefox. Bersih, cukup banyak instal berbasis xcopy tanpa masalah.
Jadi mengapa orang tidak menggunakan pengaturan dan aplikasi sederhana yang tidak di-root lebih dari 30 lapisan interkoneksi? Apakah karena pengembang malas? Gunakan alat codegen? Apakah karena perusahaan memaksakan aplikasi kelas berat sebagai sesuatu yang disukai pengguna? Apa penyebabnya, dan apakah ada harapan perangkat lunak akan kembali ke dasar suatu hari nanti? Apa langkah-langkah untuk menghindari penulisan mengasapi ketika Anda memulai aplikasi baru dari awal?
sumber
Jawaban:
Dugaan saya adalah bahwa ada banyak fitur yang menurut seseorang adalah ide yang bagus. Namun, jika banyak orang memiliki ide-ide terpisah yang dapat disatukan ke dalam satu aplikasi, ini adalah bagaimana hal itu dapat menjadi sangat rumit. Saya tidak akan menyalahkan pengembang dalam hal produk perusahaan besar di mana harus ada manajer produk yang memiliki tanggung jawab atas apa yang ada dalam produk dan bagaimana mengoptimalkannya dari berbagai perspektif.
Sisi lain dari hal ini adalah hutang teknis yang kemungkinan besar tidak dikelola dengan baik dalam banyak kasus karena tidak dilihat sebagai investasi waktu yang besar. Saya menduga fitur baru dan perbaikan bug lebih masuk akal daripada refactorings atau tugas utang lain yang mungkin tampak memiliki sedikit nilai bisnis langsung. Seberapa sering tim pengembang mendapatkan beberapa minggu untuk membersihkan kode lawas jika basis kode agak lama? Dugaan saya tidak akan sering.
sumber
Mengutip Joel dalam Strategy Letter IV: Bloatware and the 80/20 Myth :
sumber
Sebagian besar hubungannya dengan ketergantungan suatu produk. Sistem operasi Anda dikirimkan dengan banyak perpustakaan standar untuk semua jenis hal. Namun, pustaka standar ini memiliki versi berbeda sepanjang evolusi OS, dan penginstal generik apa pun tidak dapat mengasumsikan bahwa versi spesifik yang dibuatnya akan benar-benar hadir di OS.
Oleh karena itu penginstal lengkap harus menyertakan versi yang benar dari setiap dependensi untuk memastikan bahwa semuanya pasti akan berfungsi setelah instalasi, tidak peduli apa keadaan awal dari setiap ketergantungan pada komputer target. Ini bisa menjadi mengasapi yang cukup signifikan untuk jenis aplikasi tertentu, misalnya. Aplikasi berbasis NET yang perlu digunakan untuk sistem Windows XP.
Sampai baru-baru ini, satu sistem penginstal yang saya gunakan memerlukan setiap versi .NET sebelumnya untuk dapat menginstal versi terbaru, sehingga itu berarti aplikasi .NET 3.5 memerlukan binari instalasi untuk .NET 1, 2, 2.5 dan 3 DI ATAS 3.5. Dalam hal ini, hanya penginstal yang bengkak.
Salah satu solusinya adalah penginstal web, yang hanya mengunduh komponen-komponen yang sebenarnya tidak ada pada sistem target - dan ini bisa menjadi keuntungan besar / keuntungan besar. Tentu saja itu membatasi instalasi Anda ke sistem yang memiliki konektivitas internet.
sumber
Saya pikir banyak yang harus dilakukan dengan lapisan demi lapisan kode perpustakaan. Jelas ketika Anda menggunakan perpustakaan, Anda tidak menggunakan semua yang ada di dalamnya, sehingga kelebihan bertambah saat Anda memasukkan lebih banyak perpustakaan.
Gabungkan bahwa dengan fakta bahwa biaya satu jam kerja dari seorang programmer semakin mahal sementara daya pemrosesan / penyimpanan komputer tipikal semakin murah dari tahun ke tahun, Anda melihat bahwa sebenarnya lebih hemat biaya dengan cara ini.
sumber
sumber
Ini adalah lingkaran setan di mana setiap orang dalam siklus keputusasaan dapat disalahkan . Satu siklus keputusasaan terdiri dari langkah-langkah berikut:
Bagaimana Anda menghentikannya? Tidak ada jawaban yang mudah tentang caranya, tetapi jelas bahwa untuk menghentikan siklus maka salah satu langkah harus dipatahkan. Dengan demikian hanya dapat dipecah oleh bisnis, pengembang atau konsumen yang mengambil tindakan revolusioner.
sumber
sumber
Kemalasannya selalu, itulah yang menyebabkan perut kembung. (atau lumpur seperti dalam artikel mani tentang hal ini, Big Ball of Mud )
Sebagai contoh, di mana saya bekerja, kami memiliki aplikasi C ++ "lawas" yang dirancang dengan cukup baik, Klien berbicara dengan API yang berbicara dengan server yang melakukan pekerjaan DB. Semua dilakukan dengan bijaksana. Baru-baru ini kami membutuhkan modul tambahan, tetapi alih-alih mengimplementasikannya dengan benar, dev memutuskan untuk mengimplementasikan ini dalam. NET, dan lebih buruk lagi, ia memutuskan bahwa mengakses data melalui API terlalu sulit (tidak seperti ...) ia akan membuat koneksi DB langsung. Jadi Anda lihat bagaimana kekacauan ini terjadi. (dan semua dengan persetujuan TA yang menempatkan "cepat" atas "baik")
Saya telah melihat hal semacam ini sebelumnya juga - di tempat lama, sebagian kecil dari GUI adalah html, karena beberapa pengembang menganggap itu ide yang baik untuk menulis data dalam html dan memiliki tampilan GUI itu. Jadi 1 bagian kecil melakukan sesuatu yang berbeda dari yang lain.
Singkatnya, kemalasan itu buruk, dan konsistensi baik (terlepas dari teknologi yang digunakan). Saya lebih suka memiliki aplikasi semua-MFC daripada yang merupakan bagian MFC dan sebagian Winforms dan bagian WebGL dengan banyak arsitektur back-end yang menyatukan semuanya.
sumber