Dylemat początkującego: jaki języka programowania używany w Data Science wybrać? Poniżej odpowiadam na pytanie spędzające sen z powiek u młodych Data Scientist-ów.
Z tego artykułu dowiesz się: 1. Jakie są najpopularniejsze języki programowania używane w Data Science? 2. Jak podjąć najlepszą decyzję przy wyborze języka? 3. Który język sprawi, że osiągniesz największą efektywność podczas analizy danych i modelowania?
Języki programowania używane w Data Science
Do najpopularniejszych języków używanych w Data Science możemy zaliczyć (kolejność alfabetyczna):
- Julia,
- Matlab,
- Octave
- Python,
- R,
- SAS,
- Scala.
Pomijam SQL, którego używa się praktycznie wszędzie i niezależnie od technologii.
Czy wiesz, że założyłem kanał na YouTube? Zachęcam do subskrybcji! 😉
Poniżej wykres przedstawiający ankiety przeprowadzonej na portalu Kaggle. Pytanie: jakiego języka programowania używasz najczęściej?
Język programowania vs branża
- Matlab, Octave – częściowo środowiska akademickie.
- Python:
- bankowość i firmy ubezpieczeniowe (etap testów i fazowego wdrażania),
- FMCG,
- firmy technologiczne,
- startupy.
- R:
- sektory regulowane: od lat bankowość firmy ubezpieczeniowe (choć trend ten się powoli zmienia i wiele firm decyduje się na adaptację Pythona),
- energetyka,
- środowiska akademickie,
- statystyków,
- branża medyczna.
- SAS:
- duże korporacje, które ciągle korzystają z SAS,
- firmy konsultingowe utrzymujące rozwiązania u klientów.
- Scala:
- wszędzie tam, gdzie jest Hadoop i jednocześnie nie lubią Python-a/R-ki.
Oczywiście nie oznacza to, że powyższe języki są wykorzystywane tylko w tych branżach. Za powyższymi informacjami nie stoją żadne statystyki. To jedynie subiektywne informacje wynikające z mojego kilkuletniego doświadczenia w branży. 😉
Wiemy już, jakie są języki używane w Data Science. Zanim przejdę do tego, co warto robić (część trudniejsza), odpowiem na pytanie: czego nie warto robić?
Czego zdecydowanie nie warto robić?
Zgodnie z powiedzenie: nie wkładaj wszystkich jajek do jednego koszyka, a więc:
- Nie przywiązuj się do jednej wybranej technologii pochodzącej od któregoś z „dużych graczy”. Firmy powstają i często nieoczekiwanie odchodzą. Ich decyzje zmieniają się dynamicznie. To, co wczoraj było top-ową technologią, dziś może zostać porzucone na skutek decyzji zarządu urzędującego na drugiej półkuli. Wystarczy, że liczby w arkuszu kalkulacyjnym przestaną się zgadzać i zostaniesz z ręką w nocniku (czytaj: oprogramowaniem, które zostaje porzucone).
-
Nie przywiązuj się do jednego wybranego języka. Nie zrozum mnie źle. Uważam, że warto mieć coś, co jest „Twoim konikiem” i w czym czujesz się swobodnie. Nie zatrać jednak przy tym elastyczności. W dzisiejszym świecie zmiany zachodzą bardzo szybko i podczas swojej kariery zawodowej prawdopodobnie wielokrotnie zmienisz środowisko pracy (system operacyjny, oprogramowanie, język).
Dodatkowo: nie zastanawiaj się zbyt długo nad wyborem języka proramowania. Szkoda na to Twojego czasu i energii. Jest cała masa ważniejszych czynności, które podniosą Twoją wartość na rynku pracy.
Na co warto postawić?
W mojej ocenie warto postawić na umiejętności „sprawdzone w boju” i ponadczasowe. Dogłębna znajomość algorytmów uczenia maszynowego, podstaw matematycznych i statystycznych. Wiele algorytmów i koncepcji zakresu matematyki i statystyki jest znanych i z powodzeniem używanych od dziesiątek, a nawet setek lat do dziś (patrz: regresja).
Warto również znać przynajmniej kilka algorytmów „na wylot” (plusy i minusy, mechanizm działania, dobór ewentualnych parametrów, przygotowanie zmiennych, największe bolączki, scenariusze zastosowania, etc.).
W jednym z wywiadów mój znajomy posiadający olbrzymie doświadczenie w branży (pozdrawiam Wit) został postawiony przed pytaniem będącym tytułem tego wpisu.
„Jakiego języka powinienem się uczyć by osiągnąć sukces w pracy przy badaniu danych?”
Na co odpowiedział:
„Matematyki.”
Uważam, że z mody nieprędko wyjdą również umiejętności programistyczne, takie jak:
- znanie arkanów sztuki poprawnego kodowania (hasło: czysty kod),
- pisania „produkcyjnego” kodu.
Jako badacz danych na 99,9% będziesz musiał kodować. Warto, by Twój kod był czytelny, prosty i skuteczny. Ułatwi to pracę Tobie i Twoim współpracownikom. Zaoszczędzicie masę czasu (a Wasz czas, to pieniądze dla pracodawcy) na takich czynnościach jak:
- poszukiwanie ewentualnych błędów,
- dokumentowanie,
- wdrażanie nowych osób,
- rozczytywanie „starego” kodu.
Jeden z moich wykładowców z czasów studenckich miał w zwyczaju mawiać:
Kod powinien być tak prosty, jak to tylko możliwe, ale nie prostacki.
W mojej ocenie ranking ważności umiejętności technicznych Data Scientist-a (od najważniejszej) wygląda mniej więcej tak:
- Matematyka, statystyka, algebra.
-
Budowanie produkcyjnego kodu.
-
Wybrany język programowania na poziomie master .
-
Umiejętność obsługi wybranego oprogramowania (SAS, SPSS, Azure ML, etc.) na poziomie master.
Uwagi do powyższego rankingu:
- jest bardzo subiektywny (niektórzy z moich znajomych się z nim nie zgadzają),
- pominąłem pozostałe umiejętności techniczne (np. SQL), bo nie tego dotyczy wpis,
- punkt 2 i 3 można scalić,
- pominąłem wiedzę branżową (tzw. biznesową), bo to zestawienie umiejętności technicznych. 😉
Co rekomendują inni Data Scientiści?
Na koniec wyniki ankiety przeprowadzonej na Kaggle w 2018 roku. Być może poniższy wykres okaże się dla Ciebie pomocny. 🙂 Tu pytanie było następujące: jaki język programowania poleciłabyś/poleciłbyś apirującym Data Scientistom do nauki w pierwszej kolejności?
Podsumowanie
Podsumowując, wybór języka programowania, to nie jest prosta sprawa. Nie mniej, w mojej ocenie nie warto poświęcać na nią zbyt dużo energii. Robiąc to, warto myśleć perspektywicznie (rozważyć m.in. zapotrzebowanie na rynku, ogólny trend), wziąć pod uwagę kilka argumentów za i przeciw.
A Ty, w jakim języku kodujesz? 🙂 Czy w swojej karierze były punkty zwrotne, które zmusiły Cię do zmiany wyboru? Proszę, podziel się swoimi odpowiedziami w komentarzu pod wpisem.
Linki:
- Zdjęcie pod nagłówkiem: pixabay (Free-Photos).
- Zdjęcia przedstawiające wykresy z ankiety Kaggle.
PODOBAŁ CI SIĘ TEN ARTYKUŁ?
Jeśli tak, to zarejestruj się, by otrzymywać informacje o nowych wpisach.
Dodatkowo w prezencie wyślę Ci bezpłatny poradnik :-)
W branży farmaceutycznej używa się przede wszystkim SAS, to niemalże monopolista na tym rynku. Przyczyn jest wiele, wśród najciekawszych można wymienić wsteczną kompatybilność sięgającą kilkudziesięciu lat (!!). Coś takiego jest praktyczne niemożliwe w przypadku rozwiązań open-source takich jak Python czy R.
Dzięki Piotr za komentarz! Będąc szczerym, nie wiem nic o branży farmaceutycznej, więc tym bardziej dziękuje za informacje. 🙂
Bazując na tym co napisałeś, to podobny problem ma duża część banków, które są „załadowane” licencjami SAS.
SAS to raczej nie problem banków. To ich przewaga. Zresztą SAS’a używa się praktycznie wszędzie i to nie tylko dlatego, że ktoś kiedyś się na takie coś zdecydował. Nie traktowałbym SQL jako języka – to trzeba umieć jak dodawanie i podstawowe operacje w Excelu. Jeśli chodzi o język Scala to również dziwne rozumienie tego języka. Po pierwsze to język w pełni funkcyjny dedykowany w Sparku ze względu na jego równoległość. PySpark owszem pozwala zrobić wiele ale wciąż nie wszystko. Osobiście jestem zdania, że programowanie to narzędzie, którym każdy analityk powinien umieć się posługiwać. Nie musi to być poziom rasowego programisty assamblera (jeśli dziś jeszcze wie co to).
Pozdrawiam
Sebastian, dzięki za komentarz i trafne podsumowanie. 🙂