Chciałbym rozszerzyć rozważną odpowiedź Geoffa . W szczególności chcę dać ci nieco więcej spojrzenia na wartość twoich wysiłków programistycznych w porównaniu do wysiłków badawczych we wczesnej karierze akademickiej.
Przekonasz się, że umiejętność pisania oprogramowania wspomagającego twoje badania naukowe uczyni cię cennym członkiem niemal każdego zespołu badawczego. Jednak ten czas niekoniecznie zostanie uznany za „cenny” przez twoich rówieśników akademickich lub tych, którzy zatrudniają na stanowiska akademickie.
Z ankiety badawczej z 2011 r. Przeprowadzonej w Princeton, „A Survey of the Computational Science” :
Naukowcy spędzają dużo czasu na programowaniu. Średnio naukowcy szacują, że 35% czasu badań poświęcają na programowanie / tworzenie oprogramowania. Chociaż początkowo trochę czasu poświęca się na pisanie kodu, znaczna część czasu jest poświęcana na wiele żmudnych czynności. Na przykład badacze z zakresu polityki i socjologii, którzy używali R / Stata, musieli przeprowadzić znaczne programowanie, aby zmodernizować dane spisu powszechnego w formatach zrozumiałych dla poszczególnych pakietów w R / Stata. Niektórzy badacze inżynierii chemicznej musieli opracować kod źródłowy, który nie był dokumentem, który przeprowadził symulację płomienia, długo po ukończeniu studiów przez oryginalnych autorów, aby dostosować kod do nowszych paliw ... Mimo to zdecydowana większość badaczy uznała, że „ spędzać więcej czasu na programowaniu, niż powinni ”
Nie oznacza to, że nie jest dobrym pomysłem wdrożenie lub przeprojektowanie podstawowej biblioteki lub aplikacji, ale jeśli zamierzasz zaangażować się w poważne opracowanie oprogramowania (ponad 25% czasu pracujesz z kodem), zachowaj te trzy myśli w myślach.
Złożoność i ryzyko rosną wykładniczo wraz z wielkością projektu i liczbą programistów. Dopóki nie napiszesz ani nie pracujesz z większymi programami lub zespołami programistów, które wykraczają poza twoje laboratorium, trudno będzie ci dobrze docenić ten i właściwie przewidzieć wysiłek.
Musisz być dobry. Pisanie przydatnego oprogramowania wymaga pewnej dojrzałości, zarówno jako programista, jak i naukowiec aplikacji. Musisz wiedzieć, jakie są ważne funkcje, gdzie są ryzyka numeryczne, i umieć prognozować wysiłki programistyczne dla danego zestawu funkcji i niezawodności. Oczywiście jedynym sposobem na osiągnięcie dobrego jest poświęcenie czasu na projekty, na których nie jesteś wiodącym lub które mogą bezpiecznie zawieść lub zostać opóźnione, co prowadzi mnie do mojej ostatniej kwestii.
Chociaż wiele laboratoriów badawczych i stanowisk przemysłowych wysoko ceni doświadczenie w programowaniu, programowanie naukowe może stanowić potencjalną szkodę dla kariery naukowej, nawet jeśli oprogramowanie przynosi korzyści naukowe bardziej niż dokumenty. Cały ten czas poświęcasz na naukę dobrego programowania, programowania, dokumentowania swojego kodu i uczynienia go solidnym, co przekłada się na prace, które nie są pisane. Doradca nie zawsze będzie miał na względzie dobro swojego ucznia, ponieważ jest to jeden z tych przypadków, w których uczeń może zapewnić pracę, która jest korzystna dla grupy doradcy bez korzyści dla liczby cytowań ucznia. Znajdź jednego lub więcej zaufanych mentorów w dziedzinie, którą jesteś zainteresowany i upewnij się, że dobrze rozumiesz, jakie wkłady są uważane za wartościowe. academia.stackexchange.com jest doskonałym miejscem do zadawania dalszych pytań w tej sprawie.
Jako przypis: liczba projektów wysiłkowych jednoosobowych, które znacznie przyspieszają dowolne pole obliczeniowe, stale maleje, niezależnie od tego, czy jest to obszar zastosowania, czy coś bardziej technicznego, takiego jak gęsta algebra liniowa. Rosnąca liczba pakietów oprogramowania tworzących „chleb powszedni” badań obliczeniowych ma 10 lat lub więcej. Kod naukowy, który nie osiągnął tego poziomu dojrzałości, zwykle zawiera więcej błędów, mniej funkcji i rzadką dokumentację. Staraj się unikać pracy z niedojrzałym kodem, który nie jest aktywnie obsługiwany, niezależnie od tego, ile ma lat.