Czego się spodziewać, jeśli chcesz zostać programistą iOS

Czego się spodziewać, jeśli chcesz zostać programistą iOS

Z zewnątrz iOS rozwój może wydawać się zamkniętym klubem. Do pracy na pewno potrzebujesz komputera Apple; ekosystem jest ściśle kontrolowany przez jedną firmę. Od wewnątrz też czasami słychać sprzeczności – niektórzy twierdzą, że język Objective-C jest stary i niezgrabny, a inni, że nowy język Swift jest zbyt prymitywny.

Niemniej jednak deweloperzy wchodzą w ten obszar i gdy już tam dotrą, są usatysfakcjonowani.

Tym razem Marat Nurgaliew i Boris Pavlov opowiedzieli nam o swoich doświadczeniach – jak nauczyli się zawodu, jak przeszli pierwsze rozmowy kwalifikacyjne, dlaczego otrzymali odmowy. A dziekan Andriej Antropow wystąpił w roli eksperta Wydział Rozwoju iOS w GeekBrains.

W 2016 roku Marat Nurgaliew z regionu Astrachania przyjechał, aby podjąć pracę jako programista mobilny w lokalnej telewizji. To był jego pierwszy wywiad. Właśnie wrócił z wojska, bez praktyki i doświadczenia, zapominając nawet o teorii, z którą miał już problemy. Jedynym doświadczeniem Marata w zakresie rozwoju urządzeń mobilnych była jego praca magisterska dotycząca analizy przepływów wycieków informacji za pośrednictwem aplikacji na Androida. Na rozmowie pytano go o studia, OOP i inne teorie, ale Marat nie potrafił ukryć luk w swojej wiedzy.

Nie odmówiono mu jednak, ale postawiono przed nim praktyczne zadanie - w ciągu dwóch tygodni wdrożyć wyświetlanie listy aktualności za pomocą API. Zarówno na iOS, jak i na Androida. „Gdybym miał jakiekolwiek doświadczenie z Androidem, nie było nawet narzędzia do stworzenia wersji na iOS. Środowisko programistyczne aplikacji iOS jest dostępne tylko na komputerze Mac. Ale dwa tygodnie później wróciłem i pokazałem, co potrafię na Androidzie. W przypadku iOS musiałem to rozgryźć na bieżąco. W końcu mnie zabrali. Potem mieszkałem w Astrachaniu. Każda praca w IT z pensją powyżej dwudziestu odpowiadała mi.”

Kim są programiści iOS?

Programiści mobilni tworzą aplikacje na dowolne urządzenie przenośne. Smartfony, tablety, inteligentne zegarki i wszystkie inne platformy obsługujące system Android lub iOS. Podstawowe zasady rozwoju mobilnego nie różnią się od programowania konwencjonalnego, jednak ze względu na specyficzne narzędzia został on wydzielony w odrębnym kierunku. Wykorzystuje własne narzędzia, języki programowania i frameworki.

„Do pracy z iOS potrzebny jest MacBook, bo tylko on ma niezbędne środowisko programistyczne Xcode. Jest bezpłatny i dystrybuowany za pośrednictwem AppStore. Aby zainstalować, musisz mieć swój Apple ID i nic więcej. W Xcode możesz tworzyć aplikacje na wszystko - telefon, tablet, zegarek. Do wszystkiego jest wbudowany symulator i edytor” – mówi Andrey Antropov, dziekan działu rozwoju iOS w GeekBrains.

„Ale środowisko programistyczne można zainstalować w systemie Windows, jeśli korzystasz z Hackintosha. Jest to działająca, ale okrężna opcja - żaden z poważnych programistów tego nie robi. Początkujący kupują starego MacBooka. A doświadczonych zazwyczaj stać na najnowszy model.”

Języki - Swift lub Objective-C

Prawie cały rozwój iOS odbywa się przy użyciu języka programowania Swift. Pojawił się pięć lat temu i obecnie stopniowo zastępuje stary język Objective-C, którego Apple używa we wszystkich swoich aplikacjach od ponad 30 lat.

„W Objective-C zgromadzono ogromną bazę kodu, więc nadal potrzebni są programiści w obu językach, w zależności od firmy, jej zadań i aplikacji. Aplikacje napisane wiele lat temu bazują na Objective-C. Wszystkie nowe projekty są domyślnie opracowywane w Swift. Teraz Apple robi wiele, aby jednoczesne tworzenie telefonu, tabletu, zegarka i MacBooka było jak najbardziej wygodne. Ten sam kod można skompilować i uruchomić wszędzie. To nie zdarzało się wcześniej. Dla iOS programowaliśmy w Swift, dla MacOS używaliśmy Objective-C.”

Według Andreya Swift to bardzo prosty język, przyjazny dla początkujących. Jest ściśle wpisany, co pozwala wyłapać wiele błędów na etapie kompilacji projektu, a błędny kod po prostu nie zadziała.

„Objective-C jest dość starym językiem – w tym samym wieku co język C++. W momencie jego opracowania wymagania dotyczące języków były zupełnie inne. Kiedy pojawił się Swift, był pełen błędów, funkcjonalność była ograniczona, a składnia była szorstka. A ludzie mieli pełne ręce roboty przy Objective-C. Od wielu lat jest udoskonalany, wszystkie błędy tam występujące zostały poprawione. Ale teraz myślę, że Swift jest tak samo dobry jak Objective-C. Chociaż nawet Apple nadal używa obu w swoich projektach. Języki są w dużej mierze wymienne i wzajemnie się uzupełniają. Struktury i obiekty jednego języka można przekształcić w obiekty i struktury innego języka. Dobrze jest znać obie opcje, ale dla początkujących Objective-C często wydaje się onieśmielający i zagmatwany.

szkolenie

„W mojej pierwszej pracy szef mnie przeszkolił, pomógł we wdrożeniu i skonfigurowaniu projektu” – mówi Marat. „Ale praca jednocześnie na Androidzie i iOS jest trudna. Przebudowa, przechodzenie z projektu do projektu, z języka na język wymaga czasu. W końcu zdecydowałem, że muszę wybrać jeden kierunek i go studiować. Spodobał mi się interfejs Xcode i prosta składnia Swifta.”

Marat rozpoczął pracę w dziale rozwoju iOS w GeekBrains. Na początku było to bardzo łatwe, ponieważ wiele rzeczy wiedział z doświadczenia zawodowego. Kurs roczny podzielony jest na cztery kwartały. Według Andreya, ten pierwszy podaje tylko podstawy: „Podstawy języka Swift, znajomość podstawowych frameworków, sieci, przechowywania danych, cyklu życia aplikacji, kontrolera, podstawowych architektur, głównych bibliotek, z których wszyscy korzystają, wielowątkowości i równoległości w Aplikacje."

Druga kwarta dodaje Objective-C. Prowadzony jest kurs dotyczący architektury i podstawowych wzorców programowania. W trzecim kwartale uczą prawidłowego stylu pisania kodu. Wyjaśnia czym jest fabryka, jak poprawnie pisać testy, tworzyć projekty, czym jest Git-Flow, Ciągła integracja poprzez Fast Lane. Czwarty i ostatni kwartał poświęcony jest pracy zespołowej, zadaniom praktycznym i stażom.

„Pierwszy kwartał był łatwy” – mówi Marat – „ale potem zacząłem uczyć się programowania w Objective-C, studiować wzorce projektowe, zasady Solid, Git-Flow, architekturę projektu, testowanie jednostek i interfejsu użytkownika aplikacji, konfigurowanie niestandardowych animacji - a potem ja. Nauka stała się interesująca.

„W GeekBrains nie wszystko zaczęło się dla mnie gładko” – mówi Boris Pavlov, a jego droga do rozwoju iOS w ogóle nie była najbardziej bezpośrednia. Chłopca wychowywała babcia. Była architektem, matematykiem i projektantem, zaszczepiła Borysowi miłość do projektowania, nauczyła go rysować odręcznie i rysować. Jego wujek był administratorem systemu i interesował swojego siostrzeńca komputerami.

Borys był doskonałym uczniem, ale stracił zainteresowanie nauką i porzucił szkołę po dziewięciu klasach. Po studiach zaczął jeździć na rowerze, a komputery zeszły na dalszy plan. Ale pewnego dnia Borys doznał kontuzji kręgosłupa, która uniemożliwiła mu kontynuowanie kariery sportowej.

Rozpoczął naukę języka C++ pod okiem nauczyciela w Irkucku Instytucie Fizyki Słońca i Ziemi. Potem zainteresowałem się tworzeniem gier i próbowałem przejść na C#. I wreszcie, podobnie jak Marat, zachwycił go język Swift.

„Zdecydowałem się wziąć udział w bezpłatnym kursie wprowadzającym w GeekBrains. Szczerze mówiąc, był bardzo nudny, powolny i niezrozumiały” – wspomina Borys. „Nauczyciel opowiadał o cechach języka, ale spieszył się z tematu na temat, nie zdradzając istoty. Kiedy kurs się skończył, nadal nic nie rozumiałem.”

Dlatego też po kursie wprowadzającym Borys nie zapisał się na roczne szkolenie, ale na krótki, trzymiesięczny kurs, na którym uczą podstaw zawodu. „Znalazłem tam bardzo dobrych nauczycieli, którzy wszystko jasno wyjaśnili.”

„Często spotykamy się z krytyką, rzekomo nasze podręczniki szkoleniowe są nie do końca aktualne, pojawiają się nieścisłości. Ale kursy są stale aktualizowane, a nauczyciele zawsze mówią o innowacjach. Spośród grup, które prowadzę, wiele z nich znajduje pracę po pierwszym kwartale. Oczywiście są to zazwyczaj osoby z doświadczeniem programistycznym” – mówi Andrey. „Z drugiej strony nie da się przekazać całej wiedzy na jednym kursie. Życiowa interakcja z klientem sieciowym nie da się zmieścić w dziesięciu dwugodzinnych wykładach. A jeśli będziesz chodzić tylko na kursy i nie robić nic więcej, to nie będziesz miał wystarczającej wiedzy. Jeśli będziesz się uczyć codziennie przez cały rok, to w tym tempie tylko leniwi nie dostaną pracy. Ponieważ zapotrzebowanie w tym zawodzie jest bardzo duże.”

Czego się spodziewać, jeśli chcesz zostać programistą iOS

Można zobaczyć najwięcej najnowsze wolne miejsca pracy dla programistów iOS i subskrybuj nowe.

Pracować

Ale ani Marat, ani Borys nie znaleźli tak łatwo zatrudnienia.

„Niektóre duże firmy od dawna tworzą aplikacje na iOS w języku Objective-C i nadal utrzymują starą bazę kodu. Niestety nie mam przekonującego argumentu, aby zmusić ich do korzystania wyłącznie ze Swifta. Zwłaszcza ci, którzy stosują zasadę „nie dotykaj tego, co działa” – mówi Marat. „W Geekbrains niewiele uwagi poświęca się kierunkowi Objective-C. Ma to raczej charakter informacyjny. Ale każda firma, z którą rozmawiałem, pytała o Objective-C. A ponieważ moje studia skupiają się na Swifcie, podobnie jak w mojej poprzedniej pracy, spotykałem się z odmową na rozmowach kwalifikacyjnych”.

„Po studiach znałem sam tylko najbardziej powierzchowne podstawy, za pomocą których mogłem stworzyć najprostszą aplikację” – mówi Borys. „Do pracy oczywiście to nie wystarczyło, ale bardzo mnie to cieszyło. W Irkucku trudno było znaleźć pracę. Mówiąc ściślej – wcale. Postanowiłem poszukać w innych miastach. Pod względem liczby wakatów najbardziej istotne okazały się Krasnodar, Moskwa i Sankt Petersburg. Postanowiłem pojechać do Petersburga – bliżej Europy.

Wszystko jednak okazało się nie takie różowe. Nawet juniorowi zostanie wybaczone to, czego nie może wiedzieć. Nie znalazłem jeszcze pracy. Pracuję dla „dziękuję”, zdobywając doświadczenie. Rozumiem, że nie tego chciałem, ale jestem zainteresowany i to mnie napędza. Chcę zdobywać wiedzę.”

Andrey uważa, że ​​nowicjusze powinni szukać staży, a nie pracy. Jeśli masz bardzo małą wiedzę, normalne jest, że staż jest bezpłatny. Andrey radzi aplikować na stanowiska juniorów w dużych firmach, w których proces pracy został już ustalony.

„Kiedy zrozumiesz, jak działa proces tworzenia oprogramowania, znacznie łatwiej będzie Ci nawigować i znajdować dalszą pracę, w zależności od Twoich pragnień. Niektórzy ludzie zajmują się niezależnym rozwojem, tworzą gry dla siebie, przesyłają je do sklepu i sami na nich zarabiają. Niektórzy pracują dla dużej firmy, w której obowiązują rygorystyczne zasady. Niektórzy zarabiają w małych studiach zajmujących się tworzeniem oprogramowania na zamówienie i tam mogą obserwować cały proces – od stworzenia projektu od podstaw po dostarczenie go do sklepu.”

Wynagrodzenia

Wynagrodzenie programisty iOS, jak każdego innego, zależy od pytania „Moskwa czy Rosja”. Jednak ze względu na specyfikę branży – dużo pracy zdalnej, możliwości relokacji i pracy poza rynkiem regionalnym – liczby coraz częściej się do siebie zbliżają.

Czego się spodziewać, jeśli chcesz zostać programistą iOS

Według kalkulatora wynagrodzeń My Circle średnia pensja programisty iOS jest nieco niższa rubli 140 000.

„Junior na bardzo niskim poziomie często pracuje za darmo lub za symboliczne pieniądze - 20-30 tysięcy rubli. Jeśli junior zostanie celowo przyjęty na swoje stanowisko, otrzyma od 50 do 80 tys. Średniowie otrzymują od 100 do 150, a czasami nawet do 200. Seniorzy nie otrzymują mniej niż 200. Myślę, że ich pensja wynosi około 200-300. A w przypadku liderów zespołów jest to odpowiednio ponad 300.”

Czego się spodziewać, jeśli chcesz zostać programistą iOS

Wywiady

„Pierwsza rozmowa odbyła się na Skype. Ku mojemu zdziwieniu był to Google – wspomina Borys – „potem przeprowadziłem się do Petersburga i zacząłem szukać pracy. Otrzymałem aplikację na stanowisko programisty iOS. Nie junior, nie średni, nie senior - po prostu programista. Ucieszyłem się i zacząłem korespondować z menadżerem. Poproszono mnie o wykonanie zadania technicznego: miałem napisać podanie na dowcipy o Chucku Norrisie. Napisałem to. Powiedzieli mi, że wszystko jest w porządku i umówili się na rozmowę online.

Zadzwoniliśmy do siebie. Rozmawiała ze mną miła dziewczyna. Ale nie zadawali żadnych pytań dotyczących znajomości języka, tylko różne problemy logiczne, na przykład: „Jest godzina 15:15, ile stopni jest między wskazówką godzinową a minutową?” lub „Słup ma 10 metrów długości, a Ślimak w ciągu dnia wspina się na wysokość 3 metrów, a w nocy opada na wysokość 1 metra. Za ile dni wczołga się na górę?” i jeszcze kilka podobnych.

Potem pojawiły się bardzo dziwne pytania – dlaczego kocham Apple i co czuję do Tima Cooka. Powiedziałem, że firma jako całość jest do niego pozytywnie nastawiona, ale raczej negatywnie, bo dla niego ważne są pieniądze, a nie produkty.

Kiedy zaczęły się pytania o Swifta, moja wiedza wystarczyła jedynie do programowania wzorców i podstaw OOP. Pożegnaliśmy się, po tygodniu oddzwonili i powiedzieli, że się nie nadaję. Właściwie zdobyłem dzięki temu ogromne doświadczenie: potrzebna jest wiedza, potrzeba jej dużo – zarówno teorii, jak i praktyki.”

Andrey mówi, że „pierwszą rzeczą, o którą wszyscy pytają podczas rozmowy kwalifikacyjnej, jest cykl życia kontrolera. Bardzo lubią prosić o jakiś prosty wzór programowania. Na pewno zapytają o Twoje doświadczenia z korzystaniem z popularnych bibliotek. Na pewno pojawi się pytanie o różnice między typami wartości Swift a typami referencyjnymi, o automatyczne zliczanie referencji i zarządzanie pamięcią. Mogą zapytać, jak zaimplementowali przechowywanie danych w aplikacjach i czy zaimplementowali żądania sieciowe. Zapytają o podstawy REST i JSON. Junior nie będzie pytany o konkretne rzeczy i subtelności. Przynajmniej ja nie pytam”.

Borys miał inne doświadczenia: „Nawet gdy prosiłem o staże, wykonywałem zadania techniczne i mówiłem, że wynagrodzenie nie jest dla mnie ważne, byle wystarczyło na wynajęcie mieszkania, nadal mi odmawiano. Czytałem artykuły, próbowałem zrozumieć, czego rekruter potrzebuje od nowicjusza. Ale przeważnie ponieśli porażkę w teorii. Z jakiegoś powodu zadawali pytania z głównych lig, które nie dotyczyły nowicjuszy.

Marat miał więcej szczęścia. Obecnie pracuje w firmie transportowej i samodzielnie kieruje działem iOS, kontynuując jednocześnie studia na tym wydziale. „Ponieważ tylko ja jestem odpowiedzialny za iOS, moją pracę ocenia się wyłącznie pod kątem umiejętności realizacji powierzonych mi zadań, a nie znajomości teorii.”

Społeczność

Andriej mieszka w Niżnym Nowogrodzie i twierdzi, że nawet tam utworzyła się wspaniała społeczność. Dawno, dawno temu był programistą backendowym w Pythonie, ale przyjaciele wciągnęli go w rozwój urządzeń mobilnych - a teraz sam zachęca do tego wszystkich.

„Społeczność globalna zazwyczaj komunikuje się za pośrednictwem Twittera. Ludzie piszą własne blogi, nagrywają filmy na Youtube, zapraszają się nawzajem do podcastów. Któregoś dnia dostałem pytanie dotyczące prezentacji, w której przemawiał lider zespołu HQTrivia. To amerykańska gra typu quiz, w którą gra jednocześnie kilka milionów ludzi. Napisałem do niego na Twitterze, odpowiedział, porozmawialiśmy i podziękowałem mu. Społeczność jest niezwykle przyjazna, co jest wspaniałe.”

Lista polecanej literaturyPoziom początkujący:

Średni poziom:

Poziom zaawansowany:

Źródło: www.habr.com

Dodaj komentarz