Tôi muốn đưa ra một số chiều rộng hơn cho câu trả lời chu đáo của Geoff . Cụ thể, tôi muốn cung cấp cho bạn một chút quan điểm về giá trị của những nỗ lực lập trình của bạn, trái ngược với những nỗ lực nghiên cứu của bạn trong sự nghiệp ban đầu của bạn như là một học thuật.
Bạn sẽ thấy rằng việc có thể viết phần mềm để tăng cường nghiên cứu khoa học sẽ giúp bạn trở thành một thành viên có giá trị trong hầu hết các nhóm nghiên cứu. Tuy nhiên, thời gian này sẽ không nhất thiết được coi là "có giá trị" bởi các đồng nghiệp học tập của bạn hoặc những người tuyển dụng cho các vị trí học tập.
Từ một khảo sát nghiên cứu năm 2011 được thực hiện tại Princeton, "Khảo sát thực hành khoa học tính toán" :
Các nhà khoa học dành thời gian nghiên cứu lập trình đáng kể. Trung bình, các nhà khoa học ước tính rằng 35% thời gian nghiên cứu của họ dành cho lập trình / phát triển phần mềm. Mặc dù ban đầu một số thời gian dành cho việc viết mã một lần nữa, một phần đáng kể thời gian được dành cho nhiều hoạt động tẻ nhạt. Ví dụ, các nhà nghiên cứu về Chính trị và Xã hội học đã sử dụng R / Stata phải lập trình đáng kể để cải thiện dữ liệu điều tra dân số thành các định dạng mà các gói riêng lẻ trong R / Stata hiểu. Một số nhà nghiên cứu về Kỹ thuật hóa học đã phải đảo ngược kỹ sư mã không có giấy tờ thực hiện mô phỏng ngọn lửa, rất lâu sau khi các tác giả gốc đã tốt nghiệp, để thích ứng mã với nhiên liệu mới hơn ... Mặc dù vậy, phần lớn các nhà nghiên cứu này cảm thấy rằng "họ dành nhiều thời gian để lập trình hơn họ nên "
Điều đó không có nghĩa là không nên thực hiện hoặc thiết kế lại thư viện hoặc ứng dụng cốt lõi, nhưng nếu bạn sẽ tham gia vào bất kỳ sự phát triển phần mềm nghiêm trọng nào (hơn 25% thời gian của bạn làm việc với mã), hãy giữ ba điều này những suy nghĩ trong đầu.
Sự phức tạp và rủi ro tăng theo cấp số nhân với quy mô dự án và số lượng nhà phát triển. Cho đến khi bạn đã viết hoặc làm việc với các phần mềm lớn hơn hoặc các nhóm nhà phát triển vượt ra ngoài phòng thí nghiệm của bạn, bạn sẽ khó có được sự đánh giá tốt về nỗ lực này và dự báo đúng.
Bạn cần phải giỏi. Phải mất một số lượng trưởng thành nhất định, cả với tư cách là một lập trình viên và là một nhà khoa học ứng dụng, để viết phần mềm hữu ích. Bạn phải biết các tính năng quan trọng là gì, rủi ro số là gì và có thể dự báo nỗ lực lập trình cho một tập hợp các tính năng và độ mạnh nhất định. Tất nhiên, cách duy nhất để có được điều tốt là dành thời gian cho các dự án mà bạn không dẫn đầu hoặc có thể thất bại hoặc bị trì hoãn một cách an toàn, điều này đưa tôi đến điểm cuối cùng.
Mặc dù nhiều phòng thí nghiệm nghiên cứu và các vị trí công nghiệp đánh giá cao kinh nghiệm lập trình, lập trình khoa học có thể đóng vai trò gây hại cho sự nghiệp học tập của bạn, ngay cả khi phần mềm của bạn mang lại lợi ích cho khoa học nhiều hơn so với bài báo của bạn. Tất cả thời gian bạn dành để học cách lập trình tốt, lập trình, ghi lại mã của bạn và làm cho nó mạnh mẽ chuyển thành các bài báo không được viết. Một cố vấn sẽ không luôn luôn có lợi ích tốt nhất cho học sinh của họ ở đây, vì đây là một trong những trường hợp sinh viên có thể cung cấp công việc có lợi cho nhóm cố vấn mà không có lợi cho số lượng trích dẫn của sinh viên. Tìm kiếm một hoặc nhiều cố vấn đáng tin cậy trong lĩnh vực bạn quan tâm và đảm bảo bạn hiểu rõ về những đóng góp được coi là có giá trị. academia.stackexchange.com là một nơi tuyệt vời để đặt câu hỏi tiếp theo về vấn đề này.
Như một chú thích: số lượng các dự án nỗ lực một người giúp cải thiện đáng kể bất kỳ lĩnh vực tính toán nào đang giảm dần, có thể là một lĩnh vực ứng dụng hoặc một cái gì đó kỹ thuật hơn như đại số tuyến tính dày đặc. Ngày càng có nhiều gói phần mềm hình thành nên "bánh mì và bơ" của nghiên cứu tính toán có tuổi đời từ 10 năm trở lên. Mã khoa học chưa đạt đến mức trưởng thành này có xu hướng có nhiều lỗi hơn, ít tính năng hơn và tài liệu thưa thớt. Cố gắng tránh làm việc với mã chưa trưởng thành không được hỗ trợ tích cực, bất kể nó bao nhiêu tuổi.