In dit artikel gaan we bespreken wat er volgens ons nodig is om de komende maanden een iOS-ontwikkelaar te worden.
We richten deze gids volledig op twee groepen mensen: absolute Swift-beginners (Swift is de taal die wordt gebruikt om iOS-apps te coderen) – mensen die nog nooit iets voor iOS hebben gebouwd – en zogenaamde valse beginners – mensen die probeerden Swift eerder te leren, maar bereikten nooit echt hun doel om een fulltime baan te krijgen.
Beschouwenless van uw huidige niveau, is het doel hier hetzelfde. Om je in staat te stellen om te solliciteren naar een junior iOS-ontwikkelaarsrol bij een bedrijf.
We kijken naar de vaardigheden die je moet leren, de cursussen die je kunt volgen, hoe je contact kunt maken met de gemeenschap, veelvoorkomende fouten die mensen maken en meer.
Het beste van alles is dat alles wat we bespreken volledig gratis is, dus u hoeft niets te betalen om mee te doen.
Serieus, veel te veel mensen geloven dat het uitgeven van veel geld hen op het snelle pad naar hun droombaan zal brengen, terwijl vastberadenheid en wilskracht de belangrijkste factoren zijn.
Dit artikel is verdeeld in zeven secties:
- Kernvaardigheden die je moet hebben om een baan te krijgen.
- Uitbreidingsvaardigheden die leuk zijn om te hebben - degenen die je zullen onderscheiden van de rest als je de moeite neemt om ze te leren
- Veelgemaakte fouten die mensen maken wanneer ze proberen te leren.
- De vele gratis bronnen die beschikbaar zijn om u te helpen Swift te leren.
- Hoe u in contact kunt komen met de iOS-ontwikkelgemeenschap.
- Een inschatting van hoe lang het duurt om je doel te bereiken.
- Klaar om te solliciteren voor je eerste baan.
Fundamentele vaardigheden die nodig zijn om een iOS-ontwikkelaar te worden
Wat is het absolute absolute minimum aan vaardigheden dat nodig is om een baan in iOS-ontwikkeling te krijgen?
Er zijn in totaal vijf essentiële vaardigheden:
- Snel programmeren
- SwiftUI
- Netwerken
- Werken met gegevens
- Versiemanagement
Die lijst is om verschillende redenen opzettelijk kort gehouden:
Hoe meer je leert, hoe meer je beseft dat er nog te leren valt, dus het is gemakkelijk om zoveel tijd aan studeren en oefenen te besteden dat je het hoofddoel uit het oog verliest.
Je wilt werken als iOS-ontwikkelaar, niet alleen maar rondhangen om nieuwe dingen te leren!
Het is bijna zeker dat je lid wordt van een team dat al een app heeft waarvan ze willen dat je ze helpt ontwikkelen, dus unless je hebt enorm veel geluk, ze zullen je een heleboel dingen moeten leren wat betreftless.
Als je van tevoren een hele hoop extra onderwerpen probeert te proppen, verspil je waarschijnlijk je tijd.
Twee van die vijf dingen zijn enorm en ingewikkeld, en je zou maanden kunnen besteden aan het proberen om je hoofd eromheen te wikkelen zonder ergens anders naartoe te gaan.
Het belangrijkste is dat als je die vijf dingen goed doet, je een breed scala aan apps kunt maken. Natuurlijk, je code zal niet perfect zijn, maar dat is oké, want de enige manier om geweldige code te schrijven, is door eerst veel slechte code te schrijven.
Laten we de vijf items opsplitsen in kleinere stukken.
1. Snel leren
Swift staat als eerste op de lijst. Dit is Apple's kern programmeertaal. Het heeft geen idee om informatie op het scherm van een iPhone weer te geven of gegevens van internet te downloaden.
Het is gewoon een taal die lijkt op JavaScript of Python. Het is gewoon pure code die je gebruikt om variabelen te maken, functies te schrijven, enzovoort.
Swift is nog maar een paar jaar oud, dus het maakt gebruik van bijna elke geavanceerde taalfunctie die beschikbaar is.
Aan de ene kant betekent dit dat je al het oude gedrag kunt vermijden dat gebruikelijk is in oudere talen zoals C++ en Java. Het betekent ook dat het een hele reeks geavanceerde functies heeft waarvan u kunt profiteren.
En dat is prima. Veel onderdelen van Swift zijn relatief eenvoudig, terwijl je bij andere meer tijd nodig hebt om ze volledig te begrijpen, ervaring en oefening baart kunst.
2. SwiftUI
De tweede vereiste kernvaardigheid is SwiftUI, een Apple framework waarmee we Swift kunnen gebruiken om apps voor iOS, macOS, tvOS en zelfs watchOS te maken.
Dus, terwijl Swift de programmeertaal is, biedt SwiftUI de tools voor: ontwikkelaars om apps te maken, zoals het weergeven van afbeeldingen, tekst, knoppen, tekstvakken, gegevenstabellen en meer.
Voor alle duidelijkheid: SwiftUI is geen vervanging voor Swift - het is een raamwerk dat bovenop Swift is gebouwd en waarmee we apps kunnen maken. Je moet zowel Swift als SwiftUI kennen om te slagen.
Als je dacht dat Swift nieuw was, heb je nog niets gezien!
SwiftUI is een vrij jong framework, het verscheen voor het eerst in 2014 en werd ontwikkeld om de archaïsche Objective C te vervangen.
Ondanks zijn jonge leeftijd heeft de iOS-gemeenschap het van harte omarmd omdat het zo gemakkelijk te gebruiken is.
Apple heeft ook een ouder raamwerk voor het bouwen van iOS-apps genaamd UIKit. Als je een aantal mensen vraagt of je eerst SwiftUI of UIKit moet leren, krijg je verschillende antwoorden.
We denken dat je SwiftUI moet leren en hier is de reden waarom je SwiftUI als een kernvaardigheid zou moeten prioriteren.
SwiftUI is aanzienlijk eenvoudiger dan UIKit, en - er is misschien een kwart van de code nodig om dezelfde resultaten te bereiken als UIKit, en er zijn minder dingen om onderweg te leren.
Dit betekent dat je veel vaart krijgt omdat je dingen sneller kunt bouwen, sneller resultaten kunt zien en die resultaten met meer behendigheid kunt herhalen, wat enorm motiverend is tijdens het leren.
Gemaakt voor Swift
SwiftUI is gemaakt voor Swift en gebruikt taalfuncties om problemen te voorkomen en maximale prestaties te bereiken.
Als u bijvoorbeeld bepaalde gegevens op één scherm van een app wijzigt, zorgt SwiftUI er automatisch voor dat de nieuwe gegevens ergens anders in uw app worden bijgewerkt die ze gebruikt - u hoeft geen code te schrijven om alles zelf gesynchroniseerd te houden, wat doorgaans vrij complex is.
UIKit, aan de andere kant, is geschreven voor Apple's oudere taal, Objective-C, en heeft als resultaat allerlei eigenaardigheden die het gevolg zijn van zijn leeftijd.
SwiftUI is compatibel met alle Apple's platforms, zodat je wat je op iOS hebt geleerd kunt gebruiken om een macOS- of watchOS-app te maken met bijna identieke code.
Functies zoals de Digital Crown zijn natuurlijk exclusief voor een enkel apparaat, de Apple Kijk, maar het overgrote deel van wat je leert, werkt op elk apparaat.
Maar het belangrijkste is dat SwiftUI de richting is waarin het gaat.
Als je een paar jaar geleden naar een baan solliciteerde, zou je waarschijnlijk UIKit moeten kennen, maar het feit dat je dit leest, betekent dat je al veel verder bent in het proces.
Terwijl UIKit vroeger populairder was, is SwiftUI nu het dominante UI-framework.
De grootste bedrijven ter wereld, waaronder Apple zelf gaan nu verder met SwiftUI.
. Apple onlangs widgets in iOS 14 lanceerde, maakten ze het een vereiste dat je SwiftUI gebruikt.
Netwerken en gegevensmanipulatie
De derde en vierde vaardigheid die we noemden, waren netwerken en gegevensmanipulatie. In vergelijking met Swift en SwiftUI zijn deze vrij eenvoudig, of in ieder geval eenvoudig op het niveau dat vereist is om een junior iOS-ontwikkelaarsbaan te krijgen.
Netwerken is het ophalen van gegevens van internet of het verzenden van gegevens van een lokaal apparaat naar een externe server. Op een mobiele app is dit natuurlijk een fundamentele vaardigheid.
Er zijn talloze methoden om dit te bereiken, maar het belangrijkste om te begrijpen is hoe u JSON van een server kunt ophalen.
En hier komt de andere essentiële vaardigheid om de hoek kijken, het werken met data.
Nogmaals, er zijn talloze manieren om gegevens te laden en op te slaan, maar het absolute minimum dat u moet kunnen doen, is de gegevens die u van een server hebt ontvangen met uw netwerkcode omzetten in informatie die uw app kan weergeven.
De derde en vierde kernvaardigheden zijn dus onlosmakelijk met elkaar verbonden. Haal wat gegevens op van een server en converteer deze vervolgens naar informatie die in uw app kan worden weergegeven. Sommige ontwikkelaars maken grapjes dat het schrijven van dit soort code het halve werk is van een iOS-ontwikkelaar, en het is zeker waar dat we er zwaar op vertrouwen.
Version control
De laatste vaardigheid is helemaal niet coderen, het is version control, zoals Git. Nogmaals, je hebt hier niet veel nodig, maar het is belangrijk dat je je code ergens openbaar kunt publiceren, zoals GitHub, zodat recruiters je werk kunnen zien.
Niemand ter wereld begrijpt echt hoe Git werkt, maar dat geeft niet - je moet gewoon genoeg basiskennis hebben om je gegevens veilig op te slaan en samen te werken met anderen.
Dus als die vijf bij elkaar worden opgeteld, zijn er twee enorme - Swift en SwiftUI - evenals drie kleine maar belangrijke.
Als je je gewoon op die vijf dingen kunt concentreren zonder afgeleid te worden, ben je goed op weg naar je eerste baan als iOS-ontwikkelaar.
Dat is alles: dat zijn de vijf essentiële vaardigheden die je volgens mij nodig hebt om een iOS-ontwikkelaar te zijn.
Er zijn duizenden mensen die alleen die vaardigheden hebben en fantastische apps kunnen bouwen en verzenden in de App Store.
Wat komt er na de basis?
Als je eenmaal de vijf kernvaardigheden onder de knie hebt, kun je je eigen apps verzenden en als indie-ontwikkelaar werken, maar ook solliciteren naar junior iOS-ontwikkelingsposities en voor een bedrijf werken als dat is wat je wilt doen.
Er zijn geen andere speciale kwalificaties vereist - spijker gewoon die kernvaardigheden bij en het komt goed.
Als je die vaardigheden echter onder de knie hebt en verder wilt gaan, zijn er nog vijf vaardigheden die we je aanraden te leren. Dit zijn de vaardigheden die je van een goede naar een fantastische positie zullen stuwen - je wordt nog beter inzetbaar en het scala aan apps dat je kunt bouwen, wordt nog verder uitgebreid.
De capaciteiten zijn als volgt:
- UIKit
- Kerngegevens
- Validatie
- Testen
- Software architectuur
- multithreading
Net als voorheen willen we elk van deze in meer detail bespreken, zodat u begrijpt waarom we denken dat ze belangrijk zijn - en waarom we ze beschouwen als aanvullende vaardigheden in plaats van kernvaardigheden.
UIKit
Ten eerste is er UIKit. Dit is Apple's oudere gebruikersinterfaceframework, dat sinds 2008 wordt gebruikt voor app-ontwikkeling - het is 14 jaar oud terwijl ik dit schrijf, wat oud is in softwaretermen. Maar dat betekent niet dat UIKit slecht is. Sterker nog, als je gewend raakt aan hoe het werkt, zul je verrast zijn hoe elegant het kan zijn.
Er zijn tal van redenen waarom UIKit de moeite waard is om te leren, waaronder:
Honderdduizenden apps zijn al geschreven in UIKit, dus als je lid wordt van een bedrijf met een grote, gevestigde app, zul je vrijwel zeker UIKit-code moeten schrijven om die app te onderhouden.
UIKit is veel krachtiger dan SwiftUI - er zijn veel dingen die u in UIKit kunt doen die momenteel niet mogelijk zijn in SwiftUI.
Met behulp van Auto Layout-technologie kunt u uiterst nauwkeurige lay-outs maken.
Als u problemen ondervindt met uw code, heeft UIKit meer oplossingen dan SwiftUI, simpelweg omdat het al veel langer bestaat.
Dit alles zorgt ervoor dat UIKit fantastisch klinkt, dus waarom heb ik er een uitbreidingsvaardigheid van gemaakt in plaats van een kernvaardigheid?
Omdat UIKit ook problemen heeft:
Bijna alles is moeilijker te doen in UIKit dan in SwiftUI, waarbij sommige taken honderd keer, zo niet meer, code vereisen.
SwiftUI is speciaal ontworpen voor moderne iOS-ontwikkeling, dus het doet veel van het zware werk voor je.
Omdat UIKit niet in Swift is geschreven, heeft het veel functies die SwiftUI niet heeft - veel impliciet uitgepakte opties, code markeren met een speciaal @objc-attribuut om het beschikbaar te maken voor de Objective-C-onderbuik van UIKit, en de noodzaak om protocollen en gedelegeerden te gebruiken om eenvoudige gegevens weer te geven.
Niets aan automatische lay-out is "automatisch" - sterker nog, als u ooit een complexe lay-out probeert te bouwen, kunt u nachtmerries krijgen over automatische lay-out. Het is buitengewoon slim, maar het is op sommige plaatsen ook extreem moeilijk.
En daarom beschouwen we UIKit als een uitbreidingsvaardigheid: het kost aanzienlijk meer tijd en moeite om te leren dan SwiftUI, wat betekent dat het veel meer vastberadenheid vereist - je moet het echt willen leren, anders raak je in de war , verveeld, boos of mogelijk alle drie.
Natuurlijk heeft SwiftUI niet alle functies van UIKit, maar het stelt je in staat om snel vooruitgang te boeken en momentum te krijgen voordat je doorgaat naar UIKit.
Kerngegevens beheren
Kerngegevens, Apple's raamwerk voor het werken met applicatiegegevens, is de tweede uitbreidingsvaardigheid die ik noemde.
We noemden netwerken en werken met gegevens in het gedeelte over kernvaardigheden, en het is waar. Met die vaardigheden kun je alles wat je maar wilt van een server halen en in je app weergeven.
Core Data gaat nog een stap verder door u in staat te stellen die gegevens te manipuleren zodra u deze hebt verkregen, zoals zoeken naar specifieke waarden, het sorteren van de resultaten en meer, allemaal zeer efficiënt.
Het kan ook eenvoudig verbinding maken met iCloud, zodat de gegevens van uw gebruikers op al hun apparaten worden gesynchroniseerd.
Core Data heeft een hele reeks nadelen, waarvan de meest ernstige is dat het niet altijd prettig is om mee te werken. Core Data is bijna net zo oud als UIKit, en hoewel het goed werkte in Objective-C, voelt het niet zo natuurlijk aan in Swift.
Het integreert goed met SwiftUI, waardoor het aanvoelt less vreemd, maar het is nog steeds een verrassend complex onderwerp.
Net als UIKit is Core Data enorm populair: er zijn honderdduizenden apps mee gebouwd en het wordt in veel grote en kleine bedrijven gebruikt.
Core Data, zoals UIKit, is extreem krachtig, en hoewel je de belangrijkste delen ervan in je eigen code zou kunnen recreëren, waarom zou je dat dan doen?
Uw code testen
De derde vaardigheid op mijn lijst met extensies is testen. Speciale code schrijven om ervoor te zorgen dat uw hoofdapp-code werkt zoals verwacht.
Tests stellen ons in staat om ervoor te zorgen dat onze code correct werkt, en nog belangrijker, dat deze correct blijft werken, zelfs nadat we er belangrijke wijzigingen in hebben aangebracht.
Als u bijvoorbeeld 500 regels code wijzigt om een nieuwe functie te implementeren en al uw tests slagen, bent u klaar om te gaan.
Testen is daarom van cruciaal belang en zal u helpen bij het schrijven van software van hogere kwaliteit.
Dus waarom wordt het beschouwd als een uitbreidingsvaardigheid in plaats van een kernvaardigheid?
Hiervoor zijn drie redenen:
De iOS-gemeenschap als geheel is verschrikkelijk in testen, om welke historische redenen dan ook. Veel grote apps hebben helemaal geen tests, en tragisch genoeg zijn een aantal senior iOS-ontwikkelaars bijna trots dat ze nooit tests schrijven.
Als je kijkt naar alle geweldige dingen die je kunt maken met Apple's tools en frameworks, lijkt het schrijven van tests niet zo leuk in vergelijking.
Bij het solliciteren naar een baan, Swift kennen en AppleDe belangrijkste kaders zullen altijd nuttiger zijn dan te weten hoe je tests moet schrijven.
Bedrijven willen liever dat je weet hoe je SwiftUI, UIKit of een van de andere grote slagmensen moet gebruiken, omdat testen een veel kleiner onderwerp is - er zijn lang niet zoveel dingen om te leren.
Testen is dus belangrijk, testen is belangrijk, en als je een geweldige algehele ontwikkelaar wilt zijn, moet je leren hoe je geweldige tests schrijft. Maar pas nadat je de basisprincipes van app-ontwikkeling onder de knie hebt - nadat je enig succes hebt gehad, de kick hebt gevoeld om je app live in de App Store te hebben en het testen onder de knie hebt.
Software architectuur
De vierde uitbreidingsvaardigheid die we willen bespreken, is software-architectuur, die eigenlijk gaat over hoe we code schrijven.
Je gaat een vreselijke code schrijven als je net begint.
Dat is oké, want zo leer je. Je begint niet goed - je wordt goed door lange tijd slecht te zijn en door ervaring en blootstelling betere manieren te leren om dingen te doen.
Het punt is dat je bij je slechte code blijft totdat je weet hoe je het beter kunt doen. Dat is waar software-architectuur om de hoek komt kijken. Kijken naar beproefde technieken om uw code te structureren om het lezen, gebruiken, wijzigen en onderhouden op de lange termijn gemakkelijker te maken.
Deze technieken zijn soms afhankelijk van de manier waarop Swift werkt: taalfuncties die kunnen worden gebruikt om betere code te schrijven.
Er zijn echter tal van andere technieken die in elke programmeertaal werken en die gewoonlijk ontwerppatronen worden genoemd.
Een belangrijk aspect van deze vaardigheid die u moet leren, is hoe u uw code kunt opsplitsen.
Als u bijvoorbeeld één scherm in uw app maakt, kan dit een inlogknop, een afbeeldingengalerij en een lijst met vrienden bevatten.
U moet echter idealiter elk van deze onderdelen scheiden - een component voor een inlogknop, een component voor een afbeeldingsgalerij en een component voor een vriendenlijst - zodat u al deze componenten opnieuw kunt gebruiken in andere delen van uw app.
Software-architectuur is veel subjectiever dan de andere vaardigheden die we tot nu toe hebben besproken. Voor de anderen, zoals SwiftUI, kun je redeneren: "Nou, ik weet hoe ik X, Y en Z moet doen, dus ik ben ervan overtuigd dat ik een goede SwiftUI-ontwikkelaar ben."
Software-architectuur is een zeer breed onderwerp en er is vaak geen voor de hand liggende "juiste" manier om een probleem op te lossen, dus de beste maatstaf hiervoor is dit: kijk je terug op je code van zes maanden geleden, een jaar geleden enzovoort .
Het schrijven van slechte code is acceptabel, zolang het je dichter bij het schrijven van betere code brengt.
Je zult je zeker op sommige plaatsen op je hoofd krabben als je terugkijkt op code die je vijf jaar geleden hebt geschreven, omdat je nu meer weet dan toen - en zo hoort het ook.
multithreading
De laatste uitbreidingsvaardigheid die we zullen bespreken, is multithreading, wat de gewoonte is om je code meer dan één ding tegelijk te laten doen.
Multithreading kan erg lastig zijn omdat het voor onze hersenen moeilijk te begrijpen is. Als je code één ding tegelijk doet, kunnen we er lineair over nadenken, maar als er twee of drie dingen tegelijkertijd gebeuren, die elkaar mogelijk overlappen, kan dat je denken echt in de war sturen.
Dus hoewel multithreading een geweldige vaardigheid is om als uitbreidingsvaardigheid te hebben, moet je voorzichtig zijn. Je doel zou moeten zijn om net genoeg van de concepten en code te begrijpen om het goed te laten werken zonder te ver te gaan.
Om eerlijk te zijn, geloven veel ontwikkelaars dat multithreading hun code onmiddellijk drie of vier keer sneller zal laten werken.
Hoewel dit in sommige gevallen waar is, zal uw code in veel andere gevallen zelfs langzamer werken en zult u nu te maken krijgen met alle extra codecomplexiteit.
“Mijn specifieke aanbeveling is dat je het schrijven van asynchrone/gelijktijdige code zoveel mogelijk vermijdt. Dit lijkt misschien vreemd in 2018, maar de kosten in complexiteit en prestaties zijn hoog.
Dus leer een beetje over hoe multithreading werkt in Swift om aan te tonen dat je de concepten en implementatie begrijpt, maar ga niet overboord!”
David Smit - Apple SwiftUI-team
Veelvoorkomende fouten die nieuwe iOS-ontwikkelaars maken
Op dit punt hebben we alle kern- en uitbreidingsvaardigheden opgesomd die je nodig hebt om als fulltime iOS-ontwikkelaar te werken.
We willen ook enkele van de meest voorkomende fouten bespreken die mensen maken tijdens het leren, omdat ik ze de hele tijd zie en weet hoe ze mensen terugdringen.
Er zijn zeven grote problemen waarmee mensen worden geconfronteerd.
- Alles onthouden
- glanzend object syndroom
- Lone wolf leren
- Gebruik maken van bètasoftware
- Afhankelijk van Appledocumentatie
- Verzanden in Objective-C
- Gericht op andere talen
Laten we ze allemaal een voor een doornemen.
Stop met proberen alles te onthouden
Het eerste en verreweg het meest voorkomende probleem dat mensen tegenkomen, is proberen alles te onthouden - een tutorial lezen en geloven dat ze alles uit hun hoofd moeten onthouden.
Niemand onthoudt alles. Niemand komt in de buurt om alles te onthouden. Zelfs als u alleen kijkt naar de API's die zijn gepubliceerd door Apple, de stukjes code die we kunnen gebruiken om onze apps te bouwen, moeten er meer dan honderdduizend beschikbaar zijn.
Zelfs als je het beperkt tot de kerncomponenten van app-ontwikkeling, kijk je nog steeds naar enkele honderden - allemaal werkend op een zeer precieze manier die veel leren vereist om te gebruiken.
In plaats daarvan leer je hoe je iets nieuws moet doen en vergeet je meteen hoe je het opnieuw moet doen.
Dus je zoekt het op, gebruikt het opnieuw en vergeet het dan meteen. Dus je zoekt het een derde keer op en gebruikt het, en deze keer vergeet je het meestal - sommige delen blijven je bij.
Deze cyclus gaat oneindig door, waarbij je elke keer naar een zelfstudie of een andere referentiegids moet verwijzen, totdat de basisprincipes in je geest zijn geworteld tot het punt waarop je het kunt doen zonder iemand anders te raadplegen.
Als je het nog niet wist, is vergeten een belangrijk onderdeel van leren.
Elke keer dat je iets vergeet en het opnieuw leert, dringt het dieper en dieper in je hersenen door. Wanneer je iets opnieuw leert, maken je hersenen nieuwe verbindingen met andere dingen die je hebt geleerd, waardoor je meer begrijpt over de context van wat je probeert te doen.
En elke keer dat je opnieuw leert, geef je je hersenen een signaal dat dit specifieke onderwerp belangrijk genoeg is om op te slaan in het langetermijngeheugen.
Maar als je alles wilt onthouden, zul je het moeilijk krijgen.
Maak je in plaats daarvan geen zorgen over het vergeten van dingen. Weten waar je ze moet opzoeken, is veel belangrijker dan het onthouden van specifieke Swift-code om iets te bereiken.
Als je iets vergeet en het opnieuw moet leren, beschouw het dan als een goede zaak - die informatie zal dieper in je doordringen de tweede, derde en tiende keer dat je het leert, dus je helpt je hersenen.
Vermijd het glanzende object-syndroom
Het op een na meest voorkomende probleem is het 'glimmende-objectsyndroom', waarbij ze een tutorialserie vinden die goed voor hen werkt en vooruitgang beginnen te boeken, maar na een week of twee merken ze een andere tutorialserie op die ze willen volgen en springen ze daar naartoe. dat in plaats daarvan.
Het probleem hier is dat veel aspecten van het leren van iets oninteressant zijn. Dat is niet per se de schuld van de leraar.
Het is gewoon een feit van leren coderen - sommige dingen geven je met weinig moeite geweldige resultaten, terwijl andere veel meer tijd vergen om te begrijpen, geen mooie resultaten opleveren of slechts een onderdeel zijn van een groter concept.
Wanneer je deze steile leercurves raakt, treedt het glanzende objectsyndroom in werking - met zoveel gratis tutorials beschikbaar, kun je naar een van hen springen en opnieuw beginnen, en je bent terug in het ondiepe gedeelte van het zwembad, waar je gemakkelijker delen kunt behandelen je hebt het al geleerd.
Maar, nietless de originele cursus koos een ongebruikelijk onderwerp om te behandelen, je zult het waarschijnlijk uiteindelijk moeten leren, en je stelt het onvermijdelijke alleen maar uit.
Houd rekening met het glimmende-objectsyndroom: als u een probleem tegenkomt, vraag dan iemand anders om hulp en volhard in plaats van over te schakelen.
Doe het niet alleen
Over iemand anders vragen gesproken, het derde probleem waar we mensen tegenaan zien lopen is wanneer ze helemaal eenzaam worden met hun leren - ze denken dat ze volledig in staat zijn om zelf iOS-apps te leren bouwen met Swift en geen hulp van anderen nodig hebben .
Deze methode werkt voor een zeer klein aantal mensen, meestal degenen met uitgebreide ervaring met andere programmeertalen of platforms.
Voor de overgrote meerderheid van de mensen is leren op deze manier echter een vreselijke ervaring - elke fout of misverstand duurt vijf keer zo lang om op te lossen, het is heel gemakkelijk om de motivatie te verliezen en je mist veel inspiratie door te kijken anderen slagen.
Als je een natuurlijke 'eenzame wolf'-leerling bent, raden we je aan om je manier van doen te veranderen.
Deel wat je leert, maak contact met anderen die leren en ontwikkel de gewoonte om vragen te stellen.
U zult niet alleen een fantastische gemeenschap van leerlingen ontdekken die u zullen steunen en aanmoedigen, maar u zult ook geïnspireerd raken door hun werk en hen op uw beurt inspireren met dat van u. Het is volledig transformerend.
Gebruik geen bètaversies
Het vierde grote probleem is wanneer mensen aandringen op het gebruik van bètaversies van Apple's ontwikkeltools.
Elk jaar, Apple brengt een nieuwe iOS, een nieuwe macOS en andere producten uit, die altijd spannende nieuwe dingen opleveren die we kunnen proberen. Het is normaal dat mensen het nieuwste en beste willen leren, vooral als ze weten dat Swift een lange geschiedenis van verandering heeft.
Wanneer mensen echter proberen te leren met bètasoftware, lopen ze tegen een aantal problemen aan:
Omdat tutorials niet zijn bijgewerkt voor de bètaversie, is het niet altijd mogelijk om hun instructies te volgen of mislukken.
Bugs komen vaak voor in bèta's, vooral die welke zijn vrijgegeven voor grote iOS-updates.
Apple's bètaframeworks hebben tijd nodig om te stabiliseren, wat betekent dat code die in bèta 1 werkte, mogelijk niet werkt in bèta 3.
Dus hoewel het opwindend is om nieuwe dingen te leren en je misschien denkt dat je een voorsprong hebt op het spel met nieuwe functies, geloof me: het is het niet waard.
Gebruik altijd de meest recente openbare releases van Apple's ontwikkelaarstools totdat u er vertrouwd mee bent.
Vertrouwen op officiële documentatie
Het vijfde grote probleem waarmee mensen worden geconfronteerd wanneer ze proberen te leren, is vertrouwen op Apple's documentatie.
AppleHet team van ontwikkelaarspublicaties werkt hard om zoveel mogelijk te documenteren vanuit de enorme reeks frameworks van het bedrijf, maar hun belangrijkste taak is het schrijven van referentiemateriaal - dingen die je leest wanneer je een specifiek stuk van hun tools probeert te gebruiken - in plaats van het creëren van een gestructureerde cursus om u te helpen leren iOS-apps te bouwen.
We zijn de tel kwijtgeraakt hoe vaak mensen me hebben gevraagd: "Hoe kan ik Swift leren?" alleen om te horen: "Lees Apple's Swift-referentiegids."
Deze aanpak werkt voor sommige mensen.
Voor de meeste mensen is het echter hetzelfde als proberen een menselijke taal te leren door een woordenboek te lezen. Het is bedoeld om alles in de taal te behandelen, in plaats van u de belangrijkste onderdelen te leren en toe te passen.
Dus, als je uitgebreide ervaring hebt met andere talen, lees dan AppleDe naslaggidsen kunnen nuttig zijn, maar als je net begint, wil je ze misschien na een paar maanden nog eens bekijken.
Verzanden in Objective-C
Het zesde grote probleem waarmee mensen worden geconfronteerd, is het proberen om Objective-C te leren. Dit was Apple's primaire ontwikkeltaal vóór de introductie van Swift, en hoewel er overblijfselen zijn in sommige oude codebases, is de overgrote meerderheid van de bestaande code nu Swift, en bijna alle nieuwe code is ook Swift.
Sommige mensen hebben jaren besteed aan het schrijven van Objective-C vóór Swift en gaan er echt van houden, maar het heeft een extreem steile leercurve en mist de meeste belangrijke functies van Swift.
. Apple kondigde voor het eerst de iPhone SDK aan, veel mensen waren geschokt door Objective-C omdat het anders was dan al het andere dat tot nu toe was gezien.
Objective-C en Swift hebben bijna niets gemeen voor een beginner.
Ja, ze delen hetzelfde Apple kaders, maar nietless je bent van plan om te werken bij Apple – het enige bedrijf ter wereld dat nog steeds grote hoeveelheden Objective-C produceert – je moet Objective-C met rust laten en je volledig op Swift concentreren.
Andere talen negeren
De laatste grote fout die mensen maken bij het leren van Swift is andere talen afdoen als inferieur aan Swift.
Het meest voorkomende doelwit is JavaScript, maar je zult ook zien dat mensen zich richten op Python, Java, Ruby, Go en andere talen, en waarvoor? Het is geen race, mensen - die talen hoeven niet te verliezen om Swift te laten winnen.
Swift en SwiftUI zijn zelfs vaak geïnspireerd door andere talen en frameworks - wanneer nieuwe taalfuncties worden overwogen, kijkt de gemeenschap naar vergelijkbare implementaties in Rust, Python, Haskell en andere talen, en SwiftUI wordt sterk beïnvloed door JavaScript React kader.
Mensen in de gemeenschap beweren dus dat SwiftUI JavaScript-vrij is of iets dergelijks - niets is minder waar.
Bronnen en cursussen voor iOS-ontwikkeling
Nu voor het deel waarin de meeste mensen geïnteresseerd zijn: wat zijn de feitelijke bronnen die u zou moeten gebruiken om Swift, SwiftUI en meer te leren - om uw doel om iOS-ontwikkelaar te worden te bereiken?
Er zijn er veel en de Swift-gemeenschap heeft zo'n diverse groep mensen die hun kennis delen.
In dit artikel gaan we ons echter concentreren op gratis bronnen - plaatsen waar je kunt leren om fantastische apps te bouwen zonder een cent uit te geven.
Dit komt door twee factoren:
- Sommige mensen zijn van mening dat hoe hoger de prijs van een Swift-cursus, hoe beter deze moet zijn, zodat ze exorbitante prijzen betalen zonder voldoende voordeel te ontvangen.
- Veel sites, zoals Udemy, vertrouwen op de verkoop van een groot aantal goedkope cursussen, ervan overtuigd dat als je de ene niet leuk vindt, je gewoon een andere koopt. Ze hebben ook een bedrijfsmodel dat vergelijkbaar is met dat van Steam, in die zin dat er constante verkopen zijn, waardoor mensen worden aangemoedigd een groot aantal cursussen te verzamelen om 'op een dag' te studeren.
Dus hier vermelden we alleen gratis bronnen, zodat u geen honderd dollar of meer uitgeeft aan uw eerste cursus, en geen dozijn goedkope cursussen koopt met de gedachte dat u een ontwikkelaar wordt.
Zelfstudies
Beginnen, Apple heeft twee belangrijke bronnen die u kunnen helpen. De eerste is de Teaching Code-website, die bronnen voor studenten en docenten bevat om Swift van de grond af te leren, helemaal tot aan professionele certificeringen.
Hun curriculum is uitgebreid, dus het kan even duren om het beste startpunt voor jou te vinden, maar eenmaal daar zul je genoeg te ontdekken hebben.
Tweede Apple heeft een reeks SwiftUI-zelfstudies die u door het proces van het maken van echte apps leiden. Deze leren Swift echter niet, dus je moet eerst hun Swift-gerichte curriculum voltooien.
Apple publiceert ook een gids specifiek voor de Swift-programmeertaal, maar de kans is groot dat het niet voor u werkt - het is bedoeld als referentie in plaats van als een gestructureerde tutorial, dus het is vrij intensief lezen.
Wat Apple's tutorials niet doen is een poging om een gestructureerde leermethode te bieden.
YouTube en andere sites
Er zijn enkele uitstekende YouTube-video's die je door de basisprincipes van SwiftUI leiden, zoals:
, waarin hij je vanaf het begin door het proces leidt om een gokspel te maken. legt vijf SwiftUI-concepten uit die iedereen zou moeten leren wanneer ze beginnen met programmeren. die zowel Swift als SwiftUI bevat tijdens het beantwoorden van vragen van het publiek.Er zijn andere sites met hoogwaardige Swift- en SwiftUI-tutorials, waaronder BLCKBIRDS, Ray Wenderlich, Donny Wals, Antoine van der Lee en meer. We moedigen mensen echt aan om verschillende bronnen te bezoeken en te ontdekken wat voor hen werkt.
App-gebaseerd onderwijs
Als je liever via apps leert, raad ik er twee aan die beide volledig gratis zijn. De eerste is Apple's Swift Playgrounds-app, waarmee je Swift rechtstreeks vanaf je iPad of Mac kunt leren.
Er zijn veel interactieve lessons gericht op kinderen, maar er zijn ook enkele meer geavanceerde lessdie u zullen helpen uw vaardigheden te verbeteren.
De andere app heet Unwrap en is door mij gemaakt. Unwrap is compatibel met alle iPhones en iPads en stelt je in staat om de basisprincipes van Swift te leren, beoordelen en oefenen door middel van video's, tests en andere tools. Het behandelt alle basisprincipes van Swift en vormt een perfecte aanvulling op het 100 Days of SwiftUI-curriculum.
Oplossingen verkrijgen
Ten slotte moet u leren hoe u online antwoorden kunt vinden. Dit zou kunnen betekenen dat ik naar Stack Overflow ga, maar ik hoop van niet, want het is geen bijzonder aangename plek.
Stel in plaats daarvan vragen op de Hacking with Swift-forums, je favoriete Slack-groep, de iOS Dev Happy Hour-sessies, Twitter en elders - we zijn een oprecht warme, gastvrije gemeenschap met veel mensen die je graag willen helpen bij het bereiken van je doelen.
Betrokken raken bij de gemeenschap
Nu we het toch over onze gemeenschap hebben, ik zou graag een heel belangrijk onderwerp willen bespreken dat je zal helpen mensen in vergelijkbare functies als jij te ontmoeten, effectiever te leren en vacatures te vinden - het is overal een win-winsituatie.
Het onderwerp is verbinding maken met de iOS-ontwikkelgemeenschap. Dit houdt in dat u weet waar u nieuws en interessante ideeën kunt vinden, waar u mensen kunt ontmoeten en tips kunt delen en waar u terecht kunt voor vragen.
Wie moet ik volgen op Twitter?
Laten we beginnen met de eenvoudigste, namelijk het gebruik van Twitter. Twitter is een fantastische manier om dingen te volgen die je interesseren, en er zijn een paar mensen die ik ten zeerste zou aanbevelen in het geval van iOS-ontwikkeling.
Ja, deze mensen twitteren over hun eigen werk, maar ik denk dat ze geweldig zijn om te volgen omdat ze ook veel tweeten over andermans werk – ze helpen je verschillende perspectieven te zien op een bepaald onderwerp, en ze delen allerlei interessante ideeën en dingen om uit te proberen.
Hier zijn 9 mensen die we je aanraden te volgen op Twitter:
Sean Allen besteedt veel tijd aan YouTube om Swift- en iOS-ontwikkelingsvideo's te maken, maar hij werkt ook heel hard om het werk van andere mensen te verspreiden - hij doet echt geweldig werk door iedereen elke week iets nieuws te laten ontdekken.
Antoine van der Lee heeft een iOS-ontwikkelingswebsite op https://www.avanderlee.com, maar hij deelt ook enkele geweldige links naar nuttige bronnen die hij op GitHub, nieuwsbrieven en meer vindt.
Novall Khan werkt voor Apple, maar dat weerhoudt haar er niet van om regelmatig video's te plaatsen over waar ze mee bezig is, wat ze leert, waar ze moeite mee heeft en meer - ze is echt inspirerend.
Steve Troughton-Smith staat bekend om zijn eerdere werk dat aan iOS sleutelde, maar je moet hem echt volgen vanwege de fantastische reeks links die hij deelt naar indrukwekkend werk. Ik vind het leuk hoe hij de ontwikkelingsvoortgang van zijn eigen apps deelt, zodat je ze van begin tot eind kunt zien groeien.
Kaja Thomas is een van de bekendste indie-ontwikkelaars van onze community, en ze is uitgelicht door Apple vaker dan ik kan tellen. Ze tweet vaak over haar eigen werk en presentaties, maar ze deelt ook links naar boeken die ze leest, artikelen die ze heeft gelezen en andere bronnen.
Majid Jabrayilov schrijft niet alleen een fantastisch Swift- en SwiftUI-blog, maar hij is ook een bandless promotor van anderen - als je hem volgt op Twitter, krijg je idee na idee opgestuurd vanuit een grote verscheidenheid aan bronnen.
Donny Wals schrijft een Swift-blog en, meer recentelijk, boeken over Combineren en Core Data, maar hij moedigt mensen ook aan om op Twitter te delen waar ze mee bezig zijn. Zelfs als je dat draadje maar één keer per week leest, word je geïnspireerd om nieuwe dingen te proberen, dus je moet Donny zeker volgen.
Zomer Panage werkt Apple's toegankelijkheidsteam, dus hoewel ze enigszins beperkt is in wat ze kan zeggen, tweet ze wel veel eersteklas tips van zichzelf en anderen die iedereen kan gebruiken om betere apps te bouwen.
Natascha Fadeeva schrijft een blog over Swift- en iOS-ontwikkeling, inclusief artikelen over Core Data, interviewvragen en andere onderwerpen, maar ze twittert ook over dingen die ze elders vindt.
Nieuwsbrieven en meer
Twitter is natuurlijk niet de enige plek om in contact te blijven met de gemeenschap; er zijn ook nieuwsbrieven, Slack-groepen, Zoom-meetups, forums, conferenties en andere locaties. Ik wil je niet te veel vervelen, dus ik zal er hier een opsommen:
Je kunt niet fout gaan met iOS Dev wekelijks voor nieuwsbrieven. Terwijl ik dit schrijf, heeft het net 500 nummers gepasseerd, één per week, die je volgens mij alles vertellen wat je moet weten over hoe belangrijk het is.
Als u op een webforum wilt posten, https://www.hackingwithswift.com/forums is best goed. Er zijn veel categorieën om uit te kiezen, en iedereen, let opless van ervaringsniveau, is welkom om deel te nemen. Je bent meer dan welkom om je beginnersvragen hier te plaatsen, geloof me!
Elke maand is de iOS-ontwikkelaar Happy Hour wordt gehouden op een Zoom-groepsgesprek met meer dan 300 mensen, maar het echte plezier zit in de breakout rooms, waar je met groepen van 6 tot 8 personen tegelijk kunt chatten. Het is erg leuk en je leert nieuwe mensen kennen.
Het bijwonen van conferenties was moeilijk vanwege de pandemie van het coronavirus, maar Apple's WWDC was vorig jaar een enorm succes en ging gepaard met een hele reeks gemeenschapsevenementen. Een groep vrienden en ik hebben een . gemaakt GitHub-repository om alle andere evenementen, artikelen en andere dingen die zijn gebeurd bij te houden - neem een kijkje!
Tot slot, als je liever chat op Slack waar je sneller antwoorden kunt krijgen, kun je gratis deelnemen Hacken met Swift Slack-groep en word lid van een van de Swift, SwiftUI en andere kanalen.
Hoeveel tijd kost het om iOS te leren?
Dit is een veelgestelde vraag van mij: hoe lang duurt het om door te gaan van niets weten over Swift naar het verkrijgen van een iOS-ontwikkelaarspositie op instapniveau?
Het voor de hand liggende antwoord is "het hangt ervan af", maar dat zou in dit geval een agent zijn, dus laat me het op een paar verschillende manieren aanpakken.
De gouden regel is om niet te haasten
Allereerst kun je niet meerdere cursussen tegelijk volgen. Weet je nog wat ik zei over het 'glanzende object-syndroom'? Ja, veel mensen denken dat ze twee cursussen tegelijkertijd kunnen volgen, en dan vier, vijf of zelfs meer uren per dag kunnen proppen en toch een goed begrip hebben van de onderwerpen die ze behandelen.
Voor alle duidelijkheid, ik heb mensen dit zo vaak zien proberen en het mislukt altijd. Elke keer - het werkt nooit, en ik hoor mensen zeggen dat het komt omdat de tutorials slecht waren, of omdat Swift te moeilijk was, of om letterlijk een andere reden dan proberen door iets ingewikkelds te haasten.
Swift leren kan soms moeilijk zijn, en het leren bouwen van apps vereist veel vallen en opstaan, fouten maken en verkeerde afslagen nemen. En dat is prima – het is beter dan prima, het is fantastisch!
Want elke keer dat je iets probeert, een fout maakt of een verkeerde afslag neemt, leer je gaandeweg iets en wanneer je uiteindelijk tot de oplossing komt, zul je het veel beter begrijpen.
Dus, de TL;DR hier is: haast je niet - neem de tijd, wees niet bang om raaklijnen die zich voordoen te verkennen, wees niet bang om met je projecten te experimenteren en wees niet bang om ergens op terug te gaan je eerder hebt geleerd en leer het opnieuw als dat nodig is.
Wat is jouw opleidingsachtergrond?
Ten tweede moet u rekening houden met uw achtergrond voordat u naar Swift komt. Zie je, het leren bouwen van apps vereist een breed scala aan vaardigheden, en als je aan tafel komt met een schat aan voorkennis zoals version control, datastructuren, algoritmen en meer, heb je een aanzienlijk voordeel ten opzichte van degenen die nieuw zijn in de informatica in het algemeen, evenals Swift en andere Apple kaders.
Dus, hier zijn een paar mogelijkheden voor waar je nu zou kunnen zijn:
Als je een diploma informatica hebt, ben je al bekend met veel van de basisprincipes van CS die nodig zijn om met Swift aan de slag te gaan. Variabelen, arrays, loops, arrays, sets, functies, OOP en andere concepten zullen nuttig zijn in Swift, net als al je werk met datastructuren en algoritmen. Dit kan je 4-6 maanden studietijd besparen, afhankelijk van de vakken die je hebt gestudeerd, en het geeft je ook een voordeel bij het solliciteren bij veel bedrijven.
Als je geen CS-diploma hebt, maar een coderingsbootcamp hebt gevolgd, heb je veel van de basisprincipes die je nodig hebt om met Swift aan de slag te gaan. Dit geeft je niet hetzelfde voordeel als je solliciteert naar banen bij die bedrijven, omdat ze vaak een diploma verwachten alleen maar om een vakje op hun lijst met willekeurige vereisten aan te vinken, maar het zal je toch drie of vier maanden schelen.
Als je geen CS-diploma hebt en geen bootcamp hebt gevolgd, maar je hebt in je vrije tijd gecodeerd, bespaar je wat tijd - waarschijnlijk twee maanden of zo, afhankelijk van de taal of frameworks die je gebruikte .
Wat als je geen CS-diploma hebt, geen bootcamp hebt gevolgd en geen eerdere codeerervaring hebt? Dan schat ik 9 tot 12 maanden om van niets naar een baan op instapniveau te gaan. Ja, dat kan een heel jaar werk zijn bovenop wat je huidige fulltime baan ook is, en dat is gewoon om je eerste baan als iOS-ontwikkelaar te krijgen.
Is het altijd hetzelfde jaar? Nee. Als je al ervaring hebt, kun je die tijd verkorten tot 1 tot 6 maanden, zoals ik eerder al zei. Als je aan beide kanten de beste cijfers neemt - 9 maanden van niets naar een baan op instapniveau, plus 6 maanden voor het hebben van een CS-diploma - betekent dat dat je in slechts 3 maanden kunt worden aangenomen, wat ongelooflijk is.
Je denkt misschien dat het onmogelijk is om binnen drie maanden je eerste baan te vinden, maar dat is niet zo. Heck, ik ontmoette iemand die mijn 100 Days of Swift-cursus volgde en een baan kreeg vóór dag 50 - ze hadden al genoeg geleerd over app-ontwikkeling in less dan twee maanden omdat ze zich hebben ingespannen om elke dag te laten tellen.
Je hebt dus geen CS-diploma of bootcamp nodig, maar je moet wel bereid zijn om hard te werken.
Gun jezelf wat speelruimte
Het derde punt dat ik wil maken voordat we verder gaan, is dat "het zo lang duurt als het duurt". Ik hou van een tekst van John Lennon die zegt: "Het leven is wat er gebeurt als je bezig bent andere plannen te maken."
Het is fantastisch als je grote leerplannen hebt en grote dromen voor de baan die je wilt, maar soms ben je moe, soms ben je gestrest, soms lekt je dak of moet je hond naar de dierenarts of hebben je kinderen extra nodig helpen met hun huiswerk, of wat dan ook, en dat is gewoon het leven.
Wees dus niet te streng voor jezelf als je achterloopt met je leerschema, of als je merkt dat je een paar dagen of zelfs een paar weken mist, enzovoort - zolang je veerkrachtig bent, krijg je daar.
Dat is fantastisch als je heel hard werkt en na 50 dagen een baan krijgt – goed gedaan! Als je er 500 dagen voor nodig hebt, is dat ook fantastisch en mag je net zo trots op jezelf zijn. Ach, als je er vijf jaar voor nodig hebt, weet ik zeker dat het niet is wat je wilde, maar het eindresultaat is hetzelfde, en dat is het enige dat telt.
Klaar om te solliciteren
Last but not least, als je een beetje verder bent in je iOS-leertraject en erover nadenkt om je eerste baan op instapniveau te krijgen, wil ik je wijzen op een enorme verzameling bronnen die ik heb samengesteld om je te helpen.
Ik zou aanraden Sean Allen's Swift-interviewtipsvideo's - hij heeft een hele afspeellijst voor hen waar je individuele discussies kunt doorlopen, zoals klassen versus structs, functioneel programmeren, foutafhandeling en meer. Geen van de video's is bijzonder lang, maar ze zijn allemaal ontworpen om je de vaardigheden te bieden die je nodig hebt om goed te presteren in een interviewsituatie.
Waar nu?
Oké, dus ik heb de kern- en uitbreidingsvaardigheden besproken die je nodig hebt, veelvoorkomende leerfouten, cursussen die je kunt volgen, hoe je contact kunt maken met de iOS-gemeenschap en hoe je je kunt voorbereiden op je sollicitatiegesprek - dat is veel om te bespreken, en ik hoop dat het nuttig is geweest.
Verder hoop ik dat ik heb aangetoond hoeveel informatie gratis beschikbaar is.
Ja, de verleiding om honderd dollar of meer uit te geven aan een cursus is groot, maar ontspan - ga eerst aan de slag, zoek wat momentum en zoek ook iemand die Swift lesgeeft op een manier die voor jou werkt. Als je op een goede plek bent en je er klaar voor voelt, ga je gang en geef wat geld uit als je wilt.
Beste wensen op uw reis!
Alstublieft laat een nuttig geef commentaar met je mening, deel dit dan op je Facebook-groep (en) die dit nuttig zouden vinden en laten we samen de vruchten plukken. Bedankt voor het delen en aardig zijn!
Disclosure: Deze pagina kan links bevatten naar externe sites voor producten die we geweldig vinden en die we van harte aanbevelen. Als u producten koopt die we aanbevelen, kunnen we een verwijzingsvergoeding verdienen. Dergelijke vergoedingen hebben geen invloed op onze aanbevelingen en we accepteren geen betalingen voor positieve beoordelingen.