Saya mulai menyadari bahwa mengembangkan perangkat lunak (antara lain) adalah proses untuk terus bertanya pada diri sendiri. Pertanyaan mengenai kualitas kode, pemisahan masalah, meminimalkan ketergantungan, ...
Tetapi pertanyaan utamanya adalah: seberapa jauh Anda bisa pergi tanpa berakhir di rumah sakit jiwa?
Saya melamar pekerjaan baru. Kemarin saya dengan calon majikan di masa depan yang ingin menguji kemampuan pemrograman saya. Salah satu latihan adalah: jelaskan apa yang dilakukan kode ini. Saya telah melalui beberapa kode aplikasi (winforms di vb.net) yang mereka kembangkan (ini adalah aplikasi administratif untuk rumah sakit). Ini memberi saya kesempatan untuk benar-benar melihat bagaimana mereka mendekati sesuatu dan itu agak mengecewakan.
Beberapa contoh:
- Saya melihat di suatu tempat: Panggil [masukkan nama subrutin di sini] -> Saya terkejut: bukankah itu sesuatu dari VB6?
- Mereka memiliki datalayer terpisah, menggunakan ado.net, tetapi satu metode yang harus saya periksa mengembalikan dataset ke lapisan panggilan. Pisahkan datalayer atau tidak, aplikasi terikat ke ado.net (yang juga bisa menjadi masalah jika mereka tidak pernah beralih ke pendekatan akses data lain).
- Dataset itu dibaca apa adanya, sehingga masih merupakan pendekatan data-sentris (tentu saja, orang dapat memperdebatkan berapa banyak logika / perilaku yang dapat Anda masukkan ke dalam kelas seperti "Pasien" atau "LabAnalysisRequest".
- Saya juga percaya telah melihat pembangunan kueri sql dengan penggabungan string.
- Mereka menggunakan prosedur tersimpan (yang, bagi saya, berarti: hamburan logika)
- tidak menyebutkan pandangan / pengontrol: semuanya didorong oleh bentuk
- Hal paling jelek yang saya lihat adalah:
Jika TestEnvironment.IsTesting maka someVar = [beberapa nilai kode keras] lain someVar = [beberapa nilai yang diambil secara dinamis] berakhir jika [sisa dari fungsi di sini]
Itu semua sangat berbeda dari apa yang saya pelajari di sekolah: lapisan domain (kegigihan agnostik), lapisan kegigihan, lapisan presentasi, pengujian unit, ...
Jadi saya ulangi pertanyaan saya: seberapa fundamental atau dogmatis seseorang seharusnya? Sejauh mana seorang programmer harus berpegang pada prinsip-prinsipnya atau hanya menulis kode yang berfungsi?