Kurs Angulara - Czego obecnie brakuje?

1

Hej, razem ze znajomym tworzę kurs Angulara. Chcemy pomóc tym, którzy potrzebują zapoznać się z praktycznymi technikami w pracy z Angularem lub chcą być bardziej efektywni w obecnej pracy. Chcemy również pomóc tym, którzy dopiero szukają pracy jako programista / programistka Angulara. Stawiamy na praktykę i własne doświadczenie. Pracujemy z Angularem od samego początku jego powstania. W pracy czynnie bierzemy udział w procesie rekrutacji i weryfikacji technicznej kandydatów na każdym poziomie zaawansowania. Z doświadczenia wiemy jakie problemy mają ludzie ze zrozumieniem tego frameworku i jaka wiedza rzeczywiście jest istotna, aby być skutecznym w pracy z Angularem.
Pytanie do Was: czego według Was brakuje w kursach, które już istnieją? Co chcielibyście dostać więcej w takim kursie? Czy widzicie wartość w takich dodatkach jak opieka mentora, wspólne code review projektów, pomoc w przygotowaniu się do rozmowy rekrutacyjnej?

0

Bardziej pytanie do was, dla jakiej grupy docelowej ma być ten kurs, dla ludzi którzy zaczynają swoją drogę czy dla osób z doświadczeniem w angularze? Ten kurs ma być darmowy/płatny?

3

Jeśli mam płacić za kurs to ma mi dawać coś więcej niż sam mogę sobie to znaleźć w internecie i na pewno od osoby którą uznaje za "guru" w tej dziedzinie. Nie będę chciał płacić komuś kto mi mówi że coś umie, bez zaprezentowania swojej wiedzy na konferencjach(np. GeeCon) czy blogu(https://vladmihalcea.com/) jak chcesz mnie przekonać że naprawdę jesteś ekspertem w swojej dziedzinie?
Oczekuje podzielenia się doświadczeniem. Co do metoringu, jak to ma wyglądać (programowanie w parach, code review)?
Dlaczego mam zapłacić Wam zamiast kupić kurs na Udemy czy pluralsight czym się chcecie wyróżnić?

1

Mam podobnie, poza tym mam wrażenie, że wszelkiego rodzaju kursy i szkolenia to tylko networking - jak jest już coś przedstawiane, to na zbyt ogólnym poziomie, aby było to dla mnie wartością dodaną - chociaż mam wrażenie, że dla osób, które nie interesują się programowaniem tak bardzo i się nie dokształcają takie szkolenia mogą być jedynym źródłem 'nowinek' i 'best practices'.

0

Jeśli mam płacić za kurs to ma mi dawać coś więcej niż sam mogę sobie to znaleźć w internecie i na pewno od osoby którą uznaje za "guru" w tej dziedzinie. Nie będę chciał płacić komuś kto mi mówi że coś umie, bez zaprezentowania swojej wiedzy na konferencjach(np. GeeCon) czy blogu(https://vladmihalcea.com/) jak chcesz mnie przekonać że naprawdę jesteś ekspertem w swojej dziedzinie?

Przekonywać nikogo nie chcę. Chcę zapytać ludzi czego potrzebują, czego nie ma w obecnych kursach, a co byłoby dla nich wartościowe. Na pewno nie będziemy chcieli tego sprzedawać w ciemno. Na pewno damy możliwość pełnego zwrotu pieniędzy, jeśli komuś np nie spodoba się kurs, a zgłosi to w określonym czasie np. 14 lub 30 dni. Nie chcemy sprzedawać kota w worku i nie chcemy niezadowolonych klientów. Jeśli ktoś będzie nie zainteresowany, nie będzie mu się podobała merytoryka, nie będzie się mu podobała nasza twarz czy ton głosu, to nie. Oddamy pieniądze i pożegnamy się w pozytywnej atmosferze.

Osoby, które będą zaangażowane w kurs mają doświadczenie konferencyjne na największych konferencjach w Polsce., Będą to osoby z około 10-cio letnim doświadczeniem w największych firmach globalnych: Nokia, Eurobank, Credit Suisse, UBS czy BNY. Oczywiście każdy przed kupnem będzie mógł sobie sprawdzić i stwierdzić, że chce się uczyć od takiej osoby. Będziemy stawiać na transparentność, ale to w momencie kiedy będziemy chcieli sprzedać nasz produkt. Na razie chcemy stworzyć coś co będzie wartościowe i coś co odpowiada na potrzeby rynku.

Oczekuje podzielenia się doświadczeniem. Co do metoringu, jak to ma wyglądać (programowanie w parach, code review)?

To właśnie ja pytam ludzi, co dla nich byłoby wartością. Wiadomo, że programowanie w parach to już duży koszt i może być nieosiągalne. To wszystko jest w momencie badania możliwości i zainteresowania.

Dlaczego mam zapłacić Wam zamiast kupić kurs na Udemy czy pluralsight czym się chcecie wyróżnić?

Stworzyć aspekt "networkingowy". Wspólną grupę kursantów, która będzie żyła. Na bieżąco dawać kursantom zadania domowe i dawać informację zwrotną na temat jego wykonania bądź podejścia do tego.
Na Udemy są wartościowe kursy, ale do tej pory nie znalazłem niczego, co odzwierciedlałoby rzeczywistą pracę. Zwykle to omówienie elementów języka/biblioteki/frameworka. My możemy podzielić się prawdziwą praktyką i rzeczywistymi sytuacjami lub problemami w pracy. Na Udemy jest dużo bardzo dobrych kursów na tzw entry level, ale brak dobrze omówionych zagadnień bardziej zaawansowanych.
Co do Pluralsight'a mam podzielone opinie. Zrobiłem tam wiele kursów i do tej pory nie natknąłem się na nic co z czystym sumieniem mógłbym polecić.

2

Bądźcie innowacyjni i jako pierwsi stwórzcie długi kurs na którym buduje się dużą apkę biznesową od podstaw, wykorzystując wszystkie zaawansowane techniki, a nie tylko skąpe liźnięcie tematu, na poziomie niższym niż jest w docsach.
Bo jak to ma być kolejny crud/todo list, to taki kurs sobie można wsadzić w buty.

Równie dobrze można zostać kolejnym producentem zapałek i wmawiać ludziom, żeby kupowali tylko nasze zapałki, mimo że są droższe, a na rynku są inne, porównywalnej jakości i rozdają je na dodatek za darmo...

0

Bo jak to ma być kolejny crud/todo list, to taki kurs sobie można wsadzić w buty.
Bardzo często duże apki biznesowe to crudy ;)

Równie dobrze można zostać kolejnym producentem zapałek i wmawiać ludziom, żeby kupowali tylko nasze zapałki, mimo że są droższe, a na rynku są inne, porównywalnej jakości i rozdają je na dodatek za darmo...

Głównie o to chodzi, aby nic nie wmawiać nikomu. Chcemy stworzyć kurs, który będzie dawał wartość. Na pewno nie powiemy, że nasz kurs jest najlepszy, a inne są złe. To nie prawda, zawsze będą i będą powstawać nowe kursy, które będą dawać wartość mniejszą lub większą. Ważne natomiast, aby nasz kurs także dawał dużą wartość i był warty swojej ceny. Jeśli nie będzie warty, to nikt go nie kupi albo kupią i zwrócą. Nie o to chodzi.

Mamy dobre intencje stworzenia czegoś dobrego. W swojej karierze pomogłem wielu osobom. Często te osoby przerobiły bardzo dużo kursów z Udemy czy Plurasight, a mimo to pierwszy raz spotykały się z rzeczywistymi problemami w trakcie projektu.

0

to ma być kurs płatny? jeśli tak, to przynajmniej duże zniżki zaproponuj tym co Ci pomogą przygotować zakres kursu, odpowiadając tutaj na pytanie "co ma byc na kursie"

3

Pomysł z większą aplikacja byłby super. Dobrze byłoby, gdybyście podczas tworzenia takiej aplikacji wykorzystali o omówili:

  • Ngrx - jak z niego korzystać, zwłaszcza gdy będzie kilka propertiesów które wpływają na ogólny stan aplikacji. Co powinno się w nim znaleźć itd. Ostatnio myślałem, czy dobrą praktyką byłoby wyniesienie stanu kontenera do store, żeby móc w łatwy sposób korzystać np. z Resolverów. Różnice i jak korzystać z forRoot i forFeature (tworzenie reducera z createReducer()). Dzielenie stanu aplikacji (oraz komunikacja), w przypadku gdyby wymagane było otwarcie nowego okna.
  • Modularyzację projektu
  • Providers (InjectionToken i property 'provide' np. APP_INITIALIZER) - kiedyś długo szukałem rozwiązania, jak można obsłużyć refresh w przeglądarce, który gubił mi stan w komponentach. Dopiero poprawnym rozwiązaniem (według mnie) było skorzystanie właśnie z APP_INITIALIZER.
  • Subskrybowanie w template, mam na myśli async pipe wraz z tworzeniem html variable - tutaj też dobre praktyki by się przydały
  • Architecture design, wzorce projektowe oraz wszystko co pozwoli na łatwiejszy rozwój oraz utrzymanie aplikacji, wszystko związane z clean codem.
  • Rxjs i najczęściej używane operatory (w tym takie, które można użyć np do łączenia HTTP requestów: wszystkie naraz, wysyłanie jeden po drugim w requescie dołączając rezultat z poprzedniego, też można np. map do tego dołączyć)
  • Strukturyzację projektu
  • Optymalizacja (changeDetection, ,trackBy, duży zestaw danych z dużą ilością atrybutów)
  • Routing w angularze - uważam, że trochę mu brakuje, np. dodawanie klas do renderowanych komponentów.
  • I jeszcze przede wszystkim: kurs up to date :D Z wsparciem przez "jakiś czas", w którym byłby update'owany jeśli coś się zmieni.

Sporo pewnie można byłoby omówić ale na razie nic więcej mi do głowy nie przychodzi.

1

-Ngrx - jak z niego korzystać, zwłaszcza gdy będzie kilka propertiesów które wpływają na ogólny stan aplikacji. Co powinno się w nim znaleźć itd. Ostatnio myślałem, czy dobrą praktyką byłoby wyniesienie stanu kontenera do store, żeby móc w łatwy sposób korzystać np. z Resolverów. Różnice i jak korzystać z forRoot i forFeature (tworzenie reducera z createReducer()). Dzielenie stanu aplikacji (oraz komunikacja), w przypadku gdyby wymagane było otwarcie nowego okna.

  • Wiele osób nam mówi, że chciałoby coś z NgRX'a. Ten temat jest zwykle traktowany po macoszemu. Nigdzie nie ma przedstawionych dużych aplikacji jako przykład. Sam temat odnośnie dzielenia odpowiedzialności akcji, reducerów czy efektów to obszerne zagadnienie, które wg różnych praktyk okazuje się nieskalowalne w większych projektach.
  • Providers (InjectionToken i property 'provide' np. APP_INITIALIZER) - kiedyś długo szukałem rozwiązania, jak można obsłużyć refresh w przeglądarce, który gubił mi stan w komponentach. Dopiero poprawnym rozwiązaniem (według mnie) było skorzystanie właśnie z APP_INITIALIZER.
  • Wspomniany przez Ciebie APP_INITIALIZER jest doskonałym przykładem jak zaimplementować konfiguracje projektu niezależną w build-time'ie. IIMHO, niezbędna funkcjonalność, a nigdzie w kursach o tym nie ma. Co więcej, wszystkie kursy pokazują, jak konfigurować projekt za pomocą environments.ts, a to jest bzdura.
  • Rxjs i najczęściej używane operatory (w tym takie, które można użyć np do łączenia HTTP requestów: wszystkie naraz, wysyłanie jeden po drugim w requescie dołączając rezultat z poprzedniego, też można np. map do tego dołączyć)

To jest rzecz, którą na pewno będziemy chcieli skrupulatnie przerobić. Nie ma obecnie dobrnych materiałów o tym jak wykorzystać RxJs w praktycznych biznesowych apkach Angularowych. Od pewnego czasu piszemy w pracy aplikacje do bólu reaktywne bez zbędnego trzymania stanu w komponentach itp. Także nie znalazłem dobrych szkoleń online na ten temat.

  • I jeszcze przede wszystkim: kurs up to date :D Z wsparciem przez "jakiś czas", w którym byłby update'owany jeśli coś się zmieni.

Planujemy trzymać kurs up to date i wprowadzać nawet nowe moduły z biegiem czasu.

Bardzo Ci dziękuję za wiele wartościowych sugestii!

1

przede wszystkim żebym polecil komukolwiek taki kurs musialbym wiedziec w czym jest lepszy od kursu ktory kupilo ponad 50k osob i zbiera swietne opinie https://ultimatecourses.com/

2
Aisekai napisał(a):

Pomysł z większą aplikacja byłby super. Dobrze byłoby, gdybyście podczas tworzenia takiej aplikacji wykorzystali o omówili:

  • Ngrx - jak z niego korzystać, zwłaszcza gdy będzie kilka propertiesów które wpływają na ogólny stan aplikacji. Co powinno się w nim znaleźć itd. Ostatnio myślałem, czy dobrą praktyką byłoby wyniesienie stanu kontenera do store, żeby móc w łatwy sposób korzystać np. z Resolverów. Różnice i jak korzystać z forRoot i forFeature (tworzenie reducera z createReducer()). Dzielenie stanu aplikacji (oraz komunikacja), w przypadku gdyby wymagane było otwarcie nowego okna.
  • Modularyzację projektu
  • Providers (InjectionToken i property 'provide' np. APP_INITIALIZER) - kiedyś długo szukałem rozwiązania, jak można obsłużyć refresh w przeglądarce, który gubił mi stan w komponentach. Dopiero poprawnym rozwiązaniem (według mnie) było skorzystanie właśnie z APP_INITIALIZER.
  • Subskrybowanie w template, mam na myśli async pipe wraz z tworzeniem html variable - tutaj też dobre praktyki by się przydały
  • Architecture design, wzorce projektowe oraz wszystko co pozwoli na łatwiejszy rozwój oraz utrzymanie aplikacji, wszystko związane z clean codem.
  • Rxjs i najczęściej używane operatory (w tym takie, które można użyć np do łączenia HTTP requestów: wszystkie naraz, wysyłanie jeden po drugim w requescie dołączając rezultat z poprzedniego, też można np. map do tego dołączyć)
  • Strukturyzację projektu
  • Optymalizacja (changeDetection, ,trackBy, duży zestaw danych z dużą ilością atrybutów)
  • Routing w angularze - uważam, że trochę mu brakuje, np. dodawanie klas do renderowanych komponentów.
  • I jeszcze przede wszystkim: kurs up to date :D Z wsparciem przez "jakiś czas", w którym byłby update'owany jeśli coś się zmieni.

Sporo pewnie można byłoby omówić ale na razie nic więcej mi do głowy nie przychodzi.

Podczas pisania większej aplikacji ja bym osobiście dodał jeszcze następujące rzeczy:

  1. autentykacja i odświeżanie tokenów
  2. testy na poszczególnych etapach kodowania
  3. wykorzystanie określonych kontrolek UI (angular materials, primeNg czy devextreme)
  4. obsługa dużej ilości danych (pageowanie) w tabelach albo wykorzystanie virtual scroll z angular cdk
  5. tworzenie rest api dla bardziej złożonych zasobów i obsługa komend
  6. aktualizacja danych za pomocą Web socketow w połączeniu z NgRx
  7. w jaki sposób zrobić upload wielu plików w mocno zagnieżdżonym formularzu edycji (kolekcja elementów, każdy element kolekcji może mieć wczytanych wiele plików, zapis idzie dopiero po kliknięciu przycisku zapisz), jak stworzyć prawidłowo taki request zapisu i pokazywać dodatkowo podglad wczytanych plików
  8. techniki optymalizacji, cacheowania
  9. w jaki sposób resetować stan aplikacji po wyjściu z określonego modułu (wymazać dane i inne informacje ale zachować np filtry w tabelkach) - żeby było ciekawie to są lazyModules wczytywane dopiero po wejściu na określony route
  10. jak się zabezpieczyć przed modyfikacja strumieni wykorzystywanych w wielu komponentach gdy są one przekazywane do komponentów jako inputy (np jak w komponencie podłączysz się do zmiennej przez [(ngModel)] i z tego miejsca będziesz modyfikował dane z innego komponentach nie jest tym czego byśmy chcieli)

To tak na szybko problemy z którymi musiałem się mierzyć i nigdzie nie znalazłem na nie bezpośrednich odpowiedzi. Mam nadzieje ze to pomoże :)

Pozdrowki!

0

Co do dużych aplikacji, to przydałyby się też porady na temat tego, w jaki sposób czytać kod zastany, albo jakie narzędzia mogą nam w tym pomóc (np. narzędzia do wyświetlania zależności komponentów między sobą - jest coś takiego dla Angulara?), sposoby debugowania dużych aplikacji, optymalizacja wydajności, refaktoring itp

Bo jak się pisze dużą apkę w zespole, to oprócz trudności z frameworkiem dochodzą problemy z samym projektem i kodem zastanym.

Kiedyś jako junior trafiłem do projektu w Angularze 1.*, gdzie właśnie te problemy wszystkie wystąpiły. Nie dość, że zmaganie się z frameworkiem, to jeszcze cały ten narzut na wdrożenie się w projekt.

1

Jeszcze bym dorzucił:

  • testowanie (unit testy, może e2e), dobre praktyki z tym związane (co testować, jak testować itd) wraz z marble testing
  • Webpack, angular.json, najważniejsze propertiesy (np tworzenie "aliasów" dla długich importów, korzystając z path), zmiiana domyślnych konfiguracji generowanych plików: css-> scss, dodawanie np. detectionStrategy.OnPush do nowo wygenerowanych komponentów)
  • Podstawowe selektory (Components, Pipe, Directive ale bardziej z naciskiem na mniej spotykane propertiesy takie jak host w Komponentach)
  • Uzupełniając to co Luke napisał, dodałbym jeszcze wszelkiego rodzaju devtoolsy, pluginy itd ułatwiające tworzenie aplikacji, zarówno te w przeglądarkach jak i w środowisku np intellij. Podpinanie intellijeja czy inne środowisko do przeglądarki w celu debugowania
  • Tworzenie własnych reaktywnych komponentów (dających się powiązać z formControl).

1 użytkowników online, w tym zalogowanych: 0, gości: 1