Jak zostać programistą iOS — The Ultimate Guide (2024)

programista iOS

W tym artykule omówimy, czego naszym zdaniem potrzeba, aby zostać programistą iOS. 

Kierujemy ten przewodnik bezpośrednio do dwóch grup ludzi:

  • Absolutni nowicjusze w Swift (Swift to język używany do kodowania aplikacji na iOS) – ludzie, którzy nigdy wcześniej nie tworzyli niczego na iOS.
  • Oraz ludzie, którzy już wcześniej próbowali nauczyć się Swifta, ale nigdy tak naprawdę nie osiągnęli celu, jakim była praca na pełny etat.

Uważaćless Twojego obecnego poziomu, cel jest taki sam. Aby umożliwić Ci ubieganie się o stanowisko młodszego programisty iOS w firmie.

Przyjrzymy się umiejętnościom, których powinieneś się uczyć, kursom, w których możesz uczestniczyć, sposobom nawiązania kontaktu ze społecznością, typowym błędom popełnianym przez ludzi i nie tylko. 

A co najważniejsze, wszystko, co omówimy, będzie całkowicie bezpłatne.

Poważnie, zbyt wiele osób uważa, że ​​wydawanie dużych pieniędzy sprawi, że staną na ścieżce do wymarzonej pracy, gdy najważniejszymi czynnikami są determinacja i siła woli.

Ten artykuł jest podzielony na siedem sekcji:

  1. Podstawowe umiejętności, które musisz posiadać, aby dostać pracę.
  2. Umiejętności, które miło mieć, wyróżniają Cię z tłumu
  3. Typowe błędy, które ludzie popełniają, próbując się uczyć.
  4. Wiele bezpłatnych zasobów, które pomogą Ci nauczyć się języka Swift.
  5. Jak skontaktować się ze społecznością programistów iOS.
  6. Szacunkowy czas potrzebny na osiągnięcie celu.
  7. Przygotowanie do ubiegania się o pierwszą pracę.

Przeczytaj cały wpis lub przejdź od razu do informacji, których szukasz, to zależy wyłącznie od Ciebie!

Podstawowe umiejętności wymagane do zostania programistą iOS

Kim jest programista iOS?

Programista iOS pracuje nad aplikacjami dla Apple asortyment telefonów. iOS jest przeznaczony specjalnie dla iPhone'a i będziesz głównie pracować z grami i aplikacjami dla tego telefonu.

Możesz być zaangażowany w:

  • Projektowanie i planowanie aplikacji
  • Pisanie kodu i tworzenie aplikacji
  • Wykonywanie konserwacji aplikacji lub serwerów aplikacji
  • Identyfikowanie problemów i ich rozwiązywanie
  • Opracowywanie aktualizacji i ulepszeń
  • Praca z zespołami w całym cyklu życia aplikacji

Nawet jeśli specjalizujesz się w jednym konkretnym produkcie, przeciętny dzień wiąże się z wieloma zadaniami.

Podzielmy te pięć elementów na mniejsze części.

Podstawowe umiejętności wymagane, aby zostać programistą iOS

Jakie jest absolutne minimum umiejętności wymaganych do znalezienia pracy w programowaniu iOS? 

Uważamy, że jako programista iOS będziesz potrzebować pięciu podstawowych umiejętności:

  1. Szybkie programowanie
  2. SwiftUI 
  3. Sieci
  4. Praca z danymi
  5. Zarządzanie wersjami

Podzielmy te pięć elementów na mniejsze części.

1. Nauka Swifta

Szybki jest pierwszy na liście. To jest Applepodstawowy język programowania. Nie ma koncepcji wyświetlania informacji na ekranie iPhone'a ani pobierania danych z Internetu. 

Jest to po prostu język taki jak JavaScript czy Python. To po prostu czysty kod, którego używasz do tworzenia zmiennych, pisania funkcji i tak dalej.

Swift ma zaledwie kilka lat i wykorzystuje prawie każdą dostępną najnowocześniejszą funkcję. 

Oznacza to, że możesz uniknąć wszystkich starych zachowań, które są powszechne w starszych językach, takich jak C++ i Java.

Oznacza to również, że ma mnóstwo zaawansowanych funkcji, z których możesz skorzystać.

2. Szybki interfejs użytkownika

Drugą wymaganą umiejętnością podstawową jest SwiftUI. To jest Apple framework, który pozwala nam używać Swift do tworzenia aplikacji na iOS, macOS, tvOS, a nawet watchOS. 

Tam, gdzie Swift jest językiem programowania, SwiftUI zapewnia narzędzia programiści do tworzenia aplikacji.

Żeby było jasne, SwiftUI nie zastępuje Swifta – to framework zbudowany na Swiftie, który pozwala nam tworzyć aplikacje.

Aby odnieść sukces, musisz znać zarówno Swift, jak i SwiftUI.

SwiftUI to dość młody framework, po raz pierwszy pojawił się w 2014 roku i został opracowany w celu zastąpienia archaicznego Objective C.

Pomimo młodego wieku społeczność iOS przyjęła go całym sercem, ponieważ jest tak łatwy w użyciu.

Apple ma również starszą platformę do tworzenia aplikacji na iOS o nazwie UIKit. Jeśli zapytasz grupę osób, czy powinieneś najpierw nauczyć się SwiftUI czy UIKit, otrzymasz wiele odpowiedzi. 

Uważamy, że powinieneś nauczyć się SwiftUI i oto powód, dla którego powinieneś nadać SwiftUI priorytet jako podstawową umiejętność.

SwiftUI jest znacznie łatwiejszy niż UIKit, a osiągnięcie takich samych wyników jak UIKit zajmuje około jednej czwartej kodu, a po drodze jest mniej rzeczy do nauczenia się. 

Oznacza to, że zyskujesz dużą dynamikę, ponieważ możesz szybciej budować rzeczy, szybciej widzieć wyniki i iterować na podstawie tych wyników z większą elastycznością.

Stworzony dla Swift

Stworzony dla Swift

SwiftUI został stworzony dla Swift, wykorzystując funkcje językowe, aby pomóc w unikaniu problemów i osiąganiu maksymalnej wydajności. 

Na przykład, jeśli zmienisz niektóre dane na jednym ekranie aplikacji, SwiftUI automatycznie zadba o to, aby nowe dane zostały zaktualizowane w dowolnym innym miejscu aplikacji, która z nich korzysta.

Nie musisz pisać kodu, aby samodzielnie wszystko zsynchronizować, co jest zazwyczaj dość skomplikowane. 

UIKit został napisany dla Applestarszy język, Objective-C. W rezultacie posiada wszelkiego rodzaju dziwactwa wynikające z jego wieku.

SwiftUI jest kompatybilny ze wszystkimi Apple, dzięki czemu możesz wykorzystać to, czego nauczyłeś się na iOS, do stworzenia aplikacji macOS lub watchOS z prawie identycznym kodem. 

Oczywiście funkcje takie jak Digital Crown są dostępne wyłącznie dla jednego urządzenia, tj Apple Oglądaj, ale zdecydowana większość tego, czego się nauczysz, będzie działać na dowolnym urządzeniu.

Co najważniejsze, SwiftUI to kierunek, w jakim wszystko zmierza. 

Jeśli kilka lat temu ubiegałeś się o pracę, prawdopodobnie musiałbyś znać UIKit. Fakt, że to czytasz, oznacza, że ​​jesteś znacznie dalej w tym procesie. 

Chociaż UIKit był kiedyś bardziej popularny, SwiftUI jest obecnie dominującym frameworkiem interfejsu użytkownika.

Największe światowe firmy, m.in Apple sami idą teraz naprzód dzięki SwiftUI.

Kiedy Apple niedawno uruchomiono widżety w iOS 14, wymagały korzystania z SwiftUI.

Praca w sieci i manipulacja danymi

Trzecią i czwartą umiejętnością, o której wspomnieliśmy, były networking i manipulacja danymi. W porównaniu do Swift i SwiftUI są one dość proste lub przynajmniej proste na poziomie wymaganym do zdobycia pracy jako młodszy programista iOS.

Sieć to praktyka pobierania danych z Internetu lub wysyłania danych z lokalnego urządzenia do zdalnego serwera.

W aplikacji mobilnej jest to podstawowa umiejętność.

Istnieje wiele metod, aby to osiągnąć, ale najważniejszą rzeczą do zrozumienia jest to, jak pobrać JSON z serwera.

I tu właśnie pojawia się kolejna istotna umiejętność, czyli praca z danymi. 

Ponownie istnieje wiele sposobów ładowania i zapisywania danych. Absolutne minimum, które musisz umieć, to konwersja danych otrzymanych z serwera na informacje, które może wyświetlić Twoja aplikacja.

Zatem trzecia i czwarta umiejętność podstawowa są ze sobą nierozerwalnie powiązane.

Pobierz dane z serwera, a następnie przekonwertuj je na informacje, które można wyświetlić w aplikacji.

Niektórzy programiści żartują, że pisanie tego typu kodu to połowa pracy programisty iOS i z pewnością jest prawdą, że w dużym stopniu na tym polegamy.

Version control

Ostatnia umiejętność wcale nie jest kodowaniem, to version control, takich jak Git. Ponownie, nie potrzebujesz tutaj wiele, ale ważne jest, aby móc opublikować swój kod w miejscu publicznym, takim jak GitHub, aby rekruterzy mogli zobaczyć Twoją pracę.

Niewiele osób na świecie naprawdę rozumie, jak działa Git, ale nie ma w tym nic złego – wystarczy znać wystarczające podstawy, aby bezpiecznie przechowywać swoje dane i współpracować z innymi.

Tak więc, gdy te pięć są zsumowane, są dwa masywne – Swift i SwiftUI – a także trzy mniejsze, ale ważne. 

Jeśli potrafisz skupić się na tych pięciu rzeczach bez rozpraszania się, będziesz na dobrej drodze do swojej pierwszej pracy programisty iOS.

To wszystko: oto pięć podstawowych umiejętności, które moim zdaniem musisz posiadać, aby zostać programistą iOS!

Istnieją tysiące ludzi, którzy mają tylko te umiejętności i mogą tworzyć i dostarczać fantastyczne aplikacje w App Store.

Co następuje po podstawach?

Co następuje po podstawach?

Po opanowaniu pięciu podstawowych umiejętności będziesz mógł dostarczać własne aplikacje i pracować jako niezależny programista. Możesz także aplikować na stanowiska młodszych programistów iOS i pracować w firmie, jeśli tego właśnie chcesz. 

Nie są wymagane żadne inne specjalne kwalifikacje – po prostu zdobądź te podstawowe umiejętności i wszystko będzie dobrze.

Jeśli jednak opanujesz te umiejętności i chcesz się rozwijać, zalecamy nauczenie się jeszcze pięciu umiejętności.

Twoje szanse na zatrudnienie staną się jeszcze większe, a zakres aplikacji, które będziesz mógł tworzyć, poszerzy się jeszcze bardziej.

Zdolności są następujące:

  • UIKit 
  • Dane podstawowe 
  • Walidacja
  • Testowanie
  • Architektura oprogramowania
  • Wielowątkowość

Tak jak poprzednio, chcielibyśmy omówić każdą z nich bardziej szczegółowo, abyście zrozumieli, dlaczego uważamy je za ważne – i dlaczego uważamy je za umiejętności dodatkowe, a nie podstawowe.

UIKit

Po pierwsze, jest UIKit. Jest Applestarsza struktura interfejsu użytkownika, która jest używana do tworzenia aplikacji od 2008 r. – która jest stara pod względem oprogramowania.

Ale to nie znaczy, że UIKit jest zły. W rzeczywistości, gdy przyzwyczaisz się do tego, jak to działa, będziesz zaskoczony, jak elegancki może być.

Istnieje wiele powodów, dla których warto się uczyć UIKit, w tym:

W UIKit napisano już setki tysięcy aplikacji. Jeśli dołączysz do firmy, która ma dużą, ugruntowaną aplikację, prawie na pewno będziesz musiał napisać kod UIKit, aby ją utrzymać.

UIKit jest znacznie potężniejszy niż SwiftUI — jest wiele rzeczy, które możesz zrobić w UIKit, a które nie są obecnie możliwe w SwiftUI.

Korzystając z technologii Auto Layout, możesz tworzyć niezwykle precyzyjne układy.

Jeśli napotkasz problemy z kodem, UIKit ma więcej rozwiązań niż SwiftUI tylko dlatego, że istnieje od znacznie dłuższego czasu.

Wszystko to sprawia, że ​​UIKit brzmi fantastycznie, więc dlaczego uczyniłem go umiejętnością rozszerzającą, a nie podstawową? 

Ponieważ UIKit ma również problemy:

Prawie wszystko jest trudniejsze do zrobienia w UIKit niż w SwiftUI, a niektóre zadania wymagają setki razy, jeśli nie więcej, kodu. 

SwiftUI został zaprojektowany specjalnie z myślą o nowoczesnych programach iOS, więc wykonuje za Ciebie wiele ciężkich zadań.

Ponieważ UIKit nie został napisany w języku Swift, ma wiele funkcji, których nie ma SwiftUI — wiele niejawnie nieopakowanych opcji, oznaczanie kodu specjalnym atrybutem @objc, aby udostępnić go podbrzuszu Objective-C UIKit oraz konieczność korzystania z protokołów i delegatów do wyświetlania prostych danych.

Nic w Auto Layout nie jest automatyczne. Tak naprawdę, jeśli kiedykolwiek spróbujesz zbudować złożony układ, możesz mieć koszmary dotyczące automatycznego układu.

To niezwykle sprytne, ale miejscami niezwykle trudne.

Dlatego uważamy UIKit za umiejętność rozszerzającą. Nauka zajmuje znacznie więcej czasu i wysiłku niż SwiftUI, co oznacza, że ​​wymaga dużo większej determinacji.

Musisz naprawdę chcieć się tego nauczyć, bo inaczej będziesz zdezorientowany, znudzony, zły lub potencjalnie na wszystkie trzy sposoby!

Jasne, SwiftUI nie ma wszystkich funkcji UIKit, ale pozwala na szybki postęp i nabranie dynamiki przed przejściem do UIKit.

 

Zarządzanie podstawowymi danymi

Zarządzanie podstawowymi danymi

Dane podstawowe, AppleFramework do pracy z danymi aplikacji, to druga umiejętność rozszerzająca, o której wspomniałem. 

Core Data umożliwia bardzo efektywne manipulowanie danymi po ich uzyskaniu, na przykład wyszukiwanie określonych wartości, sortowanie wyników i nie tylko. 

Może także łatwo połączyć się z iCloud, zapewniając synchronizację danych użytkowników na wszystkich ich urządzeniach.

Core Data ma mnóstwo wad. Najpoważniejszą z nich jest to, że praca z nią nie zawsze jest przyjemna.

Core Data jest prawie tak stary jak UIKit i chociaż działał dobrze w Objective-C, w Swift nie wydaje się tak naturalny. 

Dobrze integruje się z SwiftUI, dzięki czemu czuje się less dziwne, ale to wciąż zaskakująco złożony temat.

Podobnie jak UIKit, Core Data jest niezwykle popularny – zbudowano z nim setki tysięcy aplikacji i jest używany w wielu dużych i małych firmach. 

Podstawowe dane, takie jak UIKit, są niezwykle potężne i chociaż możesz odtworzyć najważniejsze ich części we własnym kodzie, dlaczego miałbyś to robić?

Testowanie kodu

Trzecią umiejętnością na mojej liście rozszerzeń jest testowanie. Pisanie specjalnego kodu, aby upewnić się, że główny kod aplikacji działa zgodnie z oczekiwaniami. 

Testy pozwalają nam upewnić się, że nasz kod działa poprawnie, a co ważniejsze, że nadal działa poprawnie nawet po wprowadzeniu przez nas znaczących zmian.

Testowanie ma kluczowe znaczenie i pomoże Ci w pisaniu oprogramowania wyższej jakości. Dlaczego więc uważa się ją za umiejętność rozszerzającą, a nie podstawową? 

Istnieją trzy przyczyny:

Społeczność iOS jest okropna w testowaniu, z jakichkolwiek powodów historycznych. Wiele dużych aplikacji nie ma w ogóle testów i, niestety, wielu starszych programistów iOS jest niemal dumnych, że nigdy nie piszą testów. 

Kiedy weźmiesz pod uwagę wszystkie niesamowite rzeczy, z których możesz stworzyć AppleW porównaniu z narzędziami i frameworkami pisanie testów nie wydaje się zbyt zabawne. 

Ubiegając się o pracę, znając Swifta i AppleGłówne frameworki zawsze będą bardziej przydatne niż umiejętność pisania testów. 

Firmy wolałyby, żebyś wiedział, jak korzystać z SwiftUI, UIKit lub jednego z innych wielkich hitów, ponieważ testowanie to znacznie mniejszy temat.

Zatem testowanie jest ważne, testowanie ma znaczenie, a jeśli chcesz być świetnym programistą, musisz nauczyć się pisać świetne testy.

Ale dopiero po opanowaniu podstaw tworzenia aplikacji – po osiągnięciu pewnego sukcesu, poczuciu przypływu emocji związanej z publikacją aplikacji w App Store i opanowaniu testowania.

Architektura oprogramowania

Architektura oprogramowania

Czwartą umiejętnością rozszerzającą, którą chcielibyśmy omówić, jest architektura oprogramowania, która dotyczy sposobu pisania kodu. 

Kiedy zaczynasz, napiszesz okropny kod. 

To dobrze, bo tak się uczysz. Nie zaczynasz dobrze – stajesz się dobry, będąc złym przez długi czas i ucząc się lepszych sposobów robienia rzeczy dzięki doświadczeniu i ekspozycji.

Rzecz w tym, że trzymasz się złego kodu, dopóki nie wymyślisz, jak zrobić to lepiej. Tutaj właśnie pojawia się architektura oprogramowania.

Przyjrzyjmy się wypróbowanym i prawdziwym technikom tworzenia struktury kodu, aby ułatwić jego czytanie, używanie, modyfikowanie i utrzymywanie w dłuższej perspektywie. 

Techniki te czasami opierają się na sposobie działania Swift – funkcjach językowych, które można wykorzystać do napisania lepszego kodu. 

Istnieje jednak wiele innych technik, które działają w dowolnym języku programowania i są powszechnie określane jako wzorce projektowe.

Jednym z ważnych aspektów tej umiejętności, którego powinieneś zacząć się uczyć, jest rozbijanie kodu. 

Na przykład, jeśli tworzysz pojedynczy ekran w swojej aplikacji, może on zawierać przycisk logowania, galerię obrazów i listę znajomych. 

Jednak najlepiej jest oddzielić każdą z tych części — składnik przycisku logowania, składnik galerii obrazów i składnik listy znajomych — aby móc ponownie wykorzystać dowolny z tych składników w innych częściach aplikacji.

Architektura oprogramowania jest znacznie bardziej subiektywna niż inne umiejętności, które omówiliśmy do tej pory. W przypadku innych, takich jak SwiftUI, możesz rozumować: „Cóż, wiem, jak zrobić X, Y i Z, więc jestem pewien, że jestem dobrym programistą SwiftUI”.

Architektura oprogramowania to bardzo szeroki temat i często nie ma oczywistego „właściwego” sposobu rozwiązania problemu.

Najlepszym punktem odniesienia jest to: czy spoglądasz wstecz na swój kod sprzed sześciu miesięcy, rok temu i tak dalej.

Pisanie złego kodu jest akceptowalne, jeśli przybliża cię do napisania lepszego kodu. 

Z pewnością będziesz się czasem drapał po głowie, gdy spojrzysz wstecz na kod, który napisałeś pięć lat temu, ponieważ teraz będziesz wiedział więcej niż wtedy.

Tak to powinno byc.

Wielowątkowość

Ostatnią umiejętnością rozszerzenia, którą omówimy, jest wielowątkowość. Jest to praktyka polegająca na zmuszaniu kodu do wykonywania więcej niż jednej rzeczy na raz. 

Wielowątkowość może być naprawdę uciążliwa, ponieważ nasz mózg nie jest w stanie jej zrozumieć.

Kiedy Twój kod wykonuje jedną rzecz na raz, możemy przemyśleć to liniowo, ale gdy dwie lub trzy rzeczy dzieją się w tym samym czasie, potencjalnie nakładając się, może to naprawdę zepsuć Twoje myślenie.

Tak więc, choć wielowątkowość to świetna umiejętność, należy zachować ostrożność. Twoim celem powinno być zrozumienie wystarczającej ilości koncepcji i kodu, aby działał dobrze, bez posuwania się za daleko. 

Szczerze mówiąc, wielu programistów wierzy, że wielowątkowość natychmiast sprawi, że ich kod będzie działał trzy lub cztery razy szybciej. 

Chociaż w niektórych przypadkach jest to prawdą, w wielu innych przypadkach Twój kod będzie działał wolniej i będziesz musiał poradzić sobie z całą dodatkową złożonością kodu.

„Moim szczególnym zaleceniem jest unikanie pisania kodu asynchronicznego/współbieżnego tak bardzo, jak to możliwe. Może się to wydawać dziwne w 2018 roku, ale koszt złożoności i wydajności jest wysoki.

Dowiedz się więc trochę o tym, jak działa wielowątkowość w Swift, aby pokazać, że rozumiesz koncepcje i implementację, ale nie przesadzaj!”

Dawid Kowalski - Apple Zespół SwiftUI

Typowe błędy popełniane przez nowych programistów iOS

Typowe błędy popełniane przez nowych programistów iOS

W tym momencie wymieniliśmy wszystkie umiejętności podstawowe i dodatkowe, których będziesz potrzebować, aby pracować jako pełnoetatowy programista iOS. 

Chcielibyśmy również omówić niektóre z najczęstszych błędów popełnianych przez ludzi podczas nauki.

Błędy Widzę je cały czas i wiem, jak powodują u ludzi porażkę.

Istnieje siedem głównych problemów, z którymi borykają się ludzie. 

  1. Pamiętając wszystko
  2. Syndrom błyszczącego obiektu 
  3. Nauka samotnego wilka
  4. Korzystanie z oprogramowania beta
  5. W zależności od Apple'dokumentacja
  6. Grzęźnięcie w Objective-C
  7. Celowanie w inne języki

Przyjrzyjmy się każdemu z nich po kolei.

Przestań próbować wszystko zapamiętać

Przestań próbować wszystko zapamiętać

Pierwszym i zdecydowanie najczęstszym problemem, z jakim spotykają się ludzie, jest próba zapamiętania wszystkiego.

Nikt nie pamięta wszystkiego. Nikt nie jest w stanie pamiętać wszystkiego.

Nawet jeśli weźmiesz pod uwagę tylko interfejsy API opublikowane przez Apple, musi być ich grubo ponad sto tysięcy. 

Nawet jeśli ograniczysz to do podstawowych elementów tworzenia aplikacji, nadal będziesz mieć do czynienia z kilkoma setkami.

Wszystko działa w bardzo precyzyjny sposób, którego obsługa wymaga dużo nauki.

Zamiast tego naucz się robić coś nowego, a potem szybko zapomnij, jak to zrobić ponownie. 

Więc sprawdź to, użyj ponownie, a potem natychmiast o tym zapomnij.

Więc sprawdzasz to po raz trzeci i używasz, ale tym razem w większości o tym zapominasz – niektóre części zostają z tobą. 

Ten cykl trwa w nieskończoność, za każdym razem musisz odwoływać się do samouczka lub innego przewodnika, dopóki podstawy nie zostaną zakorzenione w twoim umyśle do punktu, w którym możesz to zrobić bez konsultacji z kimkolwiek innym.

Jeśli jeszcze tego nie wiedziałeś, zapominanie jest ważną częścią nauki.

Za każdym razem, gdy o czymś zapominasz i uczysz się tego na nowo, zapada to głębiej i głębiej w Twój mózg.

Kiedy uczysz się czegoś na nowo, Twój mózg tworzy nowe połączenia z innymi rzeczami, których się nauczyłeś, co pomaga Ci lepiej zrozumieć kontekst tego, co próbujesz zrobić. 

Jeśli spróbujesz zapamiętać wszystko, będziesz miał trudności.

Zamiast tego nie przejmuj się zapominaniem o rzeczach. Wiedza, gdzie je wyszukać, jest o wiele ważniejsza niż zapamiętywanie konkretnego kodu Swift, aby coś osiągnąć.

Unikaj syndromu błyszczących przedmiotów

Drugim najczęstszym problemem jest „syndrom błyszczącego przedmiotu”.

Tutaj znajdujemy samouczek, który działa i zaczynamy robić postępy. Ale po tygodniu lub dwóch zauważamy kolejną serię samouczków, którą chcemy śledzić i zamiast tego od razu do niej przechodzimy. 

Problem w tym, że wiele aspektów uczenia się jest nieciekawych. Niekoniecznie jest to wina nauczyciela. 

To tylko fakt uczenia się kodowania — niektóre rzeczy dają świetne wyniki przy niewielkim wysiłku, podczas gdy inne wymagają dużo więcej czasu na zrozumienie, nie dają wymyślnych wyników lub są tylko częścią większej koncepcji.

Kiedy osiągniesz te strome krzywe uczenia się, zaczyna się syndrom błyszczących obiektów.

Przy tak dużej liczbie dostępnych bezpłatnych samouczków możesz przeskoczyć do dowolnego z nich i uruchomić go ponownie, a wrócisz na płytki koniec basenu, wykonując łatwiejsze części, których już się nauczyłeś. 

Ale nieless oryginalny kurs wybrał nietypowy temat do omówienia, prawdopodobnie w końcu będziesz musiał się go nauczyć i po prostu opóźniasz to, co nieuniknione.

Należy pamiętać o syndromie błyszczących przedmiotów.

Kiedy napotkasz problem, spróbuj poprosić kogoś innego o pomoc i wytrwać, zamiast zmieniać się.

Nie idź sam

Nie idź sam

A skoro już mowa o pytaniu kogoś innego, trzecim problemem, z jakim spotykają się ludzie, jest to, że w procesie uczenia się popadają w samotność.

Wierzą, że są w stanie samodzielnie nauczyć się tworzyć aplikacje na iOS przy użyciu Swift i nie potrzebują żadnej pomocy.

Ta metoda działa w przypadku bardzo małej liczby osób, zazwyczaj tych z dużym doświadczeniem z innymi językami programowania lub platformami. 

Jednak dla większości ludzi nauka w ten sposób jest okropnym doświadczeniem.

Zauważenie i rozwiązanie każdego błędu lub nieporozumienia zajmuje pięć razy więcej czasu. Niezwykle łatwo jest stracić motywację i tracisz wiele inspiracji, obserwując, jak inni odnoszą sukcesy.

Jeśli jesteś naturalnym uczniem „samotnego wilka”, zachęcamy Cię do zmiany swojego postępowania. 

Dziel się tym, czego się uczysz, łącz się z innymi, którzy się uczą i rozwijaj nawyk zadawania pytań. 

Odkryjesz fantastyczną społeczność uczniów, którzy będą Cię wspierać i zachęcać. Ty także zainspirujesz się ich pracą, a oni z kolei zainspirują Cię swoją.

To całkowicie transformujące!

Nie używaj wersji beta

Czwartym głównym problemem jest to, że ludzie nalegają na używanie wersji beta Applenarzędzia programistyczne. 

Każdego roku, Apple wypuszcza nowy iOS, nowy macOS i inne produkty, zawsze dostarczając nam ekscytujących nowych rzeczy do wypróbowania.

To naturalne, że ludzie chcą uczyć się tego, co najnowsze i najlepsze, zwłaszcza jeśli wiedzą, że Swift ma długą historię zmian.

Jednak gdy ludzie próbują uczyć się za pomocą oprogramowania w wersji beta, napotykają szereg problemów:

Ponieważ samouczki nie zostały zaktualizowane do wersji beta, wykonanie ich instrukcji nie zawsze będzie możliwe lub zakończy się niepowodzeniem.

Błędy są powszechne w wersjach beta, zwłaszcza tych wydanych dla głównych aktualizacji iOS.

AppleStabilizacja frameworków beta wymaga czasu, co oznacza, że ​​kod, który działał w wersji beta 1, może nie działać w wersji beta 3.

Tak więc, chociaż uczenie się nowych rzeczy jest ekscytujące i możesz wierzyć, że dzięki nowym funkcjom wyprzedzasz konkurencję, zazwyczaj nie jest to tego warte. 

Zawsze używaj najnowszych publicznych wydań Applenarzędzia programistyczne , dopóki nie poczujesz się z nimi komfortowo.

Poleganie na oficjalnej dokumentacji

Poleganie na oficjalnej dokumentacji

Piątym głównym problemem, z którym borykają się ludzie próbujący się uczyć, jest poleganie na Appledokumentacji. 

AppleZespół ds. publikacji dla programistów ciężko pracuje, aby udokumentować jak najwięcej z szerokiej gamy frameworków firmy

Jednak ich głównym zadaniem jest pisanie materiałów referencyjnych – rzeczy, które czytasz, gdy próbujesz użyć konkretnego elementu ich narzędzi – zamiast tworzyć ustrukturyzowany kurs, który pomoże Ci nauczyć się tworzyć aplikacje na iOS.

Straciliśmy już rachubę, ile razy ludzie pytali: „Jak mogę nauczyć się Swifta?” tylko po to, by usłyszeć: „Przeczytaj Appleprzewodnik po Swift”. 

To podejście działa na niektórych ludzi. 

Jednak dla większości ludzi przypomina to naukę ludzkiego języka poprzez czytanie słownika.

Dokumenty mają na celu omówienie wszystkiego w języku, a nie nauczenie najważniejszych części i sposobu ich zastosowania.

Tak więc, jeśli masz duże doświadczenie z innymi językami, czytanie Appleprzewodniki referencyjne mogą być przydatne. Jeśli jednak dopiero zaczynasz, możesz chcieć wrócić do nich po kilku miesiącach.

Grzęźnięcie w Objective-C

Szóstym głównym problemem, przed którym stają ludzie, są próby nauczenia się języka Objective-C.

To było Applepodstawowy język programowania przed wprowadzeniem Swifta. Chociaż w niektórych starych bazach kodu znajdują się pozostałości, zdecydowana większość istniejącego kodu to obecnie Swift i prawie cały nowy kod również jest Swiftem.

Niektórzy ludzie spędzają lata na pisaniu Objective-C przed Swiftem i naprawdę to pokochali. Wymaga jednak niezwykle stromej nauki i brakuje mu większości ważnych funkcji Swifta. 

Kiedy Apple po raz pierwszy ogłosił zestaw SDK dla iPhone'a, wiele osób było przerażonych Objective-C, ponieważ nie przypominał niczego, co do tej pory widziało.

Objective-C i Swift nie mają prawie nic wspólnego dla początkującego. 

Tak, dzielą to samo Apple frameworki, ale unless planujesz pracować w Apple – jedyna firma na świecie, która wciąż produkuje duże ilości Objective-C – powinieneś zostawić Objective-C w spokoju i skoncentrować się całkowicie na Swifcie.

Ignorowanie innych języków

Ignorowanie innych języków

Ostatnim poważnym błędem popełnianym przez ludzi podczas nauki Swifta jest odrzucanie innych języków jako gorszych od Swifta. 

Najczęstszym celem jest JavaScript. Zobaczysz także, że ludzie celują w Python, Java, Ruby, Go i inne języki i po co?

To nie wyścig – te języki nie muszą przegrać, aby Swift wygrał. W rzeczywistości Swift i SwiftUI są często inspirowane innymi językami i frameworkami.

Ilekroć rozważane są nowe funkcje językowe, społeczność przygląda się podobnym implementacjom w Rust, Python, Haskell i innych językach, a SwiftUI jest pod silnym wpływem JavaScript React Ramy.

Zasoby i kursy dotyczące rozwoju iOS

Zasoby i kursy dotyczące rozwoju iOS

A teraz część, która interesuje większość ludzi. Z jakich zasobów powinieneś skorzystać, aby nauczyć się Swifta, SwiftUI i nie tylko – aby osiągnąć swój cel, jakim jest zostanie programistą iOS?

Jest ich wielu, a społeczność Swift ma tak zróżnicowaną grupę ludzi, którzy dzielą się swoją wiedzą. 

Jednak w tym artykule skupimy się na darmowych zasobach – miejscach, w których możesz nauczyć się tworzyć fantastyczne aplikacje bez wydawania ani grosza.

Wynika to z dwóch czynników:

  1. Niektórzy uważają, że im wyższa cena kursu Swift, tym musi on być lepszy.
  2. Wiele witryn, takich jak Udemy, polega na sprzedaży dużej liczby tanich kursów, mając pewność, że jeśli jeden Ci się nie spodoba, po prostu kupisz inny. Mają także model biznesowy podobny do Steama, polegający na stałej sprzedaży, zachęcającej ludzi do gromadzenia dużej liczby kursów, aby uczyć się „jednego dnia”.

Więc tutaj wymieniamy tylko darmowe zasoby, abyś nie wydawał stu dolarów lub więcej na swój pierwszy kurs i nie kupował tuzina tanich kursów myśląc, że zrobią z ciebie programistę.

Poradniki

Aby rozpocząć, Apple ma dwa główne zasoby, które mogą Ci pomóc. Pierwsza to jego Kod nauczania stronie internetowej.

Zawiera zasoby dla uczniów i nauczycieli umożliwiające naukę języka Swift od podstaw, aż do uzyskania certyfikatów zawodowych. 

Ich program nauczania jest obszerny, więc znalezienie najlepszego punktu startowego może zająć trochę czasu, ale kiedy już tam będziesz, znajdziesz wiele do odkrycia.

Po drugie, Apple ma serię Samouczki SwiftUI które przeprowadzą Cię przez proces tworzenia aplikacji w świecie rzeczywistym. Te jednak nie uczą języka Swift, więc musisz najpierw ukończyć program nauczania skupiający się na języku Swift.

YouTube i inne witryny

Jest kilka doskonałych Filmy z YouTube, które przeprowadzą Cię przez podstawy SwiftUI.

Istnieją inne witryny z wysokiej jakości samouczkami Swift i SwiftUI, w tym BLCKBIRDS, Ray Wenderlich, Donny Wals, Antoine van der Lee i nie tylko — naprawdę zachęcamy ludzi do odwiedzania różnych zasobów i znajdowania tego, co im odpowiada.

Edukacja oparta na aplikacjach

Jeśli wolisz uczyć się poprzez aplikacje, polecam taką, która jest całkowicie darmowa. AppleSzybkie place zabaw app.

Umożliwia naukę języka Swift bezpośrednio na iPadzie lub komputerze Mac. 

Jest wiele interaktywnych lessskierowane do dzieci, ale są też bardziej zaawansowane less, które pomogą Ci rozwinąć Twoje umiejętności.

Znajdowanie rozwiązań

Na koniec musisz się nauczyć, jak znajdować odpowiedzi online. Może to oznaczać przejście do Stack Overflow, ale mam nadzieję, że nie, ponieważ nie jest to szczególnie przyjemne miejsce.

Zamiast tego zadawaj pytania na forach Hacking with Swift, w swojej ulubionej grupie na Slacku, sesjach Happy Hour dla deweloperów iOS, na Twitterze/X i gdzie indziej – jesteśmy naprawdę ciepłą, przyjazną społecznością, w której znajduje się wiele osób chętnych do pomocy w osiągnięciu Twoich celów.

Angażowanie się w społeczność

Angażowanie się w społeczność

A skoro mowa o społeczności, chciałbym poruszyć bardzo ważny temat, który pomoże Ci poznać osoby na podobnych stanowiskach do Ciebie, efektywniej się uczyć i znaleźć oferty pracy.

To sytuacja, w której wygrywają obie strony.

Temat łączy się ze społecznością programistów iOS. Obejmuje to wiedza, gdzie szukać wiadomości i ciekawych pomysłów, gdzie spotykać się z ludźmi i dzielić wskazówkami oraz dokąd zadawać pytania.

Kogo powinienem obserwować na Twitterze?

Zacznijmy od najprostszego, czyli korzystania z Twittera. Twitter to fantastyczny sposób na śledzenie rzeczy, które Cię interesują, a jest kilka osób, które gorąco polecam w przypadku rozwoju iOS.

Tak, ci ludzie tweetują o swojej własnej pracy, ale myślę, że świetnie się ich śledzą, ponieważ dużo tweetują też o pracy innych osób – pomogą ci zobaczyć różne perspektywy na dany temat i dzielą się różnymi rodzajami ciekawych pomysłów i rzeczy do wypróbowania.

Oto 9 osób, które warto obserwować na Twitterze:

Seana Allena spędza dużo czasu na YouTube, tworząc filmy programistyczne Swift i iOS, ale także bardzo ciężko pracuje, aby rozpowszechniać informacje o pracy innych ludzi – naprawdę świetnie się spisał, pomagając wszystkim odkrywać coś nowego każdego tygodnia.

Antoine’a van der Lee prowadzi witrynę deweloperską dla systemu iOS pod adresem https://www.avanderlee.com, ale udostępnia także świetne linki do przydatnych zasobów, które znajduje w GitHubie, biuletynach i nie tylko.

Novall Khan pracuje dla Apple, ale to nie przeszkadza jej w regularnym publikowaniu filmów o tym, nad czym pracuje, czego się uczy, z czym ma problemy i nie tylko – jest naprawdę inspirująca.

Steve Troughton-Smith jest dobrze znany ze swojej wcześniejszej pracy przy majsterkowaniu z iOS, ale naprawdę powinieneś go śledzić, ponieważ udostępnia fantastyczny zestaw linków do imponującej pracy. Podoba mi się, jak dzieli się postępami w rozwoju własnych aplikacji, dzięki czemu możesz zobaczyć, jak rosną od początku do końca.

Kaja Tomasz jest jednym z najbardziej znanych niezależnych programistów w naszej społeczności, a wyróżnił ją Apple więcej razy, niż mogę zliczyć. Często tweetuje o swojej pracy i prezentacjach, ale udostępnia też linki do czytanych książek, czytanych artykułów i innych zasobów.

Majid Jabrajłow nie tylko pisze fantastycznego bloga Swift i SwiftUI, ale też jest oponąless promotor innych – jeśli śledzisz go na Twitterze, będziesz dostawał pomysł za pomysłem z różnych źródeł.

Donny'ego Walsa pisze bloga Swift, a ostatnio książki na temat Combine i Core Data, ale także zachęca ludzi do dzielenia się tym, nad czym pracują na Twitterze. Nawet samo przeczytanie tego wątku raz w tygodniu zainspiruje Cię do wypróbowania nowych rzeczy, więc zdecydowanie powinieneś podążać za Donnym.

Letni Panage Prace nad Apple, więc chociaż jest nieco ograniczona w tym, co może powiedzieć, tweetuje wiele pierwszorzędnych wskazówek od siebie i innych, z których każdy może korzystać do tworzenia lepszych aplikacji.

Natasza Fadejewa pisze bloga o rozwoju Swift i iOS, w tym artykuły na temat podstawowych danych, pytania do wywiadów i inne tematy, ale także tweety o rzeczach, które znajduje gdzie indziej.

Biuletyny i nie tylko

Biuletyny i nie tylko

Oczywiście Twitter nie jest jedynym miejscem, w którym można pozostać w kontakcie ze społecznością; istnieją również biuletyny, grupy Slack, spotkania Zoom, fora, konferencje i inne miejsca.

Nie chcę Cię za bardzo zanudzać, więc wymienię tutaj po jednym z każdego z nich:

Nie możesz się pomylić Co tydzień dla deweloperów iOS dla biuletynów.

Jeśli chcesz publikować na forum internetowym, https://www.hackingwithswift.com/forums jest całkiem nieźle. Do wyboru jest wiele kategorii i każdy ma na uwadzeless poziomu doświadczenia, zapraszamy do udziału. Serdecznie zapraszamy do zamieszczania tutaj swoich pytań dla początkujących, uwierz mi!

Co miesiąc Szczęśliwa godzina dla deweloperów iOS odbywa się w ramach rozmowy grupowej Zoom. Prawdziwą zabawę zapewniają pokoje podgrup, w których można rozmawiać z grupami liczącymi od 6 do 8 osób jednocześnie. To świetna zabawa i poznasz nowych ludzi.

Uczestnictwo w konferencjach było trudne z powodu pandemii koronawirusa, ale Apple's WWDC w zeszłym roku odniosło ogromny sukces i towarzyszyło mu mnóstwo wydarzeń społecznych.

Razem z grupą przyjaciół stworzyliśmy Repozytorium GitHub aby pomóc śledzić wszystkie inne wydarzenia, artykuły i inne rzeczy, które się wydarzyły – spójrz!

Wreszcie, jeśli wolisz rozmawiać na Slacku, gdzie możesz szybciej otrzymywać odpowiedzi, możesz dołączyć do darmowego Hakowanie z grupą Swift Slack i dołącz do jednego z kanałów Swift, SwiftUI i innych.

Ile czasu zajmuje nauka iOS?

To często zadawane pytanie, którym chcemy się teraz zająć.

Jak długo zajmuje przejście od zerowej wiedzy o Swift do uzyskania stanowiska programisty iOS na poziomie podstawowym?

Oczywistą odpowiedzią jest „to zależy”, ale w tym przypadku byłoby to wykluczone, więc rozwiążmy tę kwestię na kilka różnych sposobów.

Złota zasada to nie pośpiech

Po pierwsze i najważniejsze, nie można brać udziału w kilku kursach jednocześnie. Pamiętacie, co mówiłem o „syndromie błyszczących przedmiotów”?

Tak, wiele osób wierzy, że mogą brać udział w dwóch kursach jednocześnie, a następnie wkuwać je przez cztery, pięć, a nawet więcej godzin dziennie i nadal posiadać wysokiej jakości wiedzę na temat poruszanych przez nich tematów.

Żeby było jasne, widziałem, jak ludzie próbowali tego wiele razy i zawsze kończyło się to niepowodzeniem. Za każdym razem.

To nigdy nie działa i słyszałem, jak ludzie mówili, że dzieje się tak dlatego, że tutoriale były złe, że Swift był zbyt trudny, lub dosłownie z innego powodu niż próba szybkiego przejścia przez coś skomplikowanego.

Nauka języka Swift może czasami być trudna, a nauka tworzenia aplikacji wymaga wielu prób i błędów, popełniania błędów i obierania złych stron.

I to jest w porządku – jest lepiej niż dobrze, jest fantastycznie! 

Za każdym razem, gdy czegoś spróbujesz, popełnisz błąd lub skręcisz w złą stronę, czegoś się po drodze nauczysz. Kiedy w końcu dojdziesz do rozwiązania, zrozumiesz je znacznie lepiej.

Zatem TL;DR nie wymaga pośpiechu – nie spiesz się, nie bój się odkrywać pojawiających się skojarzeń.

Nie bój się eksperymentować ze swoimi projektami i nie bój się wracać do czegoś, czego nauczyłeś się wcześniej i uczyć się tego na nowo, jeśli zajdzie taka potrzeba.

Jakie jest Twoje wykształcenie

Jakie jest Twoje wykształcenie?

Po drugie, przed przyjściem do Swift powinieneś wziąć pod uwagę swoje pochodzenie.

Widzisz, nauka tworzenia aplikacji wymaga szerokiego zakresu umiejętności. Jeśli posiadasz bogatą wiedzę, np version control, struktury danych, algorytmy i nie tylko, będziesz miał znaczną przewagę nad tymi, którzy w ogóle nie mają doświadczenia z informatyką.

Oto kilka możliwości tego, gdzie możesz być teraz:

Jeśli masz wykształcenie informatyczne, znasz już wiele podstaw CS potrzebnych do rozpoczęcia pracy ze Swiftem.

Zmienne, tablice, pętle, tablice, zbiory, funkcje, OOP i inne pojęcia będą przydatne w Swift, podobnie jak cała praca ze strukturami danych i algorytmami.

Może to zaoszczędzić 4-6 miesięcy nauki, w zależności od przedmiotów, które studiowałeś, a także da ci przewagę przy ubieganiu się o pracę w wielu firmach.

Jeśli nie masz dyplomu CS, ale uczestniczyłeś w bootcampie z kodowania, znasz wiele podstaw potrzebnych do rozpoczęcia pracy ze Swiftem.

Nie zapewni to tej samej przewagi przy ubieganiu się o pracę w tych firmach, ponieważ często oczekują one dyplomu tylko po to, aby zaznaczyć pole na liście arbitralnych wymagań. Ale i tak zaoszczędzisz trzy lub cztery miesiące.

Jeśli nie masz dyplomu CS i nie brałeś udziału w bootcampie, ale kodujesz w wolnym czasie, zaoszczędzisz trochę czasu – prawdopodobnie około dwóch miesięcy, w zależności od używanego języka lub frameworków .

Co zrobić, jeśli nie masz dyplomu CS, nie uczestniczyłeś w bootcampie i nie masz wcześniejszego doświadczenia w kodowaniu?

Następnie szacuję, że przejście od zera do pracy na podstawowym poziomie zajmie od 9 do 12 miesięcy.

Tak, może to być pełny rok pracy oprócz Twojej obecnej pracy na pełen etat, a to tylko po to, aby zdobyć pierwszą pracę jako programista iOS.

Czy to zawsze ten sam rok?

Nie. Jeśli masz wcześniejsze doświadczenie, możesz skrócić ten czas do 1 do 6 miesięcy, jak już wspomniałem.

Jeśli wziąć pod uwagę najlepsze liczby po obu stronach – 9 miesięcy od zera do pracy na poziomie podstawowym plus 6 miesięcy na posiadanie dyplomu CS – oznacza to, że możesz zostać zatrudniony w zaledwie 3 miesiące, co jest niewiarygodne.

Więc nie potrzebujesz dyplomu CS ani bootcampu, ale musisz być chętny do ciężkiej pracy.

Pozwól sobie na trochę swobody

Trzecią kwestią, którą chciałbym poruszyć, zanim przejdziemy dalej, jest to, że „to trwa tak długo, jak trwa”. Uwielbiam tekst Johna Lennona, który mówi: „Życie jest tym, co dzieje się, gdy jesteś zajęty robieniem innych planów”.

Nie bądź dla siebie zbyt surowy, jeśli masz zaległości w nauce lub jeśli opuścisz kilka dni lub nawet tygodni i tak dalej.

Dopóki będziesz odporny, dotrzesz tam.

Przygotowanie do złożenia wniosku

Przygotowanie do złożenia wniosku

Na koniec, jeśli jesteś nieco dalej w swojej podróży edukacyjnej z iOS i myślisz o podjęciu pierwszej pracy na poziomie podstawowym, chciałbym wskazać Ci ogromny zbiór zasobów, które mogą Ci pomóc.

polecam Filmy z poradami dotyczącymi wywiadu Seana Allena Swift.

Ma dla nich całą listę odtwarzania, na której możesz pracować nad indywidualnymi dyskusjami, takimi jak klasy kontra struktury, programowanie funkcjonalne, obsługa błędów i nie tylko.

Żaden z nich nie jest szczególnie długi, ale wszystkie mają na celu wyposażenie Cię w umiejętności potrzebne do dobrego występu na rozmowie kwalifikacyjnej.

Gdzie teraz?

OK, omówiłem podstawowe i rozszerzone umiejętności, których będziesz potrzebować, typowe błędy w nauce, kursy, w których możesz wziąć udział, oraz sposoby nawiązywania kontaktu ze społecznością iOS.

Omówiłem także, jak przygotować się do rozmowy kwalifikacyjnej.

Ponadto mam nadzieję, że pokazałem, jak wiele informacji jest dostępnych za darmo. 

Tak, pokusa wydania stu dolarów lub więcej na kurs jest silna. Ale zrelaksuj się – najpierw zacznij działać, nabierz trochę rozpędu i znajdź kogoś, kto uczy języka Swift w sposób, który Ci odpowiada.

Kiedy już będziesz w dobrym miejscu i poczujesz się gotowy, śmiało wydaj trochę pieniędzy, jeśli chcesz.

Powodzenia w podróży! 

O autorze
Dawid Attar
David pracuje w branży internetowej i cyfrowej od 21 lat. Ma ogromne doświadczenie w branży oprogramowania i projektowania stron internetowych, wykorzystując WordPress, Joomla i nisze je otaczające. Współpracował z agencjami rozwoju oprogramowania, międzynarodowymi firmami zajmującymi się oprogramowaniem, lokalnymi agencjami marketingowymi, a obecnie jest dyrektorem ds. operacji marketingowych w Aphex Media – agencji SEO. Jako konsultant cyfrowy koncentruje się na pomaganiu firmom w uzyskaniu przewagi konkurencyjnej dzięki połączeniu ich strony internetowej i dostępnych obecnie platform cyfrowych. Połączenie wiedzy technologicznej z dużym zmysłem biznesowym zapewnia jego pismom przewagę konkurencyjną.

Jeszcze jedna rzecz... Czy wiesz, że osoby, które udostępniają przydatne rzeczy, takie jak ten post, również wyglądają NIESAMOWITE? ;-)
Proszę zostaw użyteczny skomentuj swoje przemyślenia, a następnie udostępnij to na swoich grupach na Facebooku, które uznają to za przydatne i wspólnie zbierzmy korzyści. Dziękuję za udostępnienie i bycie miłym!

Ujawnienie: Ta strona może zawierać linki do zewnętrznych witryn produktów, które kochamy i gorąco polecamy. Jeśli kupisz sugerowane przez nas produkty, możemy otrzymać opłatę za polecenie. Takie opłaty nie wpływają na nasze rekomendacje i nie przyjmujemy płatności za pozytywne recenzje.

Autorzy promowani w:  Inc Czasopismo Logo .   Logo Sitepoint   Logo CSS Tricks    logo webdesignerdepot   Logo WPMU DEV   i wiele więcej ...