Czy deweloperzy powinni się uczyć nowych języków programowania?
Dawno temu natknąłem się na pewien tekst jednego z bardziej znanych programistów, który radził, jak zachować dobrą kondycję zawodową w programowaniu. Pamiętam, że jego główną radą było to, aby uczyć się co roku jednego nowego języka programowania.
Pomysł wydał mi się na tyle kontrowersyjny, iż go zapamiętałem. Znałem już wtedy programistów, którzy od kilku, a nawet kilkunastu lat programowali tylko w jednym języku i nie wydawało się, żeby ta monogamia językowa im szkodziła.
Czy to w ogóle realne?
W dodatku, w jaki sposób uczyć się co roku języka, gdy nawet w jednym mamy masę innych rzeczy do nauki? Są frameworki programistyczne, biblioteki, komponenty i CMS-y. Wszystko to sprawia, że nauka jednego języka z jego otoczeniem może trwać nawet kilka lat, przez co nauka jednego języku co roku wydaje się nierealna.
Ale jednak gdy programujemy ciągle w jednym języku, uzależniamy się od niego i ograniczamy do pewnego zasobu słownictwa. Gdy programujemy w C, trudno nam po pewnym czasie zrozumieć obiektowość. Przynajmniej wydaje się, że z czasem robi się to trudniejsze. A może nawet nie trudniejsze, ale z mniejszą chęcią uczymy się czegoś, skoro stary język sprawdza się znakomicie. Z czasem więc coraz trudniej jest otworzyć się na nowe idee, języki, techniki lub filozofie programowania.
Nauka nowego stylu programowania pozwala spojrzeć na stare problemy z nowego punktu widzenia. Dostrzec bardziej eleganckie rozwiązania. Odkryć w końcu, że nowy język sprawia, że cała klasa problemów przestała istnieć przez samą zmianę koncepcji języka.
Ucząc się nowych języków mamy więc szansę znaleźć taki, w którym łatwiej napiszemy nowe rozwiązania. Jednak czasem mam okazję spotkać się ze zdaniem, że programista powinien specjalizować się w jednym języku, że nie ma sensu uczyć się innych dopóki jeden wystarczy.
Jeden nigdy mi nie wystarczał
Dla mnie takie podejście jest zupełnie nietypowe. Od najwcześniejszych lat nauki los sprawił, że nie było mi dane nigdy uczyć się dłużej jednego języka. Nie chodzi zresztą o samo programowanie ale i języki mówione. W podstawówce uczyłem się przez kilka lat języka angielskiego. W ostatnich 2-3 klasach podstawówki jednak dyrekcja zmieniła zdanie i zaczęto uczyć mnie i rówieśników języka niemieckiego. Z kolei w szkole średniej uczyłem się dalej języka angielskiego, ale zamiast niemieckiego wybrałem francuski. Na studiach z kolei uczyłem się angielskiego.
Oczywiście, ktoś może powiedzieć, że na co mi te lata nauki, skoro nie znam wszystkich języków tak dobrze, jak mógłbym jeden, i będzie miał rację.
Nie znam biegle francuskiego i niemieckiego. Dobrze znam jedynie język angielski. Nawet nie mam możliwości korzystać z dwóch wspomniach języków. Ale jednak nie zmieniłbym nic w tej historii. Jeśli bowiem będzie taka potrzeba, łatwiej będzie mi sklecić jakieś proste zdanie, niż gdybym styczności z tymi językami nie miał.
Tak właśnie jest też z programowaniem. Jeśli pracujesz w korporacji na stanowisku "programista C#", nie odczujesz tego tak bardzo. Ale i tam zdarzą się sytuacje, gdy będzie trzeba użyć innego języka, np. T-SQL do napisania prostego zapytania albo jakiegoś języka skryptowego komercyjnego systemu klasy ERP.
Jeśli pracujesz w mniejszym zespole, ale jako freelancer, częściej będziesz musiał sięgnąć do innego języka. Pomijając PHP, C#, C++, mamy jeszcze przecież Ruby, Perl, Pythona czy ActionScript, nie wspominając o Bashu i wielu spacjalistycznych dialektach.
Nieumiejętność pisania kodu w obcym języku jest dużą wadą programisty. Niestety, nie zapowiada się, aby jeden język zdominował świat. Wciąż programuje się w C, C++, popularność ma C#, Java, kolejne języki czekają na swoją kolej. W Sieci popularność zdobywa JavaScript, a Google już pracuje nad jego następcą Dartem.
Coraz częściej też projekty, które powstają są mieszaniną różnych środowisk, które muszą ze sobą współpracować. Na serwerze może być usługa napisana w Javie, klient dekstopowy będzie pisany w C#, webowy w PHP, a mobilny w HTML5 i JavaScript.
Oczywiście może być tak, że w firmie będzie programista znający się na każdym języku z osobna. Jednak nawet jeśli chodzi o przedyskutowanie sposobu współpracy koponentów, które są ze sobą coraz bardziej związane, będzie potrzebne wzajemne zrozumienie między programistami w różnych językach.
Są też sytuacje, gdy całe rozwiązanie trzeba zbudować z kodu w różnych językach. W takim przypadku połączenie sił wielu programsitów będzie znacznie trudniejsze, niż gdyby jeden znający je wszystkie stworzył projekt.
Pytanie tylko czy to możliwe?
Nauka całego spektrum każdego języka jest raczej niemożliwa. Jednak w ciągu dosyć niedługiego czasu można zrozumieć filozofię programowania w nowym języku i jego główne aspekty. Ucząc się w ten sposób, nie zyskasz pewności, że Twój kod będzie lepszy niż kogoś, kto siedzi w tym języku 10 lat. Ale gdy nadejdzie moment, gdy będziesz potrzebował jakiś prosty komponent używany w połączeniu z resztą systemu, będziesz w stanie go zaprogramować bez angazowania kogoś innego z zespołu albo zatrudnienia nowej osoby.
Łatwiej zrozumiesz, z jakimi problemami zmagają się Twoi współpracownicy. Będziesz mógł też łatwiej dobierać język do konkretnego zagadnienia, znając je i wiedząc, w którym szybciej i sprawniej napiszesz potrzebny projekt. Gdy coś wykroczy poza Twoje umiejętności, będziesz przynajmniej wiedział, który język jest wart dalszego zaangażowania, bo przecież na naukę wszystkich nigdy nie będzie czasu.
Ostatecznie i tak najwięcej można nauczyć się, pisząc faktyczne projekty. Takich doświadczeń nie zastąpią godziny na lekturze książek i eksperymenty na sucho. Także nie ma co za bardzo się przejmować, że nie jesteś ekspertem w każdym języku. Wystarczy, żebyś był w jednym i poznawał nowe - po to, aby móc je wykorzystać, gdy zajdzie potrzeba.
Skoro języków jest tak dużo, to jakiego teraz warto się uczyć, aby rozwinąć swoje myślenie koncepcyjne o projektach?
Jakich języków więc się uczyć?
Oto moja lista, ale zachęcam do dodawania innych w komentarzu:
-
C / C++ do aplikacji desktopowych i komunikujących się z urządzeniami,
-
C# do aplikacji użytkowych i biurowych,
-
Java do aplikacji webowych,
-
PHP, ASP.NET do stron internetowych,
-
JavaScript do aplikacji mobilnych.
Jeśli już znasz któreś z tych języków spróbuj poznać też:
-
Ruby On Rails,
-
Python,
-
pisanie wyrażeń regularnych,
-
Visual Basic.NET,
-
Objective.C,
-
Perl,
-
Lisp,
-
Lua,
-
Assembly,
-
Scala.
Możliwe, że nie będziesz pisał żadnych projektów w przyszłości w tych językach. Ale jeśli spróbujesz je poznać, z pewnością skorzystasz na tym przez nowe sposoby, w jaki będziesz mógł patrzeć na stare problemy.
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
19
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Z okazji wypuszczenia akcji Facebooka przypomnijmy sobie, kim jest Zuckerberg
10
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Co czeka programistów po czterdziestce?
27
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Społeczność
Sebek Pozycjonowanie stron za pośrednictwem firm oferujących
swoje usługi nie...
asdosad jak to zrobić na xp??
lol Jak ktoś tu wcześniej zauważył - artykuł jest o niczym, a właściwie ukrytą...
grzybecki To raczej powinien być znak dla programistów Social Media, aby swoje...
facebug @rychu
Strona wchodzi, ślamazarnie ale wchodzi mam takie...
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
inna niedawno temu miałam kod, którym można było od razu zmienić wszystkie...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |









#1 Wszerad 2011-10-10 18:56:14 0
IP: 213.17.128.[...] Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0a1) Gecko/20111009 Firefox/10.0a1
#2 xplicit 2011-10-10 19:35:14 1
IP: 77.252.157.[...] Mozilla/5.0 (X11; Linux i686; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
#3 Pascal® 2011-10-10 19:39:54 1
IP: 85.198.239.[...] Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.187 Safari/535.1
#4 tomaszs® 2011-10-10 19:43:24 0
IP: 89.69.28.[...] Mozilla/5.0 (Windows NT 6.0; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
#5 xplicit 2011-10-10 19:50:29 0
IP: 77.252.157.[...] Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
#6 lazarow 2011-10-10 19:52:27 0
IP: 87.206.63.[...] Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1
#7 slawek22 2011-10-10 20:25:14 0
IP: 83.4.28.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1
#8 fridek 2011-10-10 20:43:15 0
IP: 89.174.127.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1
#9 adi_82® 2011-10-10 20:55:19 0
IP: 77.253.223.[...] Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1
#10 sudlik® 2011-10-11 09:25:08 0
IP: 178.37.60.[...] Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
#11 michancio 2011-10-13 11:56:58 1
IP: 195.69.82.[...] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1
#12 windziarz 2011-10-15 17:04:45 0
IP: 89.72.178.[...] Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
#13 tomaszs® 2011-10-15 18:43:44 0
IP: 89.69.28.[...] Mozilla/5.0 (Windows NT 6.0; rv:7.0.1) Gecko/20100101 Firefox/7.0.1