Co sprawia, że nowy język programowania jest warty uwagi? Devdebata (cz. 1)
Czy „stare”, popularne języki kiedyś znikną? Jak znajomość „starych” języków pomaga w nauce nowych? Co sprawia, że nowy język programowania jest warty uwagi? Te pytania znalazły się w naszej drugiej devdebacie, do której zaprosiliśmy doświadczonych developerów. Wyzwanie było trudniejsze niż w pierwszej części devdebaty (dotyczyła tego, czy warto iść na studia informatyczne), ale nasi eksperci udzielili bardzo interesujących odpowiedzi.
Z rozmowy z pięcioma developerami dowiecie się, jakich nowych języków programowania nauczyli się ostatnio oraz tego, dlaczego ich zdaniem powstają nowe języki i co ułatwia ich poznanie.
Odpowiedzi udzielają:
Jacek Kiernicki. Senior Magento Developer w Divante. Programista, pasjonat i zwolennik relatywnie prostych i skutecznych rozwiązań. W wieku 17 lat rozpoczął przygodę z elektroniką i programowaniem mikrokontrolerów. Kilka lat później jego urządzenia zdobywały nagrody na targach poznańskich. 15 lat temu porzucił elektronikę na rzecz rozwiązań webowych. Od 7 lat pomaga europejskim firmom rozwinąć się w branży eCommerce.
Krzysztof Godlewski. Head of Web w 10clouds. Przygodę z programowaniem zaczął we wczesnych latach dziecięcych. Z powołania back-endowiec. Od trzech lat związany z firmą 10Clouds. gdzie aktualnie opiekuje się zespołem odpowiedzialnym za tworzenie aplikacji webowych.
Krzysztof Kędzierski. Senior Developer w RST Software Masters. Absolwent wydziału Elektroniki Politechniki Wrocławskiej. Specjalizuje się w dostarczaniu rozwiązań opartych na platformie JVM. Tworzył oprogramowanie dla branży telekomunikacyjnej, finansowej, motoryzacyjnej i transportowej. Skuteczny w dekompozycji złożonych problemów. Skoncentrowany na rozwiązywaniu realnych problemów biznesowych i zorientowany na potrzeby klienta.
Grzegorz Śliwiński. Python Developer w Clearcode. Absolwent Politechniki Wrocławskiej z 8-letnim doświadczeniem programistycznym. Otwarty na rozmaite wyzwania, co zaowocowało barwną ścieżką zawodową, która jakiś czas temu zaprowadziła go do roli managerskiej. Po rocznej przygodzie z zarządzaniem, z nową perspektywą powrócił na łono technologii i z przyjemnością poświęcił się swojej największej pasji – tworzeniu rozwiązań przetwarzających potężne ilości danych. Od 5 lat w Clearcode projektuje i rozwija oprogramowanie dla branży AdTech. Fan testowania. Najwięcej satysfakcji czerpie ze wspólnego rozwiązywania problemów wraz z innymi członkami zespołu oraz dostarczania rozwiązań, które adresują realne problemy klientów.
Adam Tulejko. PHP Developer w Piwik PRO. Backend Web Developer z kilkunastoletnim stażem, głównie w PHP. Zwolennik łączenia dobrych praktyk z pragmatycznym podejściem, w szczególności interesuje się zagadnieniami dobrego designu w oprogramowaniu oraz przetwarzaniem dużych ilości danych . Obecnie w Piwik PRO zajmuje się rozwojem i optymalizacją platformy web analytics, obsługującej codziennie miliony requestów.
Spis treści
Pytanie #1. Co przekonałoby Cię do zainteresowania się nowym językiem programowania?
Odpowiada: Jacek Kiernicki, Senior Magento Developer w Divante:
Nowy język to nowe możliwości, ale też i nowe wyzwania, którym nie zawsze można ot tak sprostać. Mam tutaj głównie na myśli czas potrzebny do opanowania nowej umiejętności. Aby wspiąć się na poziom eksperta, trzeba włożyć wiele wysiłku, zbudować od podstaw przynajmniej jedną zaawansowaną aplikację, poznać specyfikę błędów i niedociągnięć danego środowiska, a o tym nie zawsze piszą w książkach. No i chyba najważniejsze: zanim usiądzie się do studiowania składni nowego języka, warto zapoznać się z trendami; czy dany język przetrwa próbę czasu i czy zainwestowany wysiłek będzie miał szansę się zwrócić.
Co mnie przekonuje do rozpoczęcia nauki nowego języka? Przede wszystkim jego możliwości techniczne, społeczeństwo skupione wokół, nie bez znaczenia też jest mnogość frameworków oraz ogólnoświatowe trendy. Bez wątpienia językiem niegdyś mocno niedocenianym, a teraz wynoszonym pod niebiosa jest JavaScript.
Odpowiada: Krzysztof Kędzierski, Software Developer w RST Software Masters:
Moim zdaniem język programowania jest jedynie narzędziem wykorzystywanym w pracy developera. Do nauki nowego języka przekonać może mnie to, że w nowym języku rozwiąże pewne problemy znacznie łatwiej i prościej niż w językach, które do tej pory znam. Oprócz tego zachęcającymi czynnikami byłoby na przykład szybko rozwijające się community, możliwość pisania zrozumiałego, prostego kodu oraz zapotrzebowania na rynku pracy na developerów znających dany język.
Odpowiada: Adam Tulejko, PHP Developer w Piwik PRO:
Do pobieżnego zainteresowania się i poczytania na temat nowego języka programowania faktycznie jest w stanie zachęcić mnie opinia znajomych czy fakt, że dużo się o nim pisze. O podjęciu decyzji o nauce danego języka decyduje to, czy pomoże mi on w rozwiązaniu jakiegoś problemu lepiej niż inne technologie, które znam. Jeszcze innym argumentem jest zetknięcie się z nowym zagadnieniem, do którego znane mi języki po prostu nie są odpowiednie.
Pytanie #2. Jakie materiały ułatwiłyby Ci poznanie bliżej nowego języka?
Odpowiada: Krzysztof Godlewski, Head of Web w 10clouds:
Na pewno niezbędna jest dokładna dokumentacja samego języka oraz jego standardowej biblioteki. Jednocześnie sądzę, że nie jestem jedyną osobą, która raczej nie rozpoczyna poznawania języka od czytania suchej dokumentacji. Lubię tutoriale, w których na początku mamy crash-course ze składni, podstawowych koncepcji i kluczowych elementów języka, a następnie przechodzimy do tworzenia działającej aplikacji, w kolejnych krokach poznając lepiej zarówno język (ciekawe konstrukcje czy idiomy) jak i cały jego ekosystem.
Dokumentacja jest ogromnie ważna, ale jeszcze ważniejszą rolę odgrywa praktyka. Bez spędzenia odpowiedniej liczby godzin z daną technologią trudno liczyć na coś więcej niż powierzchowną znajomość. W tym obszarze pomagają prywatne projekty pisane dla zabawy w wolnym czasie, chyba że mamy możliwość użycia nowego języka w codziennej pracy – wtedy sprawa jest prostsza.
Odpowiada: Krzysztof Kędzierski, Software Developer w RST Software Masters:
Przede wszystkim liczyłbym na zwięzła dokumentację skonstruowaną w formie „od ogółu do szczegółu”. Dzięki niej mógłbym zagłębić się w tematy, które w danej chwili byłyby dla mnie kluczowe. Lubię uczyć się poprzez praktykę, dlatego też zestaw tutoriali wdrażających w dany język byłby przeze mnie mile widziany.
Odpowiada: Adam Tulejko, PHP Developer w Piwik PRO:
Moim zdaniem najlepszym obecnie sposobem na zapoznanie się z nowym językiem przewodnik po nim, który jednocześnie pozwala na wykonywanie fragmentów kodu i eksperymenty. Przykłady takich przewodników to „A Tour of Go” czy „The Rust Programming Language„. Pozwalają one szybko ocenić czy polubimy dany język oraz porównać jego elementy z tym, co już znamy.
Pytanie #3. Jak bardzo znajomość starszych języków pomaga w nauce nowych?
Odpowiada: Jacek Kiernicki, Senior Magento Developer w Divante:
Czasem pomaga, a czasem przeszkadza. Przykładem jest tu JavaScript, który jeszcze do niedawna składnią nie przypominał żadnego uznanego na rynku wysokopoziomowego języka. Brakowało tu bowiem choćby czegoś tak podstawowego jak klasa. Co prawda, można było zasymulować działanie klasy zagnieżdżając w odpowiedni sposób funkcje, ale to jednak nie to samo. Wersja ES 6 wiele w tej materii odmieniła. Wróćmy jednak do tematu.
Pisanie w językach obiektowych wymusza stosowanie pewnego specyficznego schematu myślenia. Ten schemat można bez trudu odnaleźć w większości popularnych języków. Często także składnia poszczególnych języków pozostaje w większości bardzo do siebie zbliżona. Wynika to poniekąd z historii ewolucji poszczególnych języków, które bazują na stworzonym w początkach lat siedemdziesiątych języku C lub C++ (1983). O jak bardzo starych językach tutaj rozmawiamy? Jeśli przyjrzymy się składni najstarszego języka programowania Fortran z 1957 roku, czy Cobol z 1959 roku to z pewnością nie odnajdziemy w nim logiki zaszytej w dzisiejszych językach.
Tak czy inaczej, znajomość choćby jednego dowolnego języka starego czy nowego bardziej pomaga w poznawaniu nowych języków niż w tym przeszkadza. Uczenie się języków uczy logicznego myślenia, wyciągania wniosków i nawet jeśli składnia poszczególnych języków się różni to schemat myślowy zostaje ten sam.
Odpowiada: Krzysztof Godlewski, Head of Web w 10clouds:
To zależy. Jeżeli znasz już język z danej rodziny – na pewno będzie to przydatne. Znając C łatwiej nauczyć się Go; jeżeli pisałeś w Lispie, wejście w Clojure nie będzie problemem i tak dalej. Z drugiej strony warto mieć na uwadze to, że podobieństwo jednego języka do drugiego może powodować, że przenosimy praktyki, do których przywykliśmy i są zasadne w języku A, do świata języka B, gdzie nie mają one kompletnie racji bytu. Skrajny przykład: tworzenie setterów i getterów w pythonowych klasach, tak jak robi się to np. w Javie.
Odpowiada: Grzegorz Śliwiński, Python Developer w Clearcode:
Zależy od pochodzenia, ich paradygmatów i podobieństwa. Czasem pomaga, czasem przeszkadza. Jak w nauce języków mówionych.
Pytanie #4. Czy w ogóle jest możliwe, że “stare języki” znikną z IT i przestaną interesować programistów?
Odpowiada: Jacek Kiernicki, Senior Magento Developer w Divante:
To kwestia czasu. Pierwszy powstały język programowania Fortran z 1957 roku ciągle jest używany, choć bardzo sporadycznie. Nie wyobrażam sobie, żeby młodzi, ambitni ludzie poświęcali swój czas na uczenie się języków, które nie mają przed sobą przyszłości. Są po prostu przestarzałe i nie odpowiadają zapotrzebowaniom dzisiejszego rynku. Pozostaną one raczej jako ciekawostka akademicka, niż licząca się robocza przestrzeń pozwalająca poprawnie funkcjonować naszym urządzeniom. Każdy język wcześniej czy później zostanie wyparty przez ciągle nowe pojawiające się odmiany lepiej odpowiadające potrzebom dzisiejszego świata.
Odpowiada: Krzysztof Godlewski, Head of Web w 10clouds:
To się dzieje – są przecież języki, w których pisano produkcyjne oprogramowanie lata temu, a w dzisiejszych czasach mało kto wykazuje chęć nauki tych „staroci”.
Odpowiada: Krzysztof Kędzierski, Software Developer w RST Software Masters:
Języki „głównego nurtu” nie znikną z dnia na dzień z IT. Ich przetrwanie gwarantuje nie zainteresowanie programistów, a olbrzymia liczba działających systemów napisanych w tych językach. Systemy te muszą być rozwijane i utrzymywane, więc specjaliści znający dane technologie będą ciągle potrzebni. Dla przykładu kilkanaście lat temu pojawiały się pierwsze głosy, że Java jako język będzie umierać. Dziś Java ma się bardzo dobrze, a do tego wzrasta popularność języków opartych o platformę JVM (Java Virtual Machine) takich jak Kotlin czy Scala.
Odpowiada: Grzegorz Śliwiński, Python Developer w Clearcode:
Nie spodziewam się. Taniej bankom zapłacić kilkanaście/kilkadziesiąt tysięcy programiście COBOLa za utrzymanie aktualnego, stabilnego rozwiązania, niż zrobić refactoring. Podobnie ma się rzecz z nieco świeższymi rozwiązaniami, które tylko się łata i najwyżej opakowuje we wrappery.
Odpowiada: Adam Tulejko, PHP Developer w Piwik PRO:
Wszystko ma swój kres i za pewne z czasem niektóre języki stracą zainteresowanie. Nie dzieje się to jednak nagle, jest to stopniowy proces. Są też technologie takie, jak C/C++ czy Java, które jeszcze długo nie znikną. W przypadku C/C++ przyczyną jest ich dojrzałość, którą osiąga się latami i nowe języki nie są w stanie jej zaoferować. W wielu przypadkach na podtrzymanie zainteresowania wpływa to, że w danej technologii stworzono już sporo oprogramowania, które dobrze spełnia swoje zadanie i przepisanie go w nowszym języku nie ma ekonomicznego uzasadnienia.
Niebawem opublikujemy drugą część devdebaty. Jesteśmy ciekawi Waszych spostrzeżeń, dlatego chętnie przeczytamy komentarze odpowiadające na główne pytanie, które brzmi: Co Waszym zdaniem sprawia, że nowy język programowania jest warty uwagi?