/ programowanie

O polyglot programmer

Poliglota

W języku polskim słowo to oznacza "człowieka znającego wiele języków, potrafiący kontaktować się lub pisać w wielu językach świata". Gdy spotykam taką osobę (a często się to nie zdarza) jestem pod wrażeniem umiejętności jakie posiada. Myślę, że każdy chciałby władać kilkoma językami na raz. Google widzi to tak:

poliglota

Poliglota programista

Czytając bloga Kamila Lelonka, poznałem termin polyglot programmer (polecam przeczytać wpis Kamila). Poczułem, że ja też jestem taką osobą.

Swoją przygodę jako programista zaczynałem jako praktykant pisząc aplikacje w Androidzie. Jeszcze na studiach, gdy w ramach specjalności systemy internetowe, znalazłem frameworka bazującego na pythonie, Django stwierdziłem, że pisanie stron w "gołym php" nie ma sensu. Po praktykach, zacząłem pracę jako młodszy programista Android'a. Po 3-4 miesiącach okazało się, że był niedosyt frontend developerów. Ja znając podstawy HTML5 i css3 szybko wszedłem w temat gruntów, gulpów, sassów i nauczyłem się również Angulara. I tak przez parę miesięcy byłem na zmianę frontem i Androidowcem w zależności od potrzeby. Aktualnie staram się mocniej wejść w temat c# i aps.net(.core). Gdzieś w między czasie dane było mi jeszcze pisać małe rzeczy w springu używając springboot (jak zobaczyłem pierwszy raz springboota, zrobiłem duże WOW). Ah zapomniałem wspomnieć, że swoją pracę magisterską piszę w c++ i OpenGL'u ( hobbistycznie interesuję się zagadnieniami gamedevu, niestety z braku czasu m.in. przez uczelnię, nie ukończyłem żadnego projektu, YET :D )(o samej magisterce chcę poświęcić kilka wpisów so stay tuned)

Plusy bycia poliglotą

Nie zamykając się na daną technologię czy język, stałem się otwarty na nowe rozwiązania, wzorce czy podejścia. Dzięki temu w miarę łatwo zaadoptowałem podejście RX w Androidzie (2 lata od tego wpisu nie było pełnego wsparcia dla Javy 8 i wszystkich jej dobroci), nie wiedziałem w tamtym czasie, reaktywność będzie sercem angulara2 (F**k yeah). Kilka wzorców z projektowania gier (swoją drogą polecam game programming patterns) można spokojnie użyć w różnych aplikacjach.

Moim zdaniem, ważniejsze jest dogłębniejsze poznanie OOP i functional programming. Jeżeli już się zrozumie idee, wady i zalety każdego paradygmatu, język programowania staje się narzędziem. Przestaje się być maniakiem danej technologii a w pracy przy nowych projektach, można wybierać inne technologie czy języki. Kolejny przedsięwzięcie nie musi już być kolejnym projektem w javie czy c#, może trzeba sprawdzić jak się spisuje golang.

Mam takie wrażenie, że to jest ścieżka kariery dla Chief technology officer, jednak nie wiem tego, jestem jeszcze za młody by to stwierdzić :D.

Minusy bycia poliglotą

Nie istnieje złoty środek, tak jest również w tym przypadku. Poliglota raczej nie zostanie c# asp.net and visual studio and azure masta. Nie będzie też raczej z niego dobry dev ops. Chyba jednak najważniejszym minusem, jest zmiana pracy, bo o ile w danej firmie panuje "kultura różnych technologii" o tyle mało jest ofert dla osób posługujących się kilkoma technologiami i językami (nie wliczam w to fullstacków, nie pracowałem nigdy jako taki programista więc wolę się nie wypowiadać).

Najważniejsze by projekt był zrobiony a klient zadowolony

Często fanatycy technologii zapominają co jest najważniejsze w naszej pracy. My chcemy zarobić, nasza firma chce zarobić, klient chce mieć projekt skończony w czasie (często przed deadlinem) co wiąże się z jego korzyściami. I może się okazać, że fanatycy np. javy, nie zdążą z czasem, a dla pythonowców będzie to wręcz niewykonalne (lub odwrotnie). A gdy to już się stanie, wszyscy są niezadowoleni. Poliglota może okazać się na wagę złota, bo będzie wstanie powiedzieć "Ja już robiłem coś takiego w javie, później w pythonie, python to lepszy wybór / java to lepszy wybór". Tylko czy ktoś go posłucha?

Temat pewnie jeszcze się przewinie parę razy, więc zapraszam do śledzenia, jeżeli blog Ci się spodoba.