Я хотів би дати трохи ширше задумливу відповідь Джеффа . Зокрема, я хочу дати вам трохи більше погляду на цінність ваших зусиль з програмування, на відміну від ваших наукових зусиль у вашій ранній кар'єрі вчителів.
Ви побачите, що можливість написання програмного забезпечення для розширення своїх наукових досліджень зробить вас цінним членом практично будь-якої дослідницької команди. Однак цей час не обов'язково буде вважатися «цінним» вашими академічними колегами або тими, хто приймає на роботу на академічні посади.
З дослідницького дослідження 2011 року, проведеного в Прінстоні, "Огляд практики обчислювальної науки" :
Вчені витрачають значну кількість часу на програмування. В середньому вчені підрахують, що 35% часу на дослідження витрачається на програмування / розробку програмного забезпечення. Хоча спочатку деякий час витрачається на написання коду заново, значна частина часу приділяється багатьом виснажливим заходам. Наприклад, дослідники з політики та соціології, які використовували R / Stata, повинні були зробити значне програмування для переоснащення даних перепису у формати, які розуміли окремі пакети в R / Stata. Деяким дослідникам хімічної інженерії довелося змінити незадокументований спадковий код інженера, який виконував моделювання полум'я, довго після закінчення оригіналів авторів, щоб адаптувати код до нових видів палива ... Незважаючи на це, переважна більшість цих дослідників вважають, що "вони витрачати більше часу на програмування, ніж слід ",
Це не означає, що це не дуже гарна ідея впроваджувати або переробляти основну бібліотеку чи додатки, але якщо ви збираєтесь брати участь у будь-якій серйозній розробці програмного забезпечення (більше 25% вашого часу працюючи з кодом), зберігайте ці три думки на увазі.
Складність та ризик зростають в експоненціальній залежності від розміру проекту та кількості розробників. Поки ви не написали або не працювали з більшими фрагментами програмного забезпечення або командами розробників, які виходять за рамки вашої лабораторії, вам буде складно оцінити це і правильно прогнозувати зусилля.
Вам потрібно бути хорошим. Для написання корисного програмного забезпечення потрібно як певний зрілість, як програміст, так і вчений-прикладник. Ви повинні знати, які важливі особливості, де є числові ризики, і вміти прогнозувати зусилля програмування для заданого набору функцій та надійності. Звичайно, єдиний спосіб отримати добро - це витратити час на проекти, на які ти не є керівником, або які можуть спокійно провалитись або затягнутися, що призводить мене до моєї остаточної точки.
Хоча багато дослідницьких лабораторій та промислових посад високо цінують досвід програмування, наукове програмування може стати потенційною шкодою для вашої академічної кар’єри, навіть якщо ваше програмне забезпечення приносить користь науці більше, ніж ваші роботи. Весь цей час ви витрачаєте на те, як добре програмувати, програмувати, документувати свій код і робити його надійним, перетворюючи на документи, які не пишуться. Тут консультанти не завжди матимуть на увазі найкращі інтереси свого студента, оскільки це один із тих випадків, коли студент може забезпечити роботу, яка приносить користь групі консультанта, не скориставшись кількістю посилань студента. Знайдіть одного або декількох довірених наставників у галузі, яка вас цікавить, і переконайтесь, що ви чітко розумієте, які внески вважаються цінними. academia.stackexchange.com - прекрасне місце для подальших запитань з цього приводу.
Як примітка: кількість проектів, спрямованих на людину, які значно покращують будь-яке обчислювальне поле, постійно зменшується, будь то область застосування або щось більш технічне, наприклад щільна лінійна алгебра. Зростаюча кількість програмних пакетів, що формують обчислювальні дослідження "на хліб і масло", на 10 років і старше. Науковий код, який не досяг цього рівня зрілості, як правило, має більше помилок, менших можливостей та розрідженої документації. Намагайтеся уникати роботи з незрілим кодом, який не підтримується активно, незалежно від того, скільки йому років.