Rekvalifikace na iOS vývojáře

Jan Marek
Liftago Engineering
3 min readFeb 5, 2019

Minulý rok se nám v Liftagu trochu zeštíhlil tým iOS vývojářů. Ze dvou jich postupně zůstalo nula. Hledání nového vývojáře nebylo úspěšné. Řešením nakonec bylo to, že zhruba před půl rokem jsem se z vývoje Android aplikace přesunul na iPhone.

Motivace

Z pohledu firmy má takový interní přesun řadu nesporných výhod. Nemusí najímat nového člověka, stačí ukecat jednoho ze svých lidí. Už ho zná, takže nemusí mít obavu, jak zapadne do týmu. On zná problematiku, a tak není potřeba ji složitě vysvětlovat. Zaučení na novou platformu spotřebuje čas, ale ten by se stejně vynaložil na hledání s nejistým výsledkem. Také se hodí mít člověka, který se vyzná v obou platformách, Android a iOS vývojáři pak spolu mohou snáze spolupracovat.

Co jsem z toho měl já? Rád jsem se naučil něco nového. Je fajn se vzdělávat nejen zdarma, ale dokonce ještě za to dostat řádně zaplaceno. A navíc jsem získal výmluvu proč si koupit jeden z krásných, ale předražených telefonů, od firmy Apple :-D

Jak to probíhalo?

Zvykání si na novou platformu pro mě nebylo úplně nové, protože nativnímu Android vývoji jsem se před switchem na iOS věnoval asi jen rok. Předtím jsem psal hlavně JavaScript.

Po domluvě s CTO Martinem jsem si zašel na jednodenní rychloškolení a bylo. Samozřejmě jsem se nestal hned skvělým iOS vývojářem, ale věděl jsem, jak se začít učit.

Pak jsem hned začal pracovat na nových funkcionalitách v appce, protože byla za Android verzí funkčně ve skluzu, což se vlastně do dneška nepodařilo dohnat.

Mojí první funkcí bylo udělátko, které uživatelům ukazovalo, jestli je služba Liftago v jejich regionu dostupná. Na začátek bylo super, že to má menší rozsah. Po zhruba týdnu jsem to tam namontoval a zároveň jsem se postupně seznamoval se strukturou aplikace. Tady jsem měl velkou výhodu oproti člověku, který by přišel zvenčí. Znal jsem problematiku a věděl, jak vypadá serverové API. Jen jsem se učil Swift a Objective-C místo Liftaga.

Co mě překvapilo?

Přechod z Androidu na iOS byl pro mě určitě těžší než předtím přechod z JavaScriptu na Android.

  • Platforma iOS používá programovací jazyky Objective-C a Swift, přičemž oba obsahují spoustu neobvyklých featur, které v Javě, PHP ani JavaScriptu nenajdete. Pomohlo si vzpomenout třeba na céčko nebo smalltalk z vysoké školy.
  • Překvapivě obtížné pro mě bylo naučit se znova pojmenovávat metody. V applích jazycích se do názvu metody tak nějak počítají i názvy parametrů, například willMove(toParent:).
  • Musí se důsledněji řešit paměť. Objective-C ani Swift nemají garbage collector, ale primitivnější automatic reference counting.
  • Nové návrhové vzory a postupy: delegate pattern, target-action, autolayout, masivní využívání class extensions.
  • Na ovládání IDE Xcode si začínám tak nějak zvykat až teď. S Android Studiem jsem neměl problém, protože produkty JetBrains jsem používal už dříve.

Negativní věci oproti Androidu:

  • Kompatibilita Objective-C a Swiftu je velmi výrazně horší než bezproblémová koexistence Javy a Kotlinu na Androidu. Neexistuje ani dobrý nástroj na automatický převod z Objective-C do Swiftu. Možná ani nejde vyrobit, Objective-C je extrémně benevolentní a Swift extrémně striktní.
  • Xcode je oproti Android Studiu takový vylepšený poznámkový blok, možnosti automatického refaktoringu a podobně jsou o dost slabší.
  • Pro Swift neexistuje ani rozumný mockovací framework, jeho vytvoření brání striktnost jazyka.

Pozitiva oproti Androidu:

  • Zbavil jsem se záludností v Androidích aktivitách a fragmentech.
  • Většina uživatelů iPhonu má maximálně rok starou verzi OS.
  • Neexistují různé uzpůsobené verze OS pro různé výrobce, protože výrobce je jenom jeden.

Co mi pomohlo?

Ze začátku jsem musel každý den načítat spoustu textů na internetu, protože jsem potřeboval vstřebat hromadu nových informací. Hodně mi pomohly (starší) e-booky Objective-C Succinctly a iOS Succinctly, ze kterých jsem se naučil základy. Super je YouTube kanál Seana Allena, který natáčí skvělé tutoriály o programování pro iOS a každé pondělí dává video Swift News o novinkách ve světě iOS vývoje. Nekonečnou studnici moudrosti jménem Stack Overflow ani nebudu zmiňovat.

Jak to vypadá dneska?

Dobrý, dneska už iOS zvládám :-) Tak jako jsme refaktorovali Android appku, tak se teď snažím zlepšit i technický stav iOS aplikace. Stále přichází požadavky na novou funkcionalitu, tak se snažím nezůstat moc pozadu za Androidem, přestože jsem na iOS sám, oproti dvoučlennému Android týmu. Ve volném čase redukuju kousky ze své sbírky krásných červených bugů v Jiře.

Staň se taky iOSákem

Podobný příběh můžeš zažít i ty. V Liftagu by se nám na iOS hodila posila do týmu, protože práce a plánů je hodně. Ideální zájemce už umí dobře programovat, protože ta appka je celkem složitá. Hodí se zkušenosti z frontend vývoje, protože ta frontenďácká práce je nakonec na všech platformách dost podobná. Samotný iOS tě v případě potřeby naučíme.

Pokud by tě taková výzva zajímala, napiš nám prosím zde.

--

--