Perspektif yang Anda miliki dapat dipengaruhi oleh pengalaman pribadi. Ini adalah kemiringan yang licin dari fakta yang secara individual benar, tetapi kesimpulan yang dihasilkan tidak, meskipun tampak benar pada pandangan pertama.
- Kerangka dalam lingkup lebih besar dari proyek-proyek kecil.
- Praktik buruk secara signifikan lebih sulit untuk ditangani dalam basis kode yang lebih besar.
- Membangun kerangka kerja (rata-rata) membutuhkan pengembang yang lebih terampil daripada membangun proyek kecil.
- Pengembang yang lebih baik mengikuti praktik yang baik (SOLID) lebih lanjut.
- Akibatnya, kerangka kerja memiliki kebutuhan yang lebih tinggi untuk praktik yang baik dan cenderung dibangun oleh pengembang yang lebih berpengalaman dengan praktik yang baik.
Ini berarti bahwa ketika Anda berinteraksi dengan kerangka kerja dan pustaka yang lebih kecil, kode praktik yang baik yang akan berinteraksi dengan Anda akan lebih umum ditemukan dalam kerangka kerja yang lebih besar.
Kekeliruan ini sangat umum, misalnya setiap dokter yang saya rawat sombong. Karena itu saya menyimpulkan bahwa semua dokter sombong. Kesalahan-kesalahan ini selalu menderita membuat selimut inferensi berdasarkan pengalaman pribadi.
Dalam kasus Anda, mungkin Anda sebagian besar mengalami praktik yang baik dalam kerangka kerja yang lebih besar dan tidak di perpustakaan yang lebih kecil. Pengamatan pribadi Anda tidak salah, tetapi merupakan bukti anekdotal dan tidak berlaku secara universal.
2 mode pemrograman - membuat lebih atau kurang persis apa yang diminta melalui persyaratan dan KISS (pemrograman tipikal), atau membuat logika, layanan, dll yang sangat umum dan dapat digunakan kembali, yang memberikan fleksibilitas yang mungkin dibutuhkan pengembang lain (kerangka pemrograman)
Anda agak mengkonfirmasi ini di sini. Pikirkan apa itu kerangka kerja. Ini bukan aplikasi. Ini adalah "template" umum yang dapat digunakan orang lain untuk membuat semua jenis aplikasi. Secara logis, itu berarti bahwa suatu kerangka kerja dibangun dalam logika yang jauh lebih abstrak untuk dapat digunakan oleh semua orang.
Pembuat kerangka tidak dapat mengambil jalan pintas, karena mereka bahkan tidak tahu apa persyaratan dari aplikasi selanjutnya. Membangun kerangka kerja secara inheren memberi insentif kepada mereka untuk membuat kode mereka dapat digunakan untuk orang lain.
Pembuat aplikasi, bagaimanapun, memiliki kemampuan untuk berkompromi pada efisiensi logis karena mereka berfokus pada memberikan produk. Tujuan utama mereka bukanlah cara kerja kode melainkan pengalaman pengguna.
Untuk suatu kerangka kerja, pengguna akhir adalah pengembang lain, yang akan berinteraksi dengan kode Anda. Kualitas kode Anda penting bagi pengguna akhir Anda.
Untuk aplikasi, pengguna akhir adalah non-pengembang, yang tidak akan berinteraksi dengan kode Anda. Kualitas kode Anda tidak penting bagi mereka.
Inilah sebabnya mengapa arsitek dari tim pengembangan sering bertindak sebagai penegak praktik yang baik. Mereka adalah satu langkah dihapus dari pengiriman produk, yang berarti mereka cenderung melihat kode secara objektif, daripada berfokus pada pengiriman aplikasi itu sendiri.
Jika Anda menambahkan titik entri abstraksi ini, apakah Anda benar-benar memenuhi persyaratan pengguna, atau apakah Anda membuat kerangka kerja di atas kerangka kerja dan tumpukan teknologi yang ada untuk membuat penambahan di masa mendatang lebih mudah? Dalam hal apa Anda melayani kepentingan pelanggan, atau pengembang?
Ini adalah poin yang menarik, dan ini (menurut pengalaman saya) adalah alasan utama mengapa orang masih mencoba untuk membenarkan untuk menghindari praktik yang baik.
Untuk meringkas poin-poin di bawah ini: Melewati praktik yang baik hanya dapat dibenarkan jika persyaratan Anda (seperti yang diketahui saat ini) tidak dapat diubah, dan tidak akan pernah ada perubahan / penambahan pada basis kode. Peringatan spoiler: Itu jarang terjadi.
Misalnya, ketika saya menulis aplikasi konsol 5 menit untuk memproses file tertentu, saya tidak menggunakan praktik yang baik. Karena saya hanya akan menggunakan aplikasi hari ini, dan itu tidak perlu diperbarui di masa depan (akan lebih mudah untuk menulis aplikasi yang berbeda jika saya membutuhkannya lagi).
Katakanlah Anda dapat membuat aplikasi dengan kurang hati-hati dalam 4 minggu, dan Anda dapat membuatnya dengan benar dalam 6 minggu. Pada pandangan pertama, bangunan yang jelek sepertinya lebih baik. Pelanggan mendapatkan aplikasi mereka lebih cepat, dan perusahaan harus menghabiskan lebih sedikit waktu untuk upah pengembang. Menang / menang, kan?
Namun, ini adalah keputusan yang dibuat tanpa berpikir ke depan. Karena kualitas basis kode, membuat perubahan besar untuk yang dibangun dengan shoddily akan memakan waktu 2 minggu, sementara membuat perubahan yang sama dengan yang dibangun dengan benar membutuhkan waktu 1 minggu. Mungkin ada banyak dari perubahan ini yang muncul di masa depan.
Selain itu, ada kecenderungan perubahan yang tidak terduga membutuhkan lebih banyak pekerjaan daripada yang Anda bayangkan dalam basis kode yang dibangun dengan buruk, sehingga kemungkinan mendorong waktu pengembangan Anda menjadi tiga minggu, bukannya dua.
Dan kemudian ada juga kecenderungan untuk membuang waktu berburu serangga. Ini sering terjadi dalam proyek-proyek di mana penebangan telah diabaikan karena keterbatasan waktu atau semata-mata karena tidak mau menerapkannya karena Anda tanpa sadar bekerja dengan asumsi bahwa produk akhir akan bekerja seperti yang diharapkan.
Bahkan tidak perlu menjadi pembaruan besar. Di perusahaan saya saat ini, saya telah melihat beberapa proyek yang dibangun dengan cepat dan kotor, dan ketika bug / perubahan terkecil perlu dilakukan karena miskomunikasi dalam persyaratan, yang mengarah pada reaksi berantai tentang perlunya refactor modul demi modul . Beberapa proyek ini akhirnya runtuh (dan meninggalkan kekacauan yang tidak dapat dipertahankan) bahkan sebelum mereka merilis versi pertama mereka.
Keputusan pintasan (pemrograman cepat dan kotor) hanya bermanfaat jika Anda dapat secara meyakinkan menjamin bahwa persyaratannya benar dan tidak perlu diubah. Dalam pengalaman saya, saya tidak pernah menemukan proyek di mana itu benar.
Menginvestasikan waktu ekstra dalam praktik yang baik adalah berinvestasi di masa depan. Bug dan perubahan di masa mendatang akan jauh lebih mudah ketika basis kode yang ada dibangun berdasarkan praktik yang baik. Itu sudah akan membayar dividen setelah hanya dua atau tiga perubahan dilakukan.