Od Juniora do Seniora: Odpowiedzi na pytania społeczności #8
Juniorzy nie przestają pytać, a seniorzy im pomagać. Taka wymiana wiedzy bardzo nam się podoba, dlatego tym bardziej cieszymy się z kolejnej edycji naszego cyklu „Od Juniora do Seniora”. Znajdziecie w nim pytania od początkujących i odpowiedzi na nie od doświadczonych developerów z firmy GOG.com. Zobaczcie, o co tym razem pytali Ci pierwsi.
Spis treści
Pytanie #1. Marcin Wróblewski: Dlaczego jest teraz tyle ofert dla PHP developerów? Szukają każdego: juniorów, seniorów, zdalnie, na miejscu — bez różnicy. Warto się uczyć teraz jakiegoś Symphony czy innego Laravela?
Odpowiada: Paweł Lewtak. Pracuje z PHP od blisko 10 lat, aktualnie jako Back-end Web Developer w GOG.com.
PHP, mimo tego, że często jest obiektem żartów wśród osób korzystających z innych technologii, daje bardzo dużo możliwości. Jest to na pewno język, którego łatwo się nauczyć, nie wymaga specjalnych narzędzi, środowiska czy przygotowań. Do tego jest dostępny na każdym, nawet najtańszym, hostingu, więc publiczne udostępnienie swojej aplikacji jest bardzo proste. Ponadto społeczność skupiona wokół PHP jest bardzo duża, a co za tym idzie cały ekosystem również prężnie się rozwija.
Jeśli chodzi o framework, to zarówno Symfony, jak i Laravel wykorzystują częściowo te same komponenty, które mogą Ci się przydać nawet jeśli nie zdecydujesz się na żaden z tych frameworków. Jeśli chcesz rozpocząć naukę Symfony lub Laravela, radziłbym zerknąć na dokumentację obu, poświęcić każdemu godzinę i kontynuować z tym, który wyda Ci się lepszy/prostszy.
Pytanie #2. Adam Masłowski: Jak powinna wyglądać dobrze zaplanowana architektura mikroserwisów? Domyślam się, że to „zależy”, jednakże są zapewne pewne standardy lub reguły, którymi Wy się kierujecie.
Odpowiada: Tomasz Kowalczyk. Architekt oprogramowania w GOG.com, od ponad 10 lat pracuje w branży aplikacji internetowych. Prelegent na wielu konferencjach technicznych, entuzjasta programowania funkcyjnego, autor bibliotek open source. Twitter: http://twitter.com/tmmx. Kontakt: http://kowalczyk.cc
Dobrze zbudowana architektura mikroserwisów zaczyna się przede wszystkim od zastanowienia się, czy na pewno jest to dobra droga rozwoju. Odpowiednio zaprojektowany modularny monolit może zaoszczędzić wiele pracy przy zachowaniu odpowiedniej higieny komunikacji pomiędzy modułami. Jeśli jednak jesteśmy już na nie zdecydowani, to do głowy przychodzą mi trzy kwestie: podział odpowiedzialności, jasność komunikacji oraz prawa dostępu.
Dobry mikroserwis powinien autonomicznie realizować jasno zdefiniowany cel oraz pozwalać na interakcję z nim z zachowaniem spójności danych. Takim celem jest zazwyczaj zarządzanie jedną z części systemu, od pojedynczych funkcji aż do całych podsystemów. Dzięki jasnemu podziałowi odpowiedzialności unikamy sytuacji, w której wiele aplikacji zmienia te same dane w różnych kontekstach, co często prowadzi do błędów.
Jasna komunikacja oznacza, że nie musimy na sztywno określać, gdzie znajdują się wymagane zasoby, a możemy zamiast tego posługiwać się aliasami, które zostaną automatycznie „zrozumiane” na innej warstwie. Istnieją narzędzia pozwalające na automatyczne wykrywanie usług (service discovery) — jednym z nich jest Consul, który pozwala m.in. na przechowywanie konfiguracji (key-value) oraz informowanie o adresach, pod którymi są dostępne inne usługi (registry).
Sprawdzanie praw dostępu do określonych zasobów to chleb powszedni większości aplikacji. Mimo że nie wszystkie mikroserwisy będą komunikowały się ze światem zewnętrznym, ich także dotyczy problem uwierzytelnienia i autoryzacji. Jednym z rozwiązań mogą być systemy tzw. pojedynczego logowania (SSO – Single Sign-On), w którym jedna z usług pozwala na (re)generowanie tokenów dostępowych rozumianych przez wszystkie inne usługi. Tworząc nowe mikroserwisy możemy przygotować gotową warstwę integracji, dzięki czemu system „logowania” wymaga minimalnego nakładu pracy.
Pytanie #3. Wojtek Marszeniuk: Czy warto uczyć się tworzenia PWA — progressive web apps? Webowa appka to hybryda, której bliżej jednak do strony internetowej, jednak nie wiem, czy warto jest się w tym do końca specjalizować, czy pójść nieco szerzej, rozumiejąc też to, jak wygląda tworzenie aplikacji mobilnych? Dzięki!
Odpowiada: Michał Lipiński. Software engineer z ponad 10 letnim doświadczeniem w branży, entuzjasta technologii webowych. Pamięta czasy, kiedy Internet Explorer 6 rządził światem.
Zdecydowanie warto zainteresować się tematem PWA, ponieważ o ile nie zastąpią rozwiązań natywnych, to w wielu przypadkach stanowią solidną alternatywę. Platforma webowa potrafi coraz więcej, dzięki czemu nie jesteśmy skazani jedynie na rozwiązania natywne. Korzystając ze strategii takich jak:
- szeroko rozumiane progressive enhancement,
- responsive web design,
- offline-first (poprzez Service Worker),
uzupełniając je wymogami jakie stawia PWA (web manifest, zawartość serwowana poprzez HTTPS czy HTTP/2) możemy niemal każdą stronę czy aplikację webową zmienić w PWA, zapewniając użytkownikowi wrażenie podobne do aplikacji natywnych. Jednocześnie cały czas możemy korzystać ze wszystkich zalet jakie daje nam środowisko webowe, gdzie niezaprzeczalnym atutem jest dostępność, łatwość dystrybucji i pozyskania takiej aplikacji (nie musimy jej zamieszczać w sklepach z aplikacjami, tym samym przechodzić procesu ich publikacji i każdorazowych aktualizacji). Jest to niewątpliwa zaleta, obok której trudno przejść obojętnie, bo jak pokazują badania, 48% użytkowników urządzeń mobilnych rozpoczyna swoje poszukiwania korzystając z wyszukiwarki, a nie sklepu z aplikacjami.
Pytanie #4. Mateusz Kozłowski: Jak rekruterzy patrzą na osobę kandydującą na stanowisko juniora we front-endzie, która prowadzi własne kanały typu blog/kanał na YT ? Chętniej przyjmuje się taką osobę?
Odpowiada: Jan Nowotny. Lead Frontend Developer w GOG.com, zajmuje się UI aplikacji GOG Galaxy.
Jak najbardziej jest to na plus — dobra firma nie będzie patrzyła tylko na techniczne umiejętności osoby rekrutowanej, ale również na umiejętności miękkie, oraz zaangażowanie w tematyce programowania. Jeśli jest to blog o programowaniu, to daje osobom rekrutującym informację, że ta osoba zagłębia się w tematykę i jaki ma zakres wiedzy od razu, przed zadaniem pytań na rozmowie. Przede wszystkim może pomóc więc w samym byciu zaproszonym na rozmowę, jeśli wyraźnie to pokażesz w swojej aplikacji.
Pytanie #5. Grzegorz Foota: Jakie polecacie książki itd. do design patterns?
Odpowiada: Paweł Lewtak. Pracuje z PHP od blisko 10 lat, aktualnie jako Back-end Web Developer w GOG.com.
Jeśli masz nieduże doświadczenie w programowaniu, to wzorce projektowe są w przystępny sposób przedstawione w książce “Rusz głową! Wzorce projektowe”, wydanej w Polsce przez Helion. Natomiast jeśli posiadasz już większe doświadczenie, to książką, o której trudno nie usłyszeć, jest pozycja napisana przez tzw. “gang czworga” (chodzi o czterech autorów), czyli “Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku”.
Cykl „Od Juniora do Seniora” (poprzednie części znajdziecie tutaj: 1, 2, 3, 4, 5, 6, 7) tworzymy razem z Wami, dlatego czekamy na kolejne pytania, które możemy zadać seniorom. Zamieście je w komentarzach albo wyślijcie na adres piotr@justjoin.it, a najciekawsze trafią do szóstej części cyklu.