Saya ingin memberikan sedikit lebih banyak jawaban Geoff yang bijaksana . Secara khusus, saya ingin memberi Anda sedikit lebih banyak perspektif tentang nilai upaya pemrograman Anda sebagai lawan upaya penelitian Anda di awal karir Anda sebagai seorang akademisi.
Anda akan menemukan bahwa mampu menulis perangkat lunak untuk menambah penelitian ilmiah Anda akan membuat Anda menjadi anggota yang berharga dari hampir semua tim peneliti. Namun, kali ini tidak akan dianggap "berharga" oleh rekan-rekan akademis Anda atau mereka yang mempekerjakan untuk posisi akademik.
Dari survei penelitian 2011 yang dilakukan di Princeton, "Sebuah Survei Praktik Ilmu Komputasi" :
Para ilmuwan menghabiskan banyak waktu pemrograman pemrograman. Rata-rata, para ilmuwan memperkirakan bahwa 35% dari waktu penelitian mereka dihabiskan untuk pemrograman / pengembangan perangkat lunak. Sementara awalnya beberapa waktu dihabiskan untuk menulis kode baru, sebagian besar waktu dihabiskan dalam banyak kegiatan yang membosankan. Sebagai contoh, para peneliti di bidang Politik dan Sosiologi yang menggunakan R / Stata harus melakukan pemrograman yang cukup untuk retrofit data sensus ke dalam format yang dipahami oleh masing-masing paket dalam R / Stata. Beberapa peneliti Teknik Kimia harus merekayasa balik kode warisan tidak berdokumen yang melakukan simulasi nyala api, lama setelah penulis asli lulus, untuk menyesuaikan kode dengan bahan bakar yang lebih baru ... Meskipun demikian, sebagian besar peneliti ini merasa bahwa "mereka menghabiskan lebih banyak waktu pemrograman daripada yang seharusnya, "
Itu tidak berarti bahwa itu bukan ide yang baik untuk mengimplementasikan atau mendesain ulang perpustakaan inti atau aplikasi, tetapi jika Anda akan terlibat dalam pengembangan perangkat lunak yang serius (lebih dari 25% dari waktu Anda bekerja dengan kode), pertahankan ketiga ini pikiran dalam pikiran.
Kompleksitas dan risiko tumbuh secara eksponensial dengan ukuran proyek dan jumlah pengembang. Sampai Anda telah menulis atau bekerja dengan perangkat lunak yang lebih besar atau tim pengembang yang melampaui lab Anda, akan sulit bagi Anda untuk mendapatkan apresiasi yang baik dari ini dan upaya perkiraan yang tepat.
Anda harus baik. Diperlukan tingkat kematangan tertentu, baik sebagai programmer dan sebagai ilmuwan aplikasi, untuk menulis perangkat lunak yang bermanfaat. Anda harus tahu apa saja fitur penting, di mana risiko numeriknya, dan dapat memperkirakan upaya pemrograman untuk serangkaian fitur dan ketahanan yang diberikan. Tentu saja, satu-satunya cara untuk mendapatkan yang baik adalah menghabiskan waktu untuk proyek-proyek yang bukan Anda pimpin atau yang bisa gagal atau tertunda dengan aman, yang membawa saya ke titik akhir saya.
Meskipun banyak laboratorium penelitian dan posisi industri sangat menghargai pengalaman pemrograman, pemrograman ilmiah dapat bertindak sebagai potensi kerugian bagi karier akademis Anda, bahkan jika perangkat lunak Anda lebih menguntungkan sains daripada makalah Anda. Semua waktu yang Anda habiskan belajar bagaimana memprogram dengan baik, pemrograman, mendokumentasikan kode Anda, dan membuatnya kuat diterjemahkan ke dalam makalah yang tidak ditulis. Seorang penasihat tidak akan selalu memikirkan minat terbaik siswa mereka di sini, karena ini adalah salah satu kasus di mana siswa dapat memberikan pekerjaan yang menguntungkan kelompok penasihat tanpa memberi manfaat pada jumlah kutipan siswa. Cari satu atau lebih mentor tepercaya di bidang yang Anda minati dan pastikan Anda memiliki pemahaman yang jelas tentang kontribusi apa yang dianggap berharga. academia.stackexchange.com adalah tempat yang sangat baik untuk mengajukan pertanyaan tindak lanjut tentang ini.
Sebagai catatan kaki: jumlah proyek upaya satu orang yang secara signifikan memajukan setiap bidang komputasi semakin berkurang, baik itu bidang aplikasi atau sesuatu yang lebih teknis seperti aljabar linier padat. Semakin banyak paket perangkat lunak yang membentuk "roti-dan-mentega" dari riset komputasi adalah 10 tahun lebih tua atau lebih. Kode ilmiah yang belum mencapai tingkat kematangan ini cenderung memiliki lebih banyak bug, lebih sedikit fitur, dan dokumentasi yang jarang. Cobalah untuk menghindari bekerja dengan kode belum matang yang tidak didukung secara aktif, terlepas dari berapa lama itu.