Inilah kesulitan saya. Salah satu dari beberapa program yang baru-baru ini saya warisi dibangun dengan database yang mengerikan di backend. Pencipta yang terhormat itu rupanya tidak menghargai konsep relasional. Tabel untuk masing-masing dan setiap klien, dinamai sebagai ID klien yang unik. Delapan puluh tiga bidang bernama cryptically. Kode ini semuanya prosedural dengan lusinan pernyataan SQL inline bersambung.
Karena kami tidak dilengkapi dengan aplikasi tambahan penting yang menjalankan database yang sama, saya telah ditugaskan untuk membuatnya dari awal. Saya adalah pengembang tunggal, yang bahkan bukan tanggung jawab utama saya karena setidaknya setengah dari waktu saya diambil oleh hal-hal operasi. Ada tenggat waktu yang tak terhindarkan yang ditetapkan selama 30 hari dari sekarang.
Terlepas dari pengalaman saya, saya yakin saya bisa mendesain database ini dan aplikasi yang ada jauh lebih baik daripada sebelumnya, tetapi saya tidak berpikir itu realistis bagi saya untuk mengubah database, menyesuaikan aplikasi yang ada, dan pastikan saya tidak melakukannya Jangan pecahkan apa pun saat perlu membuat aplikasi tambahan ini dengan cepat.
Jadi mari kita asumsikan saya terjebak dengan database yang mengerikan. Perlu bekerja dengan struktur yang begitu buruk, akankah sesuatu yang saya tulis yang sesuai dengannya hanya menambah tumpukan utang teknis yang harus ditangguhkan sampai sesuatu yang benar-benar rusak atau fungsi baru diperlukan? Bagaimana saya bisa mendekati situasi ini dan mendapatkan sesuatu yang baik selain dari aplikasi yang mudah-mudahan fungsional?
sunting: Jika ada yang tertarik, kami akhirnya menghapus basis data yang mengerikan ini dan aplikasi yang menjalankannya. Kami mengalihdayakan pembuatan aplikasi tambahan (saya tidak terlibat dalam pengaturan ini) pada akhirnya dua kontraktor yang berbeda yang akhirnya jatuh pada kami, tidak menghasilkan apa-apa. Saya akhirnya harus menjalankan perbaikan yang mengerikan, sebagian fungsional dari perbaikan dalam tiga hari yang masih digunakan sampai sekarang.