Kilka dni temu ukończyłem kurs Angulara z naszym partnerem Angular 2 Space i chciałbym podzielić się z Wami moimi spostrzeżeniami. Przypomnijmy, że Angular to framework frontendowy, który pozwala na budowanie zaawansowanych aplikacji internetowych. Framework pozwala zbudować aplikację na podstawie modelu opartego o komponenty i usługi, co ułatwia dalszy rozwój i testowanie strony.

Zrzut ekranu 2017 04 12 o 19.56.55

Mocne strony Angulara to przede wszystkim:

  • obsługa wielu platform: web / mobile / desktop
  • szybkość i wydajność: dopracowany mechanizm wykrywania zmian, strumienie danych RxJS
  • świetne narzędzia: Angular CLI,  szerokie wsparcie IDE
  • data binding, czyli dynamiczny mechanizm relacji między źródłem a odbiorcą danych i synchronizacji między nimi.
  • bardzo dobre wsparcie dla wielu innych zewnętrznych bibliotek i frameworków

To tyle tytułem wstępu, wracam do kursu.

15027590 758588074316511 2054202864858059816 n

1. Organizacja

Nie mam żadnych zastrzeżeń co do miejsca warsztatów, ścisłe centrum Gdańska Wrzeszcz, sala warsztatowa położona bardzo blisko przystanków komunikacji miejskiej, jak i wielu miejsc rozrywki.
Sala z dobrym bezprzewodowym internetem i wystarczającą przestrzenią, pozwalająca na swobodną pracę. Oczywiście, organizator zapewnił napoje i ciastka, oraz pizze (nawet z ananasem).

2. Zakres Tematyczny

overview

Na warsztatach omówiono m.in.:

  • Moduły (składowanie aplikacji: komponenty, dyrektywy, services, klasa AppModule, dekorator NgModule).
  • Style globalne i assety (poznanie stylów oddziałujących na całą aplikację, jak i również na konkretne komponenty).
  • Komponenty (tworzenie, konfigurowanie, edytowanie komponentów).
  • Templatki (sposoby wykorzystania danych i metod w template m.in. Data-binding, obsługa zdarzeń, formularze template-driven i model-driven, pipe async, zmienne template’u, transkluzja).
  • Services (tworzenie, konfigurowanie i edytowanie serwisów oraz rejestracja providerów w module i komponencie.).
  • Dyrektywy (tworzenie, konfigurowanie i edytowanie dyrektyw).
  • Pipes (tworzenie i edytowanie pipes, oraz wykorzystanie go w template).
  • Routing (tworzenie przekierowań, dyrektywy routerLink, interfejs ActivatedRoute).
  • Angular CLI (generowanie komponentów, usług, pipes, uruchamianie aplikacji w trybie developerskim, deploying aplikacji na Github).
  • manager NPM (korzystanie z managera paczek JS).
  • RxJS (wykorzystanie biblioteki asynchronicznego JS).
  • json-server (uruchamianie RESTowego API i fake API).
  • debuggowanie (korzystanie z narzędzi developerskich Chrome i opis możliwości debuggera).
  • testowanie aplikacji (Testowanie klas, usług i komponentów z wykorzystaniem frameworka Jasmine).

Każdy z powyższych tematów, został dokładnie opisany i przedstawiony na przykładzie. Prowadzący wszystkie materiały udostępnił na specjalnie przygotowanej stronie z kursem. Według mnie bardzo dobrym krokiem było pominięcie bardzo podstawowych zagadnień typu zainstalowanie NodeJS, czy innych podobnych banalnych rzeczy. Pozwoliło to na poświecenie się tylko tym rzeczom, które faktycznie mają największą wartość.

3. Merytoryka

Nie jestem senior developerem, ale mogą śmiało powiedzieć, że merytorycznie kurs był na naprawdę wysokim poziomie, potwierdzeniem tej tezy jest ilość pytań bardziej doświadczonych kolegów kierowanych do prowadzącego. Również jakość dostarczonych materiałów, stoi na bardzo wysokim poziomie. Każda misja, którą należało wykonać, zawierała załączniki z wyjaśnieniem danego tematu potrzebnych do wykonania polecenia. Oprócz takie formy pomocy autor przygotował również bardzo pomocne snippety oraz pełny kod danego zadania w repozytorium github, to bardzo dobre rozwiązanie w przypadku poszukiwania błędu w swoim kodzie.

Należy wspomnieć, ze większość czasu była poświęcona na pracy samodzielnej z oczywiście możliwością pomocy od prowadzącego. Myślę, że nauka w formie warsztatowej to najbardziej efektywny sposób nauki nowych języków i frameworków.

Po wykonaniu wszystkich misji organizator przygotował dwa specjalne zadania:
– Przechytrzyć NASA
– Detektor planet

Pierwsze zadanie niech pozostanie niespodzianką dla przyszłych „kosmonautów”, natomiast drugie zadanie polegało na utworzeniu nowego komponentu, w którym użytkownik będzie szukał kursorem myszki ukrytej planety na określonym obszarze.planet detector 2

spec ops 2

planet detector

Oba zadania zostały pozbawione jakichkolwiek wskazówek i sprawdzają wiedzę zdobytą podczas szkolenia.

4. Czego się nauczyłem?

Nauczyłem się dużo. Przed kursem miałem dosyć znikomą styczność z AngularJS i przez pierwsze momenty praca z tym frameworkiem była dla mnie dosyć skomplikowana (oczywiście, prowadzący chętnie służył pomocą). Podczas kursu stworzyliśmy, naprawdę funkcjonalną aplikację zarządzania flotą statków kosmicznych. Aplikacja pozwala na generowanie statków kosmicznych, dodawania/usuwanie/edytowanie pilotów i oczywiście przyłączanie ich do danego pojazdu. Oprócz tego stworzyliśmy okno webowe pozwalające dodać dowolny widok witryny internetowej w aplikacji. Na końcu wszystko zostało przetestowane i w razie potrzeby poprawione.

Kurs pozwolił mi zrozumieć wszystkie główne filary frameworka w bardzo w przyśpieszonym trybie. Dziś mogę samemu tworzyć własne aplikacje webowe, co prawda proste, ale należy wiedzieć, że warsztaty to tylko możliwość szybszego i prawidłowego zrozumienia danej tematyki, sam dalszy rozwój jest ściśle uzależniony od naszej motywacji. Ja sam mam w planie stworzyć aplikację mobilną opartą na Angularze, po rozmowie z prowadzącym dowiedziałem się, że to bardzo wydajne i funkcjonalne rozwiązanie dla aplikacji (jeden kod = wiele platform).

5. Podsumowanie

Osobiście jestem bardzo zadowolony z uczestnictwa w kursie Angular2Space i myślę, że nie tylko ja podzielam taką opinię. Prowadzący naprawdę wykazał się sporą wiedzą i doświadczeniem i cierpliwością w niektórych programistycznych „błędach i błędzikach”. Kurs mogę polecić wszystkim developerom na różnym poziomie znajomości JavaScriptu/Angulara. Kurs zakończył się zdobyciem certyfikatu uczestnictwa w szkoleniu i pamiątkowym zdjęciem.

Zapraszam na stronę kursu:

Angular2Space