Šta očekivati ​​ako želite da postanete iOS programer

Šta očekivati ​​ako želite da postanete iOS programer

Sa vanjske strane iOS-a, razvoj može izgledati kao zatvoreni klub. Da biste radili, svakako vam je potreban Apple računar; ekosistem blisko kontroliše jedna kompanija. Iznutra se ponekad mogu čuti i kontradikcije – neki kažu da je Objective-C jezik star i nespretan, a drugi da je novi Swift jezik previše grub.

Ipak, programeri idu u ovu oblast i, kada tamo, budu zadovoljni.

Ovog puta, Marat Nurgaliev i Boris Pavlov ispričali su nam svoje iskustvo – kako su naučili profesiju, kako su prošli prve intervjue, zašto su dobijali odbijenice. A Andrej Antropov, dekan, bio je stručnjak Fakultet za iOS razvoj u GeekBrains.

Godine 2016. Marat Nurgaliev iz regije Astrakhan došao je da dobije posao kao mobilni programer u lokalnoj televizijskoj kompaniji. Ovo je bio njegov prvi intervju. Tek što se vratio iz vojske, bez prakse i iskustva, zaboravivši čak i teoriju, sa kojom je već imao problema. Maratovo jedino iskustvo u razvoju mobilnih uređaja bila je njegova teza o analizi tokova curenja informacija kroz Android aplikacije. Na razgovoru su ga pitali o studijama, OOP-u i drugim teorijama, ali Marat nije mogao sakriti nedostatke u znanju.

Međutim, nije odbijen, već je dobio praktičan zadatak - da implementira prikaz liste vijesti pomoću API-ja za dvije sedmice. I za iOS i za Android. “Ako sam imao iskustva s Androidom, nije bilo čak ni alata za kreiranje iOS verzije. Okruženje za razvoj iOS aplikacija dostupno je samo na Macu. Ali dvije sedmice kasnije vratio sam se i pokazao šta mogu na Androidu. Sa iOS-om sam to morao da shvatim u hodu. Na kraju su me uzeli. Tada sam živeo u Astrahanu. Odgovarao mi je bilo koji IT posao sa platom iznad dvadeset.”

Ko su iOS programeri?

Mobilni programeri prave aplikacije za bilo koji prenosivi uređaj. Pametni telefoni, tableti, pametni satovi i sve druge platforme koje podržavaju Android ili iOS. Osnovni principi mobilnog razvoja se ne razlikuju od konvencionalnog razvoja, ali je zbog specifičnih alata izdvojen u poseban pravac. Koristi vlastite alate, programske jezike i okvire.

“Da biste radili sa iOS-om, potreban vam je MacBook, jer samo on ima potrebno Xcode razvojno okruženje. Besplatan je i distribuira se putem AppStore-a. Da biste instalirali, morate imati svoj Apple ID i ništa drugo. U Xcodeu možete razviti aplikacije za bilo šta - telefon, tablet, sat. Postoji ugrađeni simulator i uređivač za sve“, kaže Andrej Antropov, dekan odjela za razvoj iOS-a u GeekBrains-u.

„Ali razvojno okruženje se može instalirati na Windows ako koristite Hackintosh. Ovo je funkcionalna, ali zaobilazna opcija - niko od ozbiljnih programera to ne radi. Početnici kupuju stari MacBook. A oni iskusni obično sebi mogu priuštiti najnoviji model.”

Jezici - Swift ili Objective-C

Gotovo sav razvoj iOS-a obavlja se pomoću programskog jezika Swift. Pojavio se prije pet godina i sada postepeno zamjenjuje stari jezik Objective-C, koji Apple koristi u svim svojim aplikacijama više od 30 godina.

“Ogromna baza koda je akumulirana u Objective-C, tako da su programeri na oba jezika i dalje potrebni, ovisno o kompaniji, njenim zadacima i aplikacijama. Aplikacije napisane prije mnogo godina temelje se na Objective-C. A svi novi projekti se standardno razvijaju u Swiftu. Sada Apple čini mnogo kako bi simultani razvoj za telefon, tablet, sat i MacBook učinio što praktičnijim. Isti kod se može kompajlirati i izvoditi svuda. Ovo se ranije nije dešavalo. Za iOS smo razvili u Swiftu, za MacOS smo koristili Objective-C.”

Prema Andreyu, Swift je vrlo jednostavan jezik koji je prijateljski za početnike. Strogo je otkucan, što vam omogućava da uhvatite mnoge greške u fazi kompilacije projekta, a neispravan kod jednostavno neće raditi.

“Objective-C je prilično star jezik - istog doba kao i C++ jezik. U vrijeme kada je razvijen, zahtjevi za jezicima bili su potpuno drugačiji. Kada je Swift izašao, bio je pogrešan, funkcionalnost je bila ograničena, a sintaksa gruba. I ljudi su imali pune ruke posla sa Objective-C. Unaprijeđen je dugi niz godina, sve greške su ispravljene. Ali sada mislim da je Swift jednako dobar kao Objective-C. Iako čak i Apple još uvijek koristi oba u svojim projektima. Jezici su uglavnom zamjenjivi i međusobno komplementarni. Strukture i objekti jednog jezika mogu se transformisati u objekte i strukture drugog jezika. Dobro je znati obje opcije, ali za početnike Objective-C često izgleda zastrašujuće i zbunjujuće."

Trening sesije

„Na mom prvom poslu šef me je obučio, pomogao mi u implementaciji i postavljanju projekta“, kaže Marat, „Ali raditi na Androidu i iOS-u u isto vrijeme je teško. Potrebno je vrijeme za obnovu, prebacivanje s projekta na projekat, s jezika na jezik. Na kraju sam odlučio da moram izabrati jedan smjer i proučavati ga. Prodan sam na Xcode-ovom interfejsu i Swiftovoj jednostavnoj sintaksi."

Marat je ušao u odjel za razvoj iOS-a u GeekBrains. U početku je bilo vrlo lako, jer je mnoge stvari znao iz radnog iskustva. Godišnji kurs je podijeljen u četiri kvartala. Prema Andreyu, prva daje samo osnove: „Osnove jezika Swift, poznavanje osnovnih okvira, umrežavanje, skladištenje podataka, životni ciklus aplikacije, kontroler, osnovne arhitekture, glavne biblioteke koje svi koriste, višenitno i paralelizam u aplikacije.”

Druga četvrtina dodaje Objective-C. Kurs se izvodi o arhitekturi i osnovnim obrascima programiranja. U trećem kvartalu uče pravilnom stilu pisanja koda. Objašnjava šta je fabrika, kako pravilno pisati testove, kreirati projekte, šta je Git-Flow, Kontinuirana integracija kroz Fast Lane. Četvrto i posljednje tromjesečje posvećeno je timskom radu, praktičnim zadacima i praksi.

„Prvo tromjesečje je bilo lako“, kaže Marat, „ali onda sam počeo da učim programiranje u Objective-C, proučavajući obrasce dizajna, principe Solid-a, Git-Flow-a, arhitekturu projekta, Unit i UI testiranje aplikacija, postavljanje prilagođene animacije – a onda mi je postalo zanimljivo učiti.”

„Za mene u GeekBrains-u nije počelo baš glatko“, kaže Boris Pavlov, a njegov put ka razvoju iOS-a uopšte nije bio najdirektniji. Dječaka je odgojila njegova baka. Bila je arhitekta, matematičarka i dizajnerica i usadila je Borisu ljubav prema dizajnu, naučila ga da crta rukom i crta. Njegov ujak je bio sistem administrator i zanimao je svog nećaka za kompjutere.

Boris je bio odličan učenik, ali je izgubio interesovanje za učenje i napustio školu nakon devetog razreda. Nakon fakulteta se bavio biciklizmom, a kompjuteri su nestali u pozadini. Ali jednog dana Boris je zadobio povredu kičme, što ga je spriječilo da nastavi sportsku karijeru.

Počeo je da studira C++ kod nastavnika na Irkutskom institutu za solarno-terestrijalnu fiziku. Tada sam se zainteresovao za razvoj igara i pokušao da pređem na C#. I konačno, kao i Marat, bio je opčinjen Swift jezikom.

“Odlučio sam da pohađam besplatni uvodni kurs na GeekBrains. Da budem iskren, bio je jako dosadan, trom i nerazumljiv“, prisjeća se Boris, „učitelj je pričao o karakteristikama jezika, ali je jurio s jedne teme na drugu ne otkrivajući suštinu. Kada se kurs završio, još uvek ništa nisam razumeo.”

Dakle, nakon uvodnog kursa, Boris nije upisao jednogodišnju obuku, već kratki tromesečni kurs, gde predaju same osnove struke. „Tamo sam našla veoma dobre učitelje i sve su jasno objasnili.”

“Često smo kritikovani, navodno naši priručnici za obuku nisu u potpunosti ažurni, ima netačnosti. Ali kursevi se stalno ažuriraju, a nastavnici uvijek govore o inovacijama. Od grupa koje vodim, mnoge nađu posao nakon prvog kvartala. Naravno, obično su to ljudi sa iskustvom u programiranju“, kaže Andrey, „S druge strane, svo znanje se ne može prenijeti na jednom kursu. Interakcija mrežnog klijenta u životu ne može se uklopiti u deset dvosatnih predavanja. A ako idete samo na kurseve i ne radite ništa drugo, onda nećete imati dovoljno znanja. Ako učite svaki dan cijelu godinu, onda ovim tempom samo lijeni neće dobiti posao. Jer potražnja u struci je veoma velika.”

Šta očekivati ​​ako želite da postanete iOS programer

Možete vidjeti najviše najnovija slobodna radna mjesta za iOS programere i pretplatite se na nove.

rad

Ali ni Marat ni Boris nisu se tako lako zaposlili.

“Neke velike kompanije već dugo razvijaju iOS aplikacije u Objective-C i nastavljaju da održavaju staru bazu koda. Nažalost, nemam uvjerljiv argument da ih natjeram da koriste isključivo Swift. Pogotovo oni koji koriste pravilo „ne dirajte ono što radi“, kaže Marat, „Malo pažnje se posvećuje smjeru Objective-C u Geekbrainsu. Više je informativne prirode. Ali svaka kompanija za koju sam intervjuisao pitala je za Objective-C. A pošto su moje studije fokusirane na Swifta, kao i moj prethodni rad, dobijao sam odbijanja na intervjuima.”

„Nakon studija sam sam znao samo najpovršnije osnove, uz pomoć kojih sam mogao da napravim najjednostavniju aplikaciju“, kaže Boris. „Za posao, naravno, nije bilo dovoljno, ali sam bio srećan zbog ovoga. Bilo je teško naći posao u Irkutsku. Tačnije – nikako. Odlučio sam da potražim u drugim gradovima. Po broju slobodnih radnih mjesta, Krasnodar, Moskva i Sankt Peterburg su se pokazali najrelevantnijim. Odlučio sam da odem u Sankt Peterburg – bliže Evropi.

Ali ispostavilo se da nije sve tako ružičasto. Čak će i junioru biti oprošteno ono što ne može znati. Još nisam našao posao. Radim za "hvala", sticanje iskustva. Razumijem da to nije ono što sam želio, ali me zanima i to me pokreće. Želim da steknem znanje."

Andrey smatra da pridošlice treba da traže praksu, a ne posao. Ako imate jako malo znanja, onda je normalno da staž bude neplaćen. Andrey savjetuje da se prijave za juniorska radna mjesta velikim kompanijama u kojima je već uspostavljen radni proces.

“Kada shvatite kako funkcionira proces razvoja softvera, bit će vam mnogo lakše navigirati i pronaći daljnji posao, ovisno o vašim željama. Neki ljudi idu u samostalni razvoj, prave igre za sebe, postavljaju ih u prodavnicu i sami ih unovčavaju. Neki rade za veliku kompaniju sa strogim pravilima. Neki ljudi zarađuju u malim studijima koji prave softver po narudžbi, i tamo mogu pratiti cijeli proces – od kreiranja projekta od nule do isporuke u prodavnicu.”

Plate

Plata iOS programera, kao i svakog drugog, ovisi o pitanju "Moskva ili Rusija". Ali zbog specifičnosti industrije - puno rada na daljinu, mogućnosti preseljenja i rada ne na regionalnom tržištu - brojke se sve više približavaju jedna drugoj.

Šta očekivati ​​ako želite da postanete iOS programer

Prema kalkulatoru plata My Circle, prosječna plata iOS developera je nešto manja 140 000 rubalja.

„Junior na vrlo niskom nivou često radi besplatno ili za simboličan novac - 20-30 hiljada rubalja. Ako se junior namjerno odvede na svoju poziciju, dobit će od 50 do 80 hiljada. Srednji dobiju od 100 do 150, a ponekad i do 200. Seniori ne primaju manje od 200. Mislim da im je plata oko 200-300. A za vođe timova, shodno tome, to je preko 300.”

Šta očekivati ​​ako želite da postanete iOS programer

Intervjui

“Prvi intervju je obavljen preko Skajpa. Na moje iznenađenje, to je bio Google“, prisjeća se Boris, „tada sam se tek preselio u Sankt Peterburg i počeo tražiti posao. Primio sam prijavu za poziciju iOS programera. Ne junior, ne srednji, ne stariji - samo programer. Bio sam oduševljen i počeo sam da se dopisujem sa menadžerom. Zamoljen sam da izvršim tehnički zadatak: morao sam da napišem prijavu za šale o Chucku Norrisu. Ja sam to napisao. Rekli su mi da je sve super i zakazali online intervju.

Zvali smo jedno drugo. Jedna fina devojka je razgovarala sa mnom. Ali nisu postavljali nikakva pitanja o poznavanju jezika – samo razne logičke probleme, na primjer, „Vrijeme je 15:15, koliko je stupnjeva između kazaljke sata i minuta?“ ili „Stub je dugačak 10 metara, a puž puže 3 metra gore tokom dana, a spušta se 1 metar noću.” Za koliko će dana dopuzati do vrha?“, i još par sličnih.

Zatim su se pojavila vrlo čudna pitanja – zašto volim Apple i kako se osjećam prema Tim Cooku. Rekao sam da je kompanija u cjelini pozitivna, ali prije negativna prema njemu, jer mu je bitan novac, a ne proizvodi.

Kada su počela pitanja o Swiftu, moje znanje je bilo dovoljno samo za programske obrasce i osnove OOP-a. Pozdravili smo se, nedelju dana kasnije su me pozvali i rekli da nisam prikladan. Zapravo, stekao sam ogromno iskustvo iz ovoga: potrebno vam je znanje, potrebno vam je mnogo – i teorija i praksa.”

Andrey kaže da „prva stvar koju svako pita tokom intervjua je životni ciklus kontrolora. Oni zaista vole da traže neki jednostavan obrazac programiranja. Definitivno će pitati za vaše iskustvo korištenja popularnih biblioteka. Definitivno će se postaviti pitanje o razlikama u Swift tipovima vrijednosti od referentnih tipova, o automatskom brojanju referenci i upravljanju memorijom. Oni mogu pitati kako su implementirali skladištenje podataka u aplikacije i da li su implementirali mrežne zahtjeve. Pitat će se o osnovama REST-a i JSON-a. Od juniora se neće tražiti određene stvari i suptilnosti. Barem ne pitam."

Boris je imao drugačije iskustvo: „Čak i kada sam tražio praksu, obavljao tehničke poslove i rekao da mi plata nije bitna, sve dok je to dovoljno za iznajmljivanje stana, i dalje sam bio odbijen. Čitao sam članke, pokušavao da shvatim šta regruteru treba od pridošlice. Ali uglavnom su podbacili u teorijama. Iz nekog razloga su postavljali pitanja iz vodećih liga koja se ne tiču ​​novajlija.”

Marat je imao više sreće. Sada radi u transportnoj kompaniji i sam je zadužen za iOS odjel, dok nastavlja studije na fakultetu. “Budući da sam ja jedini odgovoran za iOS, moj rad se procjenjuje samo po mojoj sposobnosti da implementiram zadatke koji su mi dodijeljeni, a ne po poznavanju teorije.”

Zajednica

Andrey živi u Nižnjem Novgorodu i kaže da se čak i tamo formirala velika zajednica. Nekada je bio backend developer u Pythonu, ali su ga prijatelji uvukli u razvoj mobilnih uređaja - a sada i sam ohrabruje sve da to rade.

“Globalna zajednica obično komunicira putem Twittera. Ljudi pišu svoje blogove, snimaju videa na Youtube-u, pozivaju jedni druge na podcaste. Jednog dana sam imao pitanje o prezentaciji na kojoj je govorio vođa tima HQTrivia. Ovo je američka kviz igra koju istovremeno igra nekoliko miliona ljudi. Pisala sam mu na Tviteru, on mi je odgovorio, razgovarali smo i zahvalio sam mu se. Zajednica je izuzetno prijateljska, što je odlično.”

Spisak preporučene literaturePočetni nivo:

Srednji nivo:

Napredni nivo:

izvor: www.habr.com

Dodajte komentar