Od Juniora do Seniora: Odpowiedzi na pytania społeczności #1
Przedstawiamy pierwszą odsłonę naszego najnowszego projektu „od Juniora do Seniora”. Od pewnego czasu obserwujemy, jak coraz większe problemy mają Juniorzy na rynku pracy i chcielibyśmy, aby pomogli Wam w tym sami eksperci.
Zebraliśmy kilkadziesiąt pytań od osób na początku swojej drogi, którym zdecydowali się pomóc blogerzy technologiczni, CEO, Seniorzy i Team Liderzy polskich firm technologicznych. Regularnie publikować będziemy odpowiedzi na Wasze pytania. Od dziś już każdy Junior będzie mieć szansę, aby na jego pytania odpowiedział ekspert z danej dziedziny, podsyłajcie je nam na piotr@justjoin.it, tymczasem zapraszamy do odpowiedzi na pierwsze z nich.
Pierwszą serię pytań i odpowiedzi zaczynamy dość popularnych problemów. Nasi eksperci odpowiadają na pytania, jak zacząć naukę programowania, zarówno jako front-end oraz backend developer. Zapraszamy do części pierwszej i już na wstępie dziękujemy naszym zacnym gościom, których sylwetki poznacie przy każdym pytaniu już za moment:
Spis treści
Pytanie #1
Paweł Słomka: „Zastanawiam się, jak ważne jest wykształcenie na stanowiskach juniorskich? Trudno samemu nauczyć się wszystkiego, ale jednak przy odrobinie chęci i wolnego czasu można ogarnąć podstawy. Jak bardzo pracodawcy zwracają uwagę na wykształcenie?”
Odpowiada: Piotr Całka, CEO & Managing Partner w Inspire Labs: wcześniej pełnił funkcje software developera, ISO & traffic managera oraz production managera:
Oczywiście, szkoły czy kursy są ważne i pomagają w rozwoju. Jednak na dzień dzisiejszy, gdy przeglądam CV kandydatów, praktycznie pomijam sekcję obejmującą wykształcenie. Na dobrą sprawę mogłoby tej sekcji nie być. Najważniejsze jest doświadczenie. W sieci jest masa dostępnych materiałów, z których można się uczyć. Nie mówię tu tylko o kursach, ale przede wszystkim o dokumentacjach, tutorialach, forach. Ponadto ogromna ilość meet up-ów pozwala na zdobywanie praktycznej wiedzy za darmo (wystarczy chcieć i zainwestować trochę własnego czasu).
W karierze programisty bardzo ważna jest umiejętność samokształcenia. Ten zawód wymaga nieustannego rozwoju i poznawania nowych technologii. Podsumowując, nie ma znaczenia jakie szkoły kandydat do pracy skończył. Najważniejsze jest, jakimi technologiami potrafi się posługiwać i czy potrafi zaprezentować te kompetencje.
Odpowiada: Andrzej Liśkiewicz – Goodylabs Founder: Experienced System Architect, Team Leader and Application Developer being on board on many projects in wide range of business domains:
Ukończone studia wyższe dają pracodawcy poczucie, że będzie miał do czynienia z kimś kto potrafi usystematyzować wiedzę i z łatwością przyswajać nowe informacje. Oczywiście to tylko wrażenie. Niemniej jednak jak wspomniał Piotr Całka powyżej, te cechy są niezbędne by być dobrym programistą. Z tym wykształceniem w CV jest jak z umiejętnościami językowymi – na koniec nie ważne gdzie się uczyłeś – ważne czy się nauczyłeś.
Odpowiada: Paweł Elbanowski, CEO Programa™: Team builder and experienced project manager, helping companies and startups facilitate their everyday work since 2007:
Wykształcenie jest mile widziane, bo pokazuje, że znasz teoretyczne podstawy. ALE wykształcenie nie jest praktyczne, a tylko konkretne umiejętności mają znaczenie. W rekrutacji do nas zawsze wysyłamy zadania sprawdzające praktykę. Jeżeli dana osoba poprawnie wykona zadania to zarówno wykształcenie, jak i poprzednie prace nie mają dla nas znaczenia. Wiemy, że będzie wartościowym zawodnikiem w drużynie.
Pytanie #2
Marcin Pilarczyk: „Ja mam pytanie do web developerów, ostatnio coraz bardziej popularny staje się JS i chciałbym się dowiedzieć, co sądzicie o tym by aplikacje były napisane tylko na JavaScripcie? Jak często można się spotkać z takimi projektami w firmach? Jak sprawdza się JavaScript wydajnościowo w większych aplikacjach. I czy opłaca się skupić na pierwszy ogień by aplikacje były napisane w JS, czy może lepiej pozostać np. przy C#/PHP/Python a JavaScript wykorzystywać wspomagająco?”
Odpowiada: Michał Miszczyszyn — Type of Web Founder & full-stack JavaScript developer with years of professional experience.
Oczywiście różne firmy korzystają z przeróżnych technologii do budowania aplikacji internetowych, jednak bez wątpienia najpopularniejszym językiem programowania jest teraz JavaScript. Przeglądając oferty pracy można się pokusić nawet o wniosek, że zdecydowanie więcej projektów pisanych jest w JS niż jakiejkolwiek innej technologii — i mam na myśli tutaj również backend.
Bardzo popularne są teraz aplikacje tworzone całkowicie w JavaScripcie: na front-endzie np. React, Angular, Vue czy Ember, a na backendzie node.js i np. express, HapiJS czy loopback. Nie ma rozwiązań idealnych, ale wybór samego JS jest dobry pod wieloma względami: łatwo znaleźć pracowników, stosunkowo łatwo front-endowcom dopisać coś na backendzie, społeczność JS jest przeogromna i najbardziej aktywna ze wszystkich technologii — dzięki czemu łatwo znaleźć wsparcie, rozwiązania problemów i gotowe biblioteki. Są to silne argumenty, które trafiają zarówno do ludzi biznesu jak i do programistów i które mocno przemawiają za takim, a nie innym wyborem technologicznym.
Osobiście zaczynałem swoją karierę jako front-end developer, a backend był pisany przez innych programistów w różnych technologiach (głównie PHP, ale też Java, C#, Ruby, Python). Od kilku lat jednak nie pracowałem z backendem napisanym w innej technologii niż Node.js — widać tutaj wyraźny trend, zarówno w startupach, jak i większych firmach.
Odpowiadając wprost na Twoje pytanie: Stack oparty wyłącznie o JavaScript jest nie tylko absolutnie możliwy, ale też aktualnie bardzo popularny. JavaScript bez wątpienia powinien być Twoim wyborem numer 1 🙂 A jeśli właśnie się go uczysz to może akurat zainteresuje Cię kurs React.js, który właśnie tworzę na blogu?
Na koniec pozwolę sobie jeszcze na dygresję — niezależnie od wybranej technologii bardzo ważny jest ciągły rozwój i poznawanie nowych alternatywnych rozwiązań. Im więcej języków i paradygmatów programowania poznasz, tym lepszy będzie tworzony przez Ciebie kod i zupełnie inaczej będziesz patrzył na napotykane problemy. Dlatego nie można ograniczać się tylko do jednego języka!
Odpowiada: Andrzej Liśkiewicz –Goodylabs Founder: Experienced System Architect, Team Leader and Application Developer being on board on many projects in wide range of business domains:
Krótko i na temat: W naszej firmie 8/10 to projekty React, Node.js Opłaca się skupić na technologiach wokół JS – jak na razie to jedyny język wspierany przez wszystkie liczące się przeglądarki 🙂
Jeśli widzisz swoją przyszłość jako web developer ale bardziej po stronie:
frontu to masz przed sobą trudną ale owocną przyszłość. Generalnie rewolucje w technologiach wykorzystywanych do programowania frontu są aktualnie czymś powszednim – jednak dotyczą one głównie koncepcji i bibliotek a nie samego języka. Na koniec wszystkie te zabawki kompilują się do kodu rozumianego przez przeglądarki – HTML+CSS+JS. Jeśli będziesz wiedział co można za pomocą tej trójcy osiągnąć w przeglądarce to raczej żadna nowa technika dochodzenia do tego celu cię nie pokona 🙂
backendu – to tutaj z tym JS nie jest już tak pięknie. Oczywiście aktualnie node.js ma swoje 5 minut. Niemniej jednak powoli w przypadków aplikacji WEB-owych pojęcie backendu sprowadza się do rozwiązań udostępniających jakieś API (REST, rzadziej WS). Czy one są implementowane w JS, Java, Ruby on Rails, Python, .NET … jest wtórne. Na koniec korzystasz z nich z wykorzystaniem protokołu HTTP i formatu danych JSON/XML. I tu znowu konkluzja – dopóki wiesz co można osiągnąć wykorzystując protokół HTTP, formatu danych JSON/XML i korzystając ze standardów t.j. REST i JSON API, XML – możesz spokojnie żonglować językami i technologiami, którymi osiągniesz swój cel.
Pytanie #3
Agata Magier: „Szybkie pytania: Co obowiązkowo MUSI umieć/wiedzieć junior front-end developer. Na czym się skupić na początku nauki. Jakie są najnowsze trendy we front-endzie, którymi warto się zainteresować? :)”
Odpowiada: Bartosz Cytrowski: Projektant i programista interfejsów użytkownika. Pracował w projektach fullstackowych opartych na Javie, .Necie, PHP i Node.js. Na sali w infoShare Academy spędził niemal 2 tysiące godzin w roli trenera. http://cytrowski.com:
Teorii jest stosunkowo niewiele:
- jak zbudować semantyczny kod HTML
- jak kontrolować layout strony z użyciem CSS (flexbox, grid, media queries)
- czym są: zmienne i jaki jest ich zasięg w JS
- czym jest kontekst wywołania funkcji w JS
- co to są prototypy w JS
- o co chodzi z asynchronicznością w JS
- jak obsłużyć debugger
- jak działa protokół HTTP
- co to jest Node.js i do czego służy npm
- jak działa przeglądarka
Do tego dochodzi umiejętność korzystania z dokumentacji i jej wcześniejsze przeskanowanie wzrokiem, żeby wiedzieć, co jest możliwe, żeby uniknąć prób wymyślania koła na nowo.
Warto też dobrze poznać jeden wybrany edytor kodu, zasady korzystania z systemu kontroli wersji (Git) i poćwiczyć pisanie bezwzrokowe na klawiaturze – często zerkając na nią w trakcie pisania przegapiamy podpowiedzi, które pojawiają się na ekranie.
Umiejętności zawsze przychodzą z czasem w trakcie ćwiczeń – samodzielne zbudowanie 2-3 stron o odmiennych layoutach, aplikacji w wybranym frameworku lub bez (polecam Vue lub Reacta), trochę ćwiczeń z jQuery i jesteś gotowa do pracy 😉
Dobrze jest znależć sobie programistę, który będzie w stanie skontrolować Twoje postępy, ponieważ na własną rękę bardzo łatwo jest się zniechęcić.
Co do trendów: reaktywne programowanie funkcyjne (ponadczasowa wiedza), różnice między Angularem a Reactem oraz jak w to wszystko wpasowują się inne frameworki z tych najbardziej popularnych.
Przyda się też umiejętność rozbijania dużych problemów na mniejsze – takie, które da się łatwo rozwiązać samodzielnie albo znaleźć ich gotowe rozwiązanie w sieci.
Pytanie #4
Piotrek Morawski: „Chciałbym się dowiedzieć jaką konkretną ścieżkę obrać aby zacząć pracę lub staż jako juniora w javie. Aktualnie chodzi mi po głowie jakiś bootcamp koszt spory bo przeważnie w okolicach 10k ale na to jestem przygotowany. Moim największym problemem jest to że nie wiem jaką konkretną wiedzę muszę mieć aby realnie zacząć szukać w tym pracy. Co dokładnie oznacza dobra albo biegła znajomość javy. Z góry dziękuje za wszystkie rady.”
Polecam najpierw poprogramować co nieco we własnym zakresie. Spróbować, zobaczyć z czym to się je. Przygotować się do tego bootcampa. Zrobić dowolny swój projekt, albo chociaż spróbować. Na bootcampie ta wiedza się przyda, a tam program zajęć przygotowuje do pierwszej pracy.
Za to w dużej mierze płaci się organizatorom bootcampów: za odpowiedni dobór materiału. Może się również okazać, że Java nie jest najlepszym wyborem. Skąd akurat taka decyzja? Pierwszą pracę może być prościej zdobyć we front-endzie. Takie bootcampy także istnieją.
Odpowiedzi udzielali:
Piotr Całka, CEO & Managing Partner w Inspire Labs: wcześniej pełnił funkcje software developera, ISO & traffic managera oraz production managera:
Andrzej Liśkiewicz – Founder Goodylabs: Experienced System Architect, Team Leader and Application Developer being on board on many projects in wide range of business domains:
Paweł Elbanowski, CEO Programa™: Team builder and experienced project manager, helping companies and startups facilitate their everyday work since 2007:
Michał Miszczyszyn — Type of Web Founder & full-stack JavaScript developer with years of professional experience.
Bartosz Cytrowski: Projektant i programista interfejsów użytkownika. Na sali w infoShare Academy spędził niemal 2 tysiące godzin w roli trenera. http://cytrowski.com:
Maciej Aniserowicz – Devstyle.pl: programista-pasjonat. Człowiek od wszystkiego związanego z programowaniem. Autor bestsellerowej książki “Zawód: Programista“.
Dziękujemy Wam za uczestnictwo w pierwszej serii pytań! Zapraszamy do dołączenia do akcji „od Juniora do Seniora”, także zapraszajcie znajomych i bez skrępowania piszcie swoje pytania w komentarzach lub poprzez mail: piotr@justjoin.it.