Kemajuan ilmu pengetahuan  tidak lagi bisa dilepaskan dari keberadaan perangkat lunak ilmiah. Dari prediksi cuaca hingga simulasi penyebaran penyakit, dari pemetaan genetika hingga perhitungan dalam fisika partikel semuanya kini bergantung pada perangkat lunak yang dikembangkan oleh para ilmuwan dari berbagai disiplin ilmu.
Namun ada satu masalah mendasar yang hingga kini masih membayangi: banyak dari perangkat lunak ilmiah itu dibangun oleh ilmuwan yang bukan berasal dari latar belakang ilmu komputer. Mereka lebih mahir dalam domain sains mereka masing-masing, tetapi minim dalam pemahaman terhadap praktik rekayasa perangkat lunak yang baik.
Menguak Masalah Lewat Kajian Sistematis
Sebuah studi pemetaan sistematis yang dilakukan oleh Elvira-Maria Arvanitou dan timnya menjadi titik balik penting dalam memahami kondisi ini. Studi ini tidak hanya merangkum 359 penelitian primer yang berkaitan dengan praktik rekayasa perangkat lunak dalam pengembangan perangkat lunak ilmiah, tetapi juga memetakan kualitas perangkat lunak apa saja yang menjadi fokus para pengembangnya.
Dari hasil studi tersebut, tergambar sebuah paradoks: para ilmuwan menyadari pentingnya performa, keandalan, dan produktivitas dalam pengembangan perangkat lunak mereka, tetapi praktik-praktik yang mereka terapkan sering kali bersifat sporadis, tidak terstandarisasi, dan minim validasi empiris.
Fokus pada Hasil, Melupakan Proses
Sebagian besar pengembang perangkat lunak ilmiah lebih fokus pada hasil akhir yakni keluaran simulasi atau pengolahan data daripada proses pengembangan perangkat lunaknya sendiri. Maka tak heran jika masih banyak perangkat lunak ilmiah yang sulit dipelihara, sulit dipahami ulang oleh orang lain, dan tidak dapat digunakan kembali (reusable) secara efektif.
Padahal, dalam rekayasa perangkat lunak modern, pemeliharaan dan keberlanjutan adalah aspek yang tak kalah penting dari pembuatan awal. Ironisnya, meskipun sebagian besar ilmuwan mengandalkan perangkat lunak untuk mendukung penelitian mereka, hanya sedikit dari mereka yang memiliki pelatihan formal dalam pengembangan perangkat lunak. Ini menciptakan kesenjangan antara apa yang dibutuhkan oleh komunitas ilmiah dan apa yang dapat disediakan oleh pengembang perangkat lunak di lapangan.
Praktik yang Populer, Tapi Belum Menyeluruh
Artikel Arvanitou dan kawan-kawan menyebutkan bahwa praktik seperti penggunaan pustaka pihak ketiga (third-party libraries), pemrograman paralel, dan teknik pemrograman tertentu menjadi solusi favorit para ilmuwan. Namun, praktik-praktik seperti manajemen proyek, dokumentasi, dan validasi kualitas perangkat lunak masih belum mendapat perhatian memadai. Padahal, inilah aspek-aspek yang menjadi fondasi kuat dalam dunia rekayasa perangkat lunak konvensional.
Selain itu, studi ini juga mengungkap bahwa kualitas seperti performa dan portabilitas menjadi perhatian utama dalam pengembangan perangkat lunak ilmiah. Tetapi menariknya, kualitas seperti keamanan, efisiensi energi, dan keberterimaan pengguna (usability) justru jarang dibahas. Apakah ini berarti para pengembang perangkat lunak ilmiah belum terlalu memperhatikan faktor manusia atau keberlanjutan perangkat lunaknya? Bisa jadi demikian.
Kebutuhan Akan Budaya Rekayasa Perangkat Lunak
Salah satu poin menarik dari studi ini adalah ajakan untuk membangun budaya rekayasa perangkat lunak dalam komunitas ilmiah. Artinya, para ilmuwan tidak harus menjadi insinyur perangkat lunak, tetapi mereka perlu memahami prinsip dasar rekayasa perangkat lunak agar mampu membangun perangkat lunak yang tidak hanya bekerja, tetapi juga dapat dipelihara, digunakan ulang, dan dikembangkan lebih lanjut oleh orang lain.
Diperlukan pula jembatan antara dua dunia ini: dunia sains dan dunia rekayasa perangkat lunak. Salah satunya bisa diwujudkan melalui pendidikan lintas disiplin, pelatihan praktis yang menekankan pentingnya pengujian, dokumentasi, dan kerja kolaboratif dalam pengembangan perangkat lunak ilmiah. Di sisi lain, para insinyur perangkat lunak juga perlu lebih terlibat dalam proyek-proyek ilmiah untuk menerapkan prinsip-prinsip rekayasa perangkat lunak di dalamnya.