Your goal is to build an app or set of apps that incorporate the following features:
-
Interaction with an external API
- Model serialization and deserialization from JSON
- Demonstrable understanding of asynchronous code, including error handling
- Bonus for: requests that are not just GET (Other CRUD?)
- Bonus for: Authenticated requests (oAuth?)
-
UITableView
- Should follow pattern of referencing a model collection to build UITableViewCells
- Good understanding of delegation
- Good understanding of dequeuing pattern of UITableViewCells
- Bonus for: dynamic UITableViewCell height
- Double bonus: with AutoLayout
- Bonus for: Multiple types of cells in UITableView
-
UI
- Views built in InterfaceBuilder with AutoLayout
- Understanding of Target/Action, IBOutlet wiring
- Storyboards with Segues
- Views should look good on all iPhone sizes.
- Bonus for: supporting multiple device orientations
- Gratuitous use of UIScrollView
- Programmatically modify an AutoLayout constraint
- UIView animations with AutoLayout
- UINavigationController
- UITabBarController
- Views built in InterfaceBuilder with AutoLayout
-
Map work
- Use MKMapView with MKAnnotations
- Understand CoreLocation with permissions
-
Bonus for: use of Push Notifications
-
Common iOS Patterns
- create & implement; a category, a protocol, & a delegate pattern
- appropriate use of constants (private & public/extern)
- understanding/implementation of NSNotificationCenter
- understanding/implementation of NSUserDefaults
-
General
- Understand value types vs. reference types
-
Best Practices
- Progress should be tracked on a card wall (Trello is commonly used)
- Spend time adding estimates to cards
- Sensible use of dependency management
- BDD tested code, more coverage = better
- Commits are done in chunks of work and are not grab bag code changes
- Pull Requests are as small as possible, adding or changing one cohesive thing
- Good, descriptive information in Pull Request body
- Open to feedback on Pull Requests during code reviews from coworkers
- Try to solicit feedback from a variety of coworkers for code reviews
- Bonus for: use of animated images in PR to demo changes Licecap
- In general, keeping UIViewControllers as small as possible
- Default in iOS is to dump code in VCs which is an anti-pattern
- Single Responsibility Principle
- Bonus for: Writing this app while using our CI
- Progress should be tracked on a card wall (Trello is commonly used)
Goal is to cover most of these within a 4-6 week period
Must demo progress on Fridays at 4:30pm