- types: enum, struct, Int
- enum and associated values
- when to use struct vs. class
- naming conventions
resource:
- 100 days HackingWithSwift
- Apple Swift books
- UIView vs UIViewController
- view controller lifecycle
- UITableView, UICollectionView, Delegate pattern and DiffableDataSource
- storing data locally with UserDefaults and in the file system with the FileManager
- relational database like Core Data or realm
- user authentication with e.g. Firebase
- Codable protocol
- REST APIs, URLSession
- How to use the Apple Developer Documenation Youtube tutorial
- Read about UI and UX design - Human interface guidelines
- version control and Git
- protocol, dependency injection
- best practices
resource:
- Swift Programming language guide
Be honest and show your main relevant working experience and education.
Coding Foundry Youtube tutorial: What you NEED to include in your developer portfolio
Build a portfolio website with Wordpress and Elementor (Youtube tutorial) + hositing ($70 for 4 years)
Start by looking at job boards and read throuhg the requirements. Look for jobs that you want. If you want to become a game developer, the requirements are very different than for a E-commerce app development. Here is an example of what you might see:
- proficiency with Swift or Objective C, and Cocoa Touch
- Xcode
- Auto Layout
- Familiarity with RESTful APIs to connect iOS applications to back-end services
- cloud message APIs and push notifications
- App architecture design
- Design patterns, MVC, MVVM, Coordinator pattern
- ARKit
- user authentication and user roles
- Firebase, realm, or Core Data
- Sound knowledge of app user experience
- SwiftUI
- version control and Git
- unit testing
- Code reviews
- Command line
- Agile mindset
- Continuous integration
- clean code
- UML
- Sketch
- Jira, Conflunce, Bitbucket or similar
Make a list of the most common required skills and highligh them by priority. If you don't know a term, look it up. This should also answer questions like "should I learn SwiftUI or UIKit?" - During the time of writing, the majority of jobs required UIKit. Mostly SwiftUI was a nice to have skill. Some job ads don't even mention UIKit because it is so essential. You can see they ask for UIKit when they include e.g. Auto Layout or Interface builder knowledge.
With your application you should try to demonstrate that you have all or most of the required skills. The hiring team is going to look for these skills in your application. The portfolio projects should demonstrate these skills sets. Make it easier for the hiring team by mentioning what skills you used for your projects. It is not about making a pretty UI, it is a demo of you coding skills. That being said, making a great looking UI is also a skill you will need and thus put some work in the UI part too.
Demonstrating the following skills
- SwiftUI
- MVVM
- unit testing
- RESTful APIs to connect iOS applications to back-end services
- JSON Decoding
- error handling
- Grand Central Dispatch GCD
This tutorial series is a good example for this kind of portfolio project https://youtu.be/ggEcSzPbVr4
Productivity app / BugTracker / Trello
Demonstrating the following skills
- Firebase login screens,
- user roles and access (admin vs. basic user)
- write a good Github readme: short descriptions of app idea, images, gifs
- Instruction for installations - API keys, pods, Firebase setup
- Include links to API documentation
- Explain why and for what you use third party libraries
- list code features: (iOS dev job requirements) like: Core Data, Core Animation, UIKit or SwiftUI, UISearchController, MVVM, Combine, unit tests, localisation, Core ML
- Good looking UI
- Conform to human interface guideline
- project should build
- project should not include bugs or crash (for most common actions)
- Bonus: nice loading animations, empty state placeholders, error feedback for user
- Clean code
- Simple (don’t use nested view models with unclear tasks)
- Readable: naming conventions for class, functions and variables
- DRY, modular code
- Don’t keep uncommented code - clutter
- Don’t write a lot of comments - clutter - use better, more descriptive names
- no typing mistakes,
- consistent project structure (folder naming)